Parte: 17 — Profundización para certificaciones · Fuente: MITRE ATT&CK · SANS SEC555 / BTL1 SOC · SigmaHQ ⏱️ Duración estimada: 150 min · Nivel: Experto
Convertir la detección de amenazas en una disciplina de ingeniería: tratar las reglas como código (detection-as-code), gestionar su ciclo de vida completo, validarlas con emulación de adversario (Atomic Red Team), reducir sistemáticamente los falsos positivos y medir su eficacia con métricas objetivas. Es el núcleo del trabajo de un ingeniero de detección moderno y del módulo de operaciones de seguridad de CySA+ y SIEM de BTL1.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Detection-as-code | Reglas versionadas, revisadas y testeadas como cualquier software |
| 2 | Ciclo de vida de una detección | Evita el "cementerio de reglas" que nadie mantiene |
| 3 | Sigma como formato portable | Escribes una vez y despliegas en cualquier SIEM |
| 4 | Traducción a EQL/KQL/SPL | La regla debe correr donde vive la telemetría |
| 5 | Validación con Atomic Red Team | Sin ejecutar la técnica no sabes si la regla dispara |
| 6 | Reducción de falsos positivos | Un SOC ahogado en ruido es un SOC ciego |
| 7 | Métricas de detección | Lo que no se mide no se mejora; guía la priorización |
| 8 | Mapeo de cobertura ATT&CK | Revela puntos ciegos frente al adversario |
sigma-cli/pySigma.⚠️ Laboratorio aislado obligatorio. Atomic Red Team ejecuta técnicas ofensivas reales (creación de tareas, volcado de credenciales simulado, etc.). Córrelo únicamente en una VM de laboratorio con snapshot, aislada de la red de producción y con autorización explícita. Nunca ejecutes pruebas atómicas en equipos productivos.
sigma-cli: para escribir y traducir reglas.Invoke-AtomicRedTeam en PowerShell) para emular técnicas.Instalación mínima de Atomic Red Team en la VM de laboratorio:
IEX (IWR 'https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install-atomicredteam.ps1' -UseBasicParsing)
Install-AtomicRedTeam -getAtomics
Desarrollaremos y validaremos una detección para T1053.005 (tarea programada como persistencia) de punta a punta.
schtasks /create para persistir; deberíamos verlo en Sysmon Event ID 1 (creación de proceso) o Event ID 4698 del log de seguridad."t1053_005_schtasks.yml):yaml
title: Persistencia via schtasks.exe
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\schtasks.exe'
CommandLine|contains|all:
- '/create'
- '/sc'
condition: selection
falsepositives:
- Software de despliegue y administración legítimos
level: medium
tags:
- attack.persistence
- attack.t1053.005
bash
git add detections/t1053_005_schtasks.yml
git commit -m "feat(detección): T1053.005 schtasks persistencia"
Añade en CI una validación de sintaxis con sigma check para que ninguna regla rota entre a la rama principal.
4. Traduce la regla al SIEM de destino:
bash
sigma convert -t esql detections/t1053_005_schtasks.yml # Elastic
# o
sigma convert -t splunk detections/t1053_005_schtasks.yml # Splunk SPL
powershell
Invoke-AtomicTest T1053.005 -TestNumbers 1
powershell
Invoke-AtomicTest T1053.005 -TestNumbers 1 -Cleanup
SCCM) crea tareas legítimas, añade una exclusión precisa:yaml
filter:
ParentImage|endswith: '\ccmexec.exe'
condition: selection and not filter
Mide la tasa de FP antes y después del afinado. 10. Registra métricas y cobertura. Anota MTTD de la prueba, tasa de FP y marca la técnica como "cubierta y validada" en ATT&CK Navigator.
-enc) y tradúcela a EQL y SPL.sigma check sobre el directorio de detecciones en cada commit.Se te pide entregar la detección de T1547.001 (persistencia por clave Run del registro) lista para producción. Criterio de aceptación: entregas (a) una regla Sigma versionada en Git que pasa sigma check, (b) evidencia de que dispara al ejecutar la prueba atómica correspondiente de Atomic Red Team (captura de la alerta con su timestamp), (c) al menos una exclusión de FP justificada con datos, y (d) la técnica marcada como validada en ATT&CK Navigator. El reto se logra si otro ingeniero puede clonar el repo, desplegar la regla y reproducir la validación.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| La regla no dispara pese a ejecutar la técnica | La telemetría no captura el evento; verifica que Sysmon/EDR registra el campo usado en la regla |
sigma convert falla o produce campos vacíos |
Falta el pipeline de mapeo de campos del backend; especifica el pipeline correcto (-p sysmon, -p ecs_windows) |
| Avalancha de falsos positivos tras desplegar | Regla demasiado amplia; añade condiciones de contexto (proceso padre, usuario, ruta) en vez de bajar el nivel |
| La regla se "rompe" tras un cambio y nadie lo nota | Falta CI; integra sigma check y pruebas de regresión en el pipeline |
| Cobertura ATT&CK aparentemente alta pero sin detecciones reales | Se contó "tener reglas" en vez de "reglas validadas"; solo marca cobertura tras validar con Atomic Red Team |
| Atomic test deja artefactos de persistencia en la VM | Olvidaste -Cleanup; ejecútalo siempre y restaura el snapshot |
❓ ¿Por qué escribir en Sigma y no directo en el lenguaje del SIEM? Sigma es portable: escribes la lógica una vez y la traduces a EQL, SPL o KQL. Evita quedar atado a un proveedor y facilita compartir reglas con la comunidad (SigmaHQ).
❓ ¿Detection-as-code no es sobreingeniería para un SOC pequeño? No. Aun con pocas reglas, versionarlas en Git y validar su sintaxis en CI evita cambios silenciosos y facilita revertir una regla que rompió el flujo de alertas.
❓ ¿Cómo sé que una detección realmente funciona? Ejecutando la técnica que debe atrapar. Atomic Red Team proporciona pruebas atómicas por técnica ATT&CK; si tras ejecutarla no hay alerta, la detección no sirve todavía.
❓ ¿Bajar el nivel de severidad reduce los falsos positivos? No: solo esconde el problema. Los FP se reducen añadiendo contexto (proceso padre, usuario, ruta) y exclusiones precisas y medidas, no cambiando la severidad.
❓ ¿Qué métrica importa más? Depende del objetivo, pero MTTD (rapidez de detección), tasa de FP (calidad) y cobertura ATT&CK validada (alcance) juntas dan una imagen equilibrada. Una sola aislada engaña.
Clase 326 — Análisis de malware para respuesta a incidentes
Clase 328 — Gestión de riesgos cuantitativa y continuidad avanzada