Communitygithub.com

Creación de Reglas de Detección con Sigma

Crea reglas de detección agnósticas al proveedor utilizando el formato de reglas Sigma para SIEM.

¿Qué es Creación de Reglas de Detección con Sigma?

Este skill está diseñado para ingenieros de SOC y analistas de seguridad que necesitan crear reglas de detección portátiles entre múltiples plataformas SIEM, estandarizando el proceso de detección como código. Sigma es un formato de reglas basado en YAML que permite describir lógica de detección de forma agnóstica al proveedor y luego convertirla a consultas específicas de SIEM como Splunk SPL, Elastic EQL o Microsoft Sentinel KQL utilizando la biblioteca pySigma. El skill cubre todo el flujo de trabajo: desde la definición de la lógica de detección basada en inteligencia de amenazas y técnicas MITRE ATT&CK, pasando por la validación de reglas, conversión a múltiples backends, mapeo de cobertura, pruebas con datos de muestra y despliegue en producción. Incluye ejemplos prácticos como detección de Mimikatz, integración con CI/CD mediante GitHub Actions, y generación de capas de MITRE ATT&CK Navigator para visualizar la cobertura de detección del equipo. Es compatible con herramientas como SigmaHQ, pySigma, ATT&CK Navigator y Uncoder.IO, facilitando la adopción de prácticas de detección como código en pipelines de CI/CD.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/building-detection-rules-with-sigma

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Creación de Reglas de Detección con Sigma?

Cuándo Usarlo

Utiliza este skill cuando:

  • Los ingenieros de SOC necesitan crear reglas de detección portátiles entre múltiples plataformas SIEM
  • Los informes de inteligencia de amenazas describen TTPs que requieren nueva cobertura de detección
  • Las reglas existentes específicas de un proveedor necesitan estandarizarse en un formato compartible
  • El equipo adopta Sigma como estándar de detección como código en pipelines CI/CD

No lo uses para detección en tiempo real por streaming (Sigma es para búsquedas por lotes o programadas) ni cuando el SIEM de destino tenga funciones de detección nativas que Sigma no pueda expresar (por ejemplo, la puntuación de riesgo RBA de Splunk).

Prerrequisitos

  • Python 3.8+ con pySigma y el backend apropiado (pySigma-backend-splunk, pySigma-backend-elasticsearch, pySigma-backend-microsoft365defender)
  • Repositorio de reglas Sigma clonado: git clone https://github.com/SigmaHQ/sigma.git
  • Conocimiento del framework MITRE ATT&CK para el mapeo de técnicas
  • Comprensión de las asignaciones de campos de fuentes de registro del SIEM de destino

Flujo de Trabajo

Paso 1: Definir la Lógica de Detección a partir de Inteligencia de Amenazas

Comienza con un informe de amenazas o una técnica ATT&CK. Ejemplo: detección de robo de credenciales con Mimikatz (T1003.001 — Memoria LSASS):

title: Detección de Robo de Credenciales con Mimikatz mediante Acceso a LSASS
id: 0d894093-71bc-43c3-8d63-bf520e73a7c5
status: stable
level: high
description: Detecta procesos que acceden a la memoria de lsass.exe, indicativo de herramientas de robo de credenciales como Mimikatz
references:
    - https://attack.mitre.org/techniques/T1003/001/
    - https://github.com/gentilkiwi/mimikatz
author: mahipal
date: 2024/03/15
modified: 2024/03/15
tags:
    - attack.credential_access
    - attack.t1003.001
logsource:
    category: process_access
    product: windows
detection:
    selection:
        TargetImage|endswith: '\lsass.exe'
        GrantedAccess|contains:
            - '0x1010'
            - '0x1038'
            - '0x1fffff'
            - '0x40'
    filter_main_svchost:
        SourceImage|endswith: '\svchost.exe'
    filter_main_csrss:
        SourceImage|endswith: '\csrss.exe'
    filter_main_wininit:
        SourceImage|endswith: '\wininit.exe'
    condition: selection and not 1 of filter_main_*
falsepositives:
    - Herramientas de seguridad legítimas accediendo a LSASS
    - Escaneo de Windows Defender
    - Sensor de CrowdStrike Falcon

