Escrevendo regras Sigma
Sintaxe portátil para regras de detecção.
Escrevendo regras Sigma é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.
O que é o Sigma
Sigma é um formato genérico e independente de fornecedor para assinaturas de detecção baseadas em registros. Você escreve a lógica de detecção uma vez em YAML e depois a converte para SPL do Splunk, consultas do Elastic, KQL do Sentinel e muitos outros sistemas de destino.
O Sigma está para a detecção em registros assim como YARA está para a detecção em arquivos: é uma língua franca portátil. Ele permite que as equipes compartilhem regras publicamente e evitem reescrever a mesma ideia para cada SIEM.
Anatomia de uma regra
Uma regra Sigma é um documento YAML com seções obrigatórias e opcionais. Os elementos essenciais são title, logsource e detection.
title: Suspicious PowerShell Encoded Command
id: 7e3f3c1a-1f2b-4c3d-9a8b-1234567890ab
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\\powershell.exe'
CommandLine|contains: '-enc'
condition: selection
level: highO bloco logsource
O bloco logsource informa ao conversor a quais registros a regra se aplica. Ele não consulta os dados diretamente; seleciona o mapeamento de campos e o índice corretos durante a conversão.
Chaves comuns:
product— por exemplo, windows, linux, awscategory— por exemplo, process_creation, network_connection, file_eventservice— por exemplo, sysmon, security, sshd
Escolha a combinação mais específica compatível com seus dados para que o fluxo de processamento mapeie os campos corretamente.
Seleções e identificadores de pesquisa
Dentro de detection, você define um ou mais identificadores de pesquisa nomeados (seleções). Cada um é um mapa de critérios de campo e valor. Vários campos dentro de uma seleção são unidos pelo AND lógico.
Aqui, as duas condições precisam ser verdadeiras para que selection corresponda.
detection:
selection:
EventID: 4688
NewProcessName|endswith: '\\whoami.exe'
condition: selectionModificadores de campo
Os modificadores refinam a forma como um valor é comparado. Eles são anexados ao nome do campo após uma barra vertical.
contains— correspondência de uma substringstartswith/endswith— correspondência ancoradaall— todos os valores de uma lista precisam estar presentesre— expressão regularbase64offset|contains— correspondência de substrings codificadas em base64
Os modificadores são encadeados da esquerda para a direita e aplicados nessa ordem.
detection:
selection:
CommandLine|contains|all:
- 'Invoke-WebRequest'
- 'DownloadString'
condition: selectionListas e mapas como OR / AND
Duas regras governam a lógica dentro de uma seleção:
- Uma lista de valores em um campo é OR — qualquer valor corresponde.
- Um mapa com vários campos é AND — todos os campos precisam corresponder.
Abaixo, Image corresponde a qualquer um dos dois binários, e User também precisa ser igual a SYSTEM.
detection:
selection:
Image|endswith:
- '\\net.exe'
- '\\net1.exe'
User: 'SYSTEM'
condition: selectionA expressão de condição
A condition combina suas seleções nomeadas usando lógica booleana. É aqui que você expressa filtros e exclusões.
Os operadores incluem and, or, not, parênteses e agregações como count(). Você também pode usar 1 of selection* / all of selection* para fazer referência a grupos de identificadores por prefixo.
detection:
selection:
EventID: 4625
timeframe: 5m
condition: selection | count() by SourceIp > 10Filtrando o ruído
Para suprimir atividades reconhecidamente legítimas, defina um identificador separado e subtraia-o na condição com not. Isso mantém a lógica maliciosa legível e as exclusões explícitas.
Aqui, a regra é acionada quando o rundll32 inicia uma conexão de rede, exceto no caso de um processo de atualização legítimo conhecido.
detection:
selection:
Image|endswith: '\\rundll32.exe'
filter_legit:
ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
condition: selection and not filter_legitMetadados para triagem
Além da lógica, boas regras contêm metadados que ajudam os responsáveis pela resposta a agir rapidamente e os engenheiros a manter a cobertura.
level— informativo, baixo, médio, alto, críticotags— técnicas do ATT&CK, por exemplo, attack.t1059.001falsepositives— acionadores benignos conhecidosreferences— relatórios de ameaças ou documentaçãoauthoredate
Esses campos levam minutos para serem preenchidos e economizam horas durante um incidente.
Regras de correlação
Regras de evento único não conseguem expressar ataques em várias etapas. As regras de correlação do Sigma combinam várias regras básicas ao longo do tempo para detectar sequências e padrões.
Os tipos compatíveis incluem event_count (N correspondências em uma janela), value_count (valores distintos, por exemplo, muitos usuários com falha de autenticação) e temporal (regra A e depois regra B). Assim, você pode detectar, por exemplo, um login bem-sucedido logo após uma sequência de falhas.
name: bruteforce_then_success
correlation:
type: temporal
rules: [failed_logins, successful_login]
group-by: [SourceIp, TargetUser]
timespan: 10mConvertendo para um sistema de destino
Com o sigma-cli, você converte uma regra para a linguagem de consulta do seu sistema de destino. Um fluxo de processamento mapeia os nomes de campos do Sigma para o seu esquema real.
A saída é uma consulta pronta para implantação, que você pode colar ou enviar por meio de uma API.
sigma convert -t splunk -p sysmon \
-f default rule.yml
# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"Verificação rápida
Verifique sua compreensão da lógica de detecção do Sigma.
Resumo
Agora você pode criar regras Sigma portáteis:
logsourceseleciona quais registros e mapeamentos de campos se aplicam- As seleções são critérios nomeados de campo e valor (campos = AND, listas de valores = OR)
- Modificadores como contains, endswith, all e re refinam a correspondência
conditionune seleções com and/or/not, filtros e agregações- Identificadores de filtro separados subtraem o ruído reconhecidamente legítimo
- Os metadados (level, tags, falsepositives) aceleram a triagem
sigma convertcompila a regra para o sistema de destino do seu SIEM
Em seguida, você associará essas regras às técnicas de adversários com o MITRE ATT&CK.
Perguntas Frequentes
A aula “Escrevendo regras Sigma” é grátis?
Sim — o texto completo de “Escrevendo regras Sigma” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.
O que vou aprender em “Escrevendo regras Sigma”?
Sintaxe portátil para regras de detecção. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cyber Security Academy?
Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Escrevendo regras Sigma”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cyber Security Academy?
Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Princípios de detecção como código
- Escrevendo regras Sigma
- Mapeamento para MITRE ATT&CK
- Testando e ajustando detecções