SPL para SOC - Guia Practica
Guia de referencia rápida de SPL (Search Processing Language) para operaciones SOC.
Busquedas Basicas
# Todos los eventos de un index
index=_internal | head 10
# Contar eventos por sourcetype
index=* | stats count by sourcetype
# Contar eventos por host
index=* | stats count by hostFiltros (Investigacion de Incidentes)
# Buscar IP sospechosa
index=* 192.168.1.100
# Buscar fallos de login
index=* "failed" OR "failure" OR "denied"
# Buscar accesos de un usuario
index=* user=admin
# Buscar errores del sistema
index=* log_level=ERROR
# Buscar multiples IOC
index=* (src_ip="10.0.0.5" OR dest_ip="10.0.0.5") OR (user="admin" AND "failed")Stats - Estadisticas
# Contar por campo
index=* | stats count by sourcetype
# Top 10 IPs
index=* | top limit=10 src_ip
# Contar fallos por usuario
index=* "failed password" | stats count by user
# Agrupar por hora
index=* | bin _time span=1h | stats count by _time
# Media, max, min de un campo numerico
index=* | stats avg(bytes) max(bytes) min(bytes) by host
# Valores unicos
index=* | stats dc(src_ip) as unique_ips by hostComandos Esenciales para SOC
| Comando | Funcion | Ejemplo SOC |
|---|---|---|
stats count by | Agrupa y cuenta | Top IPs, usuarios, errores |
top | Los mas frecuentes | Top 10 IPs atacantes |
rare | Los menos frecuentes | Eventos anomalos |
timechart | Serie temporal | Grafico de ataques por hora |
where | Filtrar resultados | Solo eventos con count > 100 |
eval | Crear campos calculados | Clasificar severidad |
lookup | Enriquecer con tablas | Verificar IP contra lista negra |
join | Combinar busquedas | Cruzar auth con firewall |
rex | Extraer campos con regex | Parsear logs custom |
table | Formatear salida | Reportes limpios |
sort | Ordenar resultados | Los mas recientes primero |
dedup | Eliminar duplicados | Eventos unicos |
timechart - Analisis Temporal
# Eventos por hora
index=* | timechart span=1h count
# Fallos de login por dia
index=* "failed" | timechart span=1d count by user
# Trafico por IP en el tiempo
index=* | timechart span=1h count by src_ipEjercicios Practicos
1. Ver sourcetypes disponibles
index=* | stats count by sourcetype2. Detectar picos de actividad
index=_internal | timechart span=1h count3. Errores por componente
index=_internal log_level=ERROR | stats count by component4. Top hosts
index=* | top limit=5 host5. Patrones sospechosos
index=* "failed" OR "error" OR "denied" | stats count by sourcetype6. Deteccion de brute force
index=security "failed password"
| stats count as attempts by src_ip, user
| where attempts > 5
| sort -attempts7. Horarios inusuales de acceso
index=security "login successful"
| eval hour=tonumber(strftime(_time, "%H"))
| where hour < 6 OR hour > 22
| table _time, user, src_ip, hourAlertas para SOC
Brute Force Detection
index=security "failed password"
| stats count by src_ip
| where count > 10- Trigger: cuando count > 10
- Accion: email al equipo SOC
Multiple Failed Logins por Usuario
index=security "failed" user=*
| stats count as failures by user
| where failures > 5Acceso desde IP Nueva
index=security "login successful"
| stats earliest(_time) as first_seen by src_ip
| where first_seen > relative_time(now(), "-1d")Dashboards para SOC
Panel 1: Timeline de Eventos
index=* | timechart span=1h countPanel 2: Top IPs Atacantes
index=* "failed" OR "denied" | top limit=10 src_ipPanel 3: Errores por Tipo
index=* log_level=ERROR | top limit=10 componentPanel 4: Usuarios con Mas Fallos
index=* "failed" | top limit=10 userEstructura de Datos en Splunk
index (contenedor principal)
└── sourcetype (tipo de dato: syslog, access_combined, etc.)
└── source (origen: /var/log/auth.log, etc.)
└── host (maquina: servidor-web-01)
└── _time (timestamp del evento)
└── _raw (linea cruda del log)
└── campos extraidos (src_ip, user, action, etc.)
Terminologia SOC con Splunk
| Termino | Significado |
|---|---|
| Index | Base de datos donde Splunk almacena eventos |
| Sourcetype | Tipo de dato (define como parsear) |
| Source | Origen del dato (archivo, API, etc.) |
| Host | Maquina que genera los eventos |
| SPL | Search Processing Language |
| SIEM | Security Information and Event Management |
| IOC | Indicator of Compromise (IP, hash, dominio) |
| Alert | Busqueda que se ejecuta automaticamente y notifica |
| Dashboard | Panel visual con multiples busquedas |
| Saved Search | Busqueda guardada para reuso |
Referencia
- Splunk SPL Documentation
- Splunk BOTS - Boss of the SOC (ejercicios practicos)
- CySA+ dominio: Security Operations and Monitoring
SPL para SOC - Guia Práctica Actualizado: 2026-06-19