Paso 2: Validar la Sintaxis de la Regla Sigma

Usa sigma check para validar la regla:

# Instalar pySigma y validadores
pip install pySigma pySigma-validators-sigmaHQ

# Validar regla
sigma check rule.yml

Alternativamente, valida con Python:

from sigma.rule import SigmaRule
from sigma.validators.core import SigmaValidator

rule = SigmaRule.from_yaml(open("rule.yml").read())
validator = SigmaValidator()
issues = validator.validate_rule(rule)
for issue in issues:
    print(f"{issue.severity}: {issue.message}")

Paso 3: Convertir a Consultas del SIEM de Destino

Convertir a Splunk SPL:

from sigma.rule import SigmaRule
from sigma.backends.splunk import SplunkBackend
from sigma.pipelines.splunk import splunk_windows_pipeline

pipeline = splunk_windows_pipeline()
backend = SplunkBackend(pipeline)

rule = SigmaRule.from_yaml(open("rule.yml").read())
splunk_query = backend.convert_rule(rule)
print(splunk_query[0])

Salida:

TargetImage="*\\lsass.exe" (GrantedAccess="*0x1010*" OR GrantedAccess="*0x1038*"
OR GrantedAccess="*0x1fffff*" OR GrantedAccess="*0x40*")
NOT (SourceImage="*\\svchost.exe") NOT (SourceImage="*\\csrss.exe")
NOT (SourceImage="*\\wininit.exe")

Convertir a Elastic Query (Lucene):

from sigma.backends.elasticsearch import LuceneBackend
from sigma.pipelines.elasticsearch import ecs_windows_pipeline

pipeline = ecs_windows_pipeline()
backend = LuceneBackend(pipeline)
elastic_query = backend.convert_rule(rule)
print(elastic_query[0])

Convertir a Microsoft Sentinel KQL:

from sigma.backends.microsoft365defender import Microsoft365DefenderBackend

backend = Microsoft365DefenderBackend()
kql_query = backend.convert_rule(rule)
print(kql_query[0])

Paso 4: Mapear a MITRE ATT&CK y Agregar Metadatos de Cobertura

Etiqueta cada regla con IDs de técnicas ATT&CK en el campo tags:

tags:
    - attack.credential_access        # Táctica
    - attack.t1003.001                # Sub-técnica
    - attack.t1003                    # Técnica padre

Rastrea la cobertura de detección usando el ATT&CK Navigator:

import json

# Generar capa de ATT&CK Navigator a partir de reglas Sigma
layer = {
    "name": "Cobertura de Detección del SOC",
    "versions": {"attack": "14", "navigator": "4.9", "layer": "4.5"},
    "domain": "enterprise-attack",
    "techniques": []
}

# Analizar directorio de reglas Sigma para etiquetas de técnicas
import os
from sigma.rule import SigmaRule

for root, dirs, files in os.walk("sigma/rules/windows/"):
    for f in files:
        if f.endswith(".yml"):
            rule = SigmaRule.from_yaml(open(os.path.join(root, f)).read())
            for tag in rule.tags:
                if str(tag).startswith("attack.t"):
                    technique_id = str(tag).replace("attack.", "").upper()
                    layer["techniques"].append({
                        "techniqueID": technique_id,
                        "color": "#31a354",
                        "score": 1
                    })

with open("coverage_layer.json", "w") as f:
    json.dump(layer, f, indent=2)

Paso 5: Probar la Regla Contra Datos de Muestra

Crea datos de prueba y valida que la regla detecte los eventos esperados:

# Usar el framework de prueba sigma
sigma test rule.yml --target splunk --pipeline splunk_windows

# O probar manualmente en Splunk con datos de muestra
# Subir registro Sysmon process_access con firma conocida de Mimikatz

Valida la tasa de falsos positivos ejecutando contra 7 días de datos de producción en una búsqueda guardada sin alertas.

Paso 6: Desplegar en el SIEM de Producción

Despliega la consulta convertida como una búsqueda programada o regla de correlación:

Búsqueda de Correlación Splunk ES:

| tstats summariesonly=true count from datamodel=Endpoint.Processes
  where Processes.process_name="*\\lsass.exe"
  by Processes.src, Processes.user, Processes.process_name, Processes.parent_process_name
