← Blog
// BLUE TEAM · DETECCIÓN

De un log a una detección que funciona en cualquier SIEM

Publicado el 12 ago 2026 · 8 min de lectura
Blue TeamDetecciónSigmaSIEM

Durante una investigación encuentras el patrón: un 4625 seguido de un 4624 desde la misma IP, o un PowerShell con -enc. Bien. Ahora conviértelo en una detección permanente. Y aquí llega el problema de siempre: la escribes en KQL y solo vale para Sentinel; tu compañero la necesita en SPL para Splunk; el de al lado, en Elastic. Tres veces el mismo trabajo, tres sitios donde se desincroniza.

Sigma: el «YAML de las detecciones»

Sigma es un formato abierto y neutral para reglas de detección. Escribes la lógica una vez, en YAML legible, y un conversor la traduce al lenguaje de tu SIEM: KQL, SPL, Lucene/EQL de Elastic, Wazuh… Es a las detecciones lo que las reglas YARA son a los ficheros: portable y compartible. Por eso las publican vendors, CERTs y proyectos como el repo oficial de reglas Sigma.

Anatomía de una regla

Ficha de detección · Sigma Ilustrativa · sin prueba automática

Muchos fallos de inicio de sesión seguidos de un éxito

Problema
Adivinar contraseñas deja una racha de 4625 y, si el atacante acierta, un 4624 de la misma cuenta.
Objetivo
Avisar cuando una cuenta acumula fallos desde una IP y después entra desde ella.
Telemetría
Windows Security, eventos 4625 (fallo) y 4624 (éxito).
Requisitos
Auditoría «Audit Logon» con Éxito y Error, y un conversor o SIEM que admita reglas de correlación de Sigma.
ATT&CK
T1110.001 · Password Guessing
Nivel
Medio
title: Inicio de sesión fallido
name: fallo_login
status: experimental
logsource:
  product: windows
  service: security
detection:
  selection:
    EventID: 4625
  condition: selection
---
title: Inicio de sesión correcto
name: exito_login
status: experimental
logsource:
  product: windows
  service: security
detection:
  selection:
    EventID: 4624
  condition: selection
---
title: Racha de fallos de inicio de sesión
name: muchos_fallos
status: experimental
correlation:
  type: event_count
  rules:
    - fallo_login
  group-by:
    - TargetUserName
    - IpAddress
  timespan: 10m
  condition:
    gte: 5
---
title: Fallos seguidos de éxito (posible fuerza bruta)
status: experimental
correlation:
  type: temporal_ordered
  rules:
    - muchos_fallos
    - exito_login
  group-by:
    - TargetUserName
    - IpAddress
  timespan: 1h
falsepositives:
  - VPN corporativa con reintentos legítimos
level: medium
tags:
  - attack.credential-access
  - attack.t1110.001

Cómo funciona. Dos reglas base (fallo y éxito) y dos correlaciones: event_count exige 5 fallos o más de la misma cuenta e IP en 10 minutos, y temporal_ordered exige que después llegue un éxito en menos de 1 hora. Una sola condition no puede decir «primero esto, luego aquello»: se evalúa sobre cada evento por separado.

Falsos positivos conocidos

  • VPN o aplicaciones con una contraseña caducada que reintentan solas.
  • Una persona que olvida su contraseña y acaba acertando.

Límites

  • No ve el password spraying (pocas pruebas en muchas cuentas): para eso hay que agrupar solo por IP.
  • Los umbrales (5 fallos, 10 minutos, 1 hora) son un punto de partida: ajústalos a tu entorno.
  • No todos los conversores de Sigma admiten correlaciones.

Fuentes: SigmaHQ — Sigma Correlation Rules Specification

Sin prueba automática: el banco evalúa los eventos de uno en uno: no ejecuta correlaciones. Revisada: 23 de octubre de 2026. Prueba tu variante en el banco →

Las piezas que importan: logsource (de dónde salen los eventos), detection con una o varias selecciones y una condition que las combina, el level (severidad) y —clave— falsepositives y los tags de MITRE ATT&CK, que enganchan la regla a una técnica concreta. Cuando hay que enlazar varios eventos, entra en juego correlation.

Una corrección. La primera versión de este artículo usaba una sola regla con condition: fallo and exito. Esa regla nunca salta: la condition se evalúa sobre cada evento por separado, y ningún evento es a la vez un 4625 y un 4624. «Primero esto, luego aquello» es una correlación: event_count cuenta los fallos y temporal_ordered exige que el éxito llegue después.

Del log a la regla, paso a paso

  1. Aísla el evento en el log real: qué campos lo identifican (EventID, imagen del proceso, línea de comandos, puerto…).
  2. Escribe la selección con esos campos. Sé específico: Image|endswith: '\powershell.exe' y CommandLine|contains: '-enc' es mucho mejor que buscar solo «powershell».
  3. Define la condición (una selección, varias con and/or, o exclusiones con not filtro).
  4. Mapea a ATT&CK y documenta los falsos positivos que ya conoces.
  5. Convierte y prueba en tu SIEM antes de darla por buena.
⚒️ Para hacer justo esto sin montarte el toolchain de sigma-cli, el Sigma Forge te lleva de un log real a la regla Sigma y de ahí a KQL, SPL, Lucene, EQL y Wazuh — pega el evento, ajusta la selección y copia la consulta para tu plataforma. Todo en el navegador.

El enemigo real: los falsos positivos

Una regla que dispara cien veces al día no es una detección, es ruido que el analista aprende a ignorar —y ahí es donde se cuela el ataque de verdad—. Selecciones precisas, exclusiones de lo legítimo conocido, y un level honesto separan una regla útil de una que acaba silenciada.

⚠️ Una detección sin caso de prueba es una hipótesis, no un control. Antes de promocionarla, genera el evento (o busca uno histórico) y confirma que la regla lo caza —y que no caza medio SOC.

Checklist

Escribir en Sigma no es una capa más de trabajo: es escribir una vez en lugar de tres, y dejar la detección donde cualquiera —tú incluido dentro de seis meses— pueda leerla y llevarla a su plataforma.

Comparte: LinkedIn X
Sergio Belmonte Morales
Sergio Belmonte Morales
Analista de Ciberseguridad · SOC · Especialista en Sentinel/KQL