Communitygithub.com

construção-de-regras-de-detecção-com-sigma

Constrói regras de detecção independentes de fornecedor usando o formato Sigma para portabilidade entre plataformas SIEM.

O que é construção-de-regras-de-detecção-com-sigma?

Este guia de habilidade ensina engenheiros de SOC a criar regras de detecção portáteis usando o formato Sigma, que é independente de fornecedor e baseado em YAML. As regras Sigma podem ser convertidas em consultas nativas para plataformas como Splunk (SPL), Elasticsearch (Lucene) e Microsoft Sentinel (KQL) através de backends pySigma. O fluxo de trabalho inclui a definição de lógica de detecção a partir de relatórios de inteligência de ameaças, validação da sintaxe, mapeamento para técnicas MITRE ATT&CK, testes com dados de amostra e implantação em produção através de CI/CD. A habilidade enfatiza práticas de 'detecção como código', com versionamento em Git e automação de validação, suportando cenários como detecção de novas CVEs, migração multi-SIEM e operacionalização de inteligência de ameaças.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Construção de Regras de Detecção com Sigma

Quando Usar

Use esta habilidade quando:

  • Engenheiros de SOC precisam criar regras de detecção portáteis entre múltiplas plataformas SIEM
  • Relatórios de inteligência de ameaças descrevem TTPs que exigem nova cobertura de detecção
  • Regras específicas de fornecedor existentes precisam de padronização em um formato compartilhável
  • A equipe adota Sigma como padrão de detecção como código em pipelines CI/CD

Não use para detecção em streaming em tempo real (Sigma é para buscas em lote/agendadas) ou quando o SIEM de destino possui funcionalidades de detecção nativas que Sigma não consegue expressar (ex.: pontuação de risco RBA do Splunk).

Pré-requisitos

  • Python 3.8+ com pySigma e backend apropriado (pySigma-backend-splunk, pySigma-backend-elasticsearch, pySigma-backend-microsoft365defender)
  • Repositório de regras Sigma clonado: git clone https://github.com/SigmaHQ/sigma.git
  • Conhecimento do framework MITRE ATT&CK para mapeamento de técnicas
  • Compreensão dos mapeamentos de campos de origem de log do SIEM de destino

Fluxo de Trabalho

Passo 1: Definir Lógica de Detecção a partir de Inteligência de Ameaças

Comece com um relatório de ameaça ou técnica ATT&CK. Exemplo: detecção de roubo de credenciais Mimikatz (T1003.001 — Memória LSASS):

title: Detecção de Roubo de Credenciais Mimikatz via Acesso LSASS
id: 0d894093-71bc-43c3-8d63-bf520e73a7c5
status: stable
level: high
description: Detecta processos acessando a memória do lsass.exe, indicativo de ferramentas de roubo de credenciais 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:
    - Ferramentas de segurança legítimas acessando LSASS
    - Varredura do Windows Defender
    - Sensor CrowdStrike Falcon

Passo 2: Validar Sintaxe da Regra Sigma

Use sigma check para validar a regra:

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

# Validar regra
sigma check rule.yml

Alternativamente, valide com 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}")

Passo 3: Converter para Consulta SIEM de Destino

Converter para 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])

Saída:

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")

Converter para Consulta Elastic (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])

Converter para Microsoft Sentinel KQL:

from sigma.backends.microsoft365defender import Microsoft365DefenderBackend

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

Passo 4: Mapear para MITRE ATT&CK e Adicionar Metadados de Cobertura

Identifique cada regra com IDs de técnica ATT&CK no campo tags:

tags:
    - attack.credential_access        # Tática
    - attack.t1003.001                # Sub-técnica
    - attack.t1003                    # Técnica pai

Rastreie a cobertura de detecção usando o ATT&CK Navigator:

import json

# Gerar camada do ATT&CK Navigator a partir de regras Sigma
layer = {
    "name": "Cobertura de Detecção SOC",
    "versions": {"attack": "14", "navigator": "4.9", "layer": "4.5"},
    "domain": "enterprise-attack",
    "techniques": []
}

# Analisar diretório de regras Sigma para tags 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)

Passo 5: Testar Regra Contra Dados de Amostra

Crie dados de teste e valide que a regra captura os eventos esperados:

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

# Ou testar manualmente no Splunk com dados de amostra
# Carregar log Sysmon process_access com assinatura conhecida do Mimikatz

Valide a taxa de falsos positivos executando contra 7 dias de dados de produção em uma busca salva sem alertas.

Passo 6: Implantar no SIEM de Produção

Implante a consulta convertida como uma busca agendada ou regra de correlação:

Correlação de Busca 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

Regra de Segurança Elastic (formato TOML):

[rule]
name = "Acesso à Memória LSASS - Roubo de Credenciais"
description = "Detecta acesso suspeito à memória do processo 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 = "Roubo de Credenciais do SO"

Passo 7: Controle de Versão e Integração CI/CD

Armazene regras no Git com testes automatizados:

# .github/workflows/sigma-ci.yml
name: CI de Regras Sigma
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

Conceitos Chave

TermoDefinição
SigmaFormato de regra de detecção independente de fornecedor (baseado em YAML) que compila para consultas SIEM específicas via backends
pySigmaBiblioteca Python que substitui o sigmac legado para conversão, validação e processamento de pipeline de regras
BackendPlugin pySigma que traduz a lógica de detecção Sigma para uma linguagem de consulta da plataforma de destino (SPL, KQL, Lucene)
PipelineConfiguração de mapeamento de campos que traduz nomes de campos genéricos do Sigma para nomes de campos específicos do SIEM
LogsourceSeção da regra Sigma que define a categoria (process_creation, network_connection) e o produto (windows, linux) dos dados de destino
Detecção como CódigoPrática de gerenciar regras de detecção em controle de versão com testes CI/CD e implantação automatizada

Ferramentas e Sistemas

  • SigmaHQ: Repositório oficial de regras Sigma com mais de 3.000 regras de detecção mantidas pela comunidade no GitHub
  • pySigma: Framework Python para processamento de regras Sigma com backends e pipelines modulares
  • ATT&CK Navigator: Ferramenta MITRE para visualizar cobertura de detecção mapeada para técnicas ATT&CK
  • Uncoder.IO: Conversor de regras Sigma baseado em web com suporte a mais de 30 plataformas SIEM para tradução rápida

Cenários Comuns

  • Detecção de Nova CVE: Escrever regra Sigma para indicadores de exploração (ex.: padrões de consulta JNDI do Log4Shell em logs web)
  • Promoção de Regra de Caça: Converter consulta de caça Splunk ad-hoc em regra Sigma para detecção automatizada contínua
  • Migração Multi-SIEM: Converter mais de 500 correlações de busca Splunk para Sigma para migração para Elastic Security
  • Saída de Equipe Roxa: Converter descobertas da equipe vermelha em regras Sigma para cobertura defensiva imediata
  • Operacionalização de Inteligência de Ameaças: Transformar relatórios de ameaças baseados em IOC em regras Sigma comportamentais

Formato de Saída

RELATÓRIO DE IMPLANTAÇÃO DE REGRA SIGMA
━━━━━━━━━━━━━━━━━━━━━━━━━━━
ID da Regra:  0d894093-71bc-43c3-8d63-bf520e73a7c5
Título:       Detecção de Roubo de Credenciais Mimikatz via Acesso LSASS
ATT&CK:       T1003.001 - Memória LSASS
Severidade:   Alta
Status:       Implantado em Produção

Conversões:
  Splunk SPL:    PASS — Busca salva "sigma_lsass_access" criada
  Elastic EQL:   PASS — Regra de detecção ID elastic-0d894093 habilitada
  Sentinel KQL:  PASS — Regra de análise implantada via template ARM

Testes:
  Verdadeiros Positivos:    4/4 casos de teste correspondidos
  Falsos Positivos:   2 em 7 dias de retroteste (caso extremo svchost — filtro adicionado)
  Desempenho:       Média de execução 3,2s em 50M eventos/dia

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,

Habilidades Relacionadas