| `drop_dm_object_name(Processes)`
| where count > 0

Regla de Elastic Security (formato TOML):

[rule]
name = "Acceso a Memoria LSASS - Robo de Credenciales"
description = "Detecta acceso sospechoso a la memoria del proceso LSASS"
risk_score = 73
severity = "high"
type = "eql"
query = '''
process where event.action == "access" and
  process.name == "lsass.exe" and
  not process.executable : ("*\\svchost.exe", "*\\csrss.exe")
'''

[rule.threat]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1003"
name = "Robo de Credenciales del SO"

Paso 7: Control de Versiones e Integración CI/CD

Almacena las reglas en Git con pruebas automatizadas:

# .github/workflows/sigma-ci.yml
name: Sigma CI de Reglas
on: [push, pull_request]
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - run: pip install pySigma pySigma-validators-sigmaHQ
      - run: sigma check rules/
      - run: sigma convert -t splunk -p splunk_windows rules/ > /dev/null

Conceptos Clave

TérminoDefinición
SigmaFormato de reglas de detección agnóstico al proveedor (basado en YAML) que se compila a consultas específicas de SIEM mediante backends
pySigmaBiblioteca Python que reemplaza al sigmac heredado para conversión, validación y procesamiento de pipelines de reglas
BackendPlugin de pySigma que traduce la lógica de detección Sigma al lenguaje de consulta de la plataforma de destino (SPL, KQL, Lucene)
PipelineConfiguración de mapeo de campos que traduce nombres de campo genéricos de Sigma a nombres de campo específicos del SIEM
LogsourceSección de la regla Sigma que define la categoría (process_creation, network_connection) y el producto (windows, linux) de los datos objetivo
Detección como CódigoPráctica de gestionar reglas de detección en control de versiones con pruebas CI/CD y despliegue automatizado

Herramientas y Sistemas

  • SigmaHQ: Repositorio oficial de reglas Sigma con más de 3000 reglas de detección mantenidas por la comunidad en GitHub
  • pySigma: Framework de procesamiento de reglas Sigma basado en Python con backends y pipelines modulares
  • ATT&CK Navigator: Herramienta de MITRE para visualizar la cobertura de detección mapeada a técnicas ATT&CK
  • Uncoder.IO: Conversor de reglas Sigma basado en web que soporta más de 30 plataformas SIEM para traducción rápida

Escenarios Comunes

  • Detección de Nuevo CVE: Escribir regla Sigma para indicadores de explotación (ej. patrones de búsqueda JNDI de Log4Shell en registros web)
  • Promoción de Regla de Cacería: Convertir una consulta de cacería ad-hoc de Splunk en una regla Sigma para detección automatizada continua
  • Migración Multi-SIEM: Convertir 500+ búsquedas de correlación de Splunk a Sigma para migrar a Elastic Security
  • Resultado de Purple Team: Convertir hallazgos del equipo rojo en reglas Sigma para cobertura defensiva inmediata
  • Operacionalización de Inteligencia de Amenazas: Transformar informes de amenazas basados en IOCs en reglas Sigma de comportamiento

Formato de Salida

INFORME DE DESPLIEGUE DE REGLA SIGMA
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ID de Regla:    0d894093-71bc-43c3-8d63-bf520e73a7c5
Título:         Detección de Robo de Credenciales con Mimikatz mediante Acceso a LSASS
ATT&CK:         T1003.001 - Memoria LSASS
Severidad:      Alta
Estado:         Desplegado en Producción

Conversiones:
  Splunk SPL:    ÉXITO — Búsqueda guardada "sigma_lsass_access" creada
  Elastic EQL:   ÉXITO — Regla de detección ID elastic-0d894093 habilitada
  Sentinel KQL:  ÉXITO — Regla de analítica desplegada mediante plantilla ARM

Pruebas:
  Verdaderos Positivos:    4/4 casos de prueba coincidieron
  Falsos Positivos:       2 en prueba retrospectiva de 7 días (caso borde svchost — filtro agregado)
  Rendimiento:             Ejecución promedio 3.2s en 50M eventos/día

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados