Scrivere regole Sigma
Sintassi portabile per le regole di rilevamento.
Scrivere regole Sigma è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
Che cos'è Sigma
Sigma è un formato generico e indipendente dal fornitore per le firme di rilevamento basate sui log. La logica di rilevamento viene scritta una sola volta in YAML, quindi convertita in SPL di Splunk, query Elastic, KQL di Sentinel e molti altri backend.
Sigma sta al rilevamento nei log come YARA sta al rilevamento nei file: è una lingua franca portabile. Consente ai team di condividere pubblicamente le regole ed evita di riscrivere la stessa idea per ogni SIEM.
Anatomia di una regola
Una regola Sigma è un documento YAML con sezioni obbligatorie e facoltative. Gli elementi essenziali sono 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: highIl blocco logsource
Il blocco logsource indica al convertitore quali log sono interessati dalla regola. Non esegue direttamente query sui dati; durante la conversione seleziona la mappatura dei campi e l'indice corretti.
Chiavi comuni:
product— ad esempio windows, linux, awscategory— ad esempio process_creation, network_connection, file_eventservice— ad esempio sysmon, security, sshd
Scelga la combinazione più specifica supportata dai dati, così che la pipeline associ correttamente i campi.
Selezioni e identificatori di ricerca
All'interno di detection si definiscono uno o più identificatori di ricerca denominati, ovvero selezioni. Ciascuno è una mappa di criteri campo-valore. Più campi all'interno di una selezione vengono combinati con l'operatore logico AND.
In questo caso, entrambe le condizioni devono essere vere affinché selection corrisponda.
detection:
selection:
EventID: 4688
NewProcessName|endswith: '\\whoami.exe'
condition: selectionModificatori dei campi
I modificatori definiscono più precisamente il modo in cui viene confrontato un valore. Vengono aggiunti al nome del campo dopo una barra verticale.
contains— corrispondenza di una sottostringastartswith/endswith— corrispondenza ancorataall— tutti i valori di un elenco devono essere presentire— espressione regolarebase64offset|contains— corrispondenza di sottostringhe codificate in base64
I modificatori si concatenano da sinistra a destra e vengono applicati in quest'ordine.
detection:
selection:
CommandLine|contains|all:
- 'Invoke-WebRequest'
- 'DownloadString'
condition: selectionElenchi e mappe come OR / AND
La logica all'interno di una selezione segue due regole:
- Un elenco di valori associato a un campo equivale a OR: è sufficiente che corrisponda un valore qualsiasi.
- Una mappa con più campi equivale a AND: devono corrispondere tutti i campi.
Di seguito, Image corrisponde a uno dei due eseguibili e anche User deve essere uguale a SYSTEM.
detection:
selection:
Image|endswith:
- '\\net.exe'
- '\\net1.exe'
User: 'SYSTEM'
condition: selectionL'espressione condition
condition combina le selezioni denominate tramite la logica booleana. È qui che si esprimono filtri ed esclusioni.
Gli operatori includono and, or, not, le parentesi e aggregazioni come count(). È inoltre possibile usare 1 of selection* / all of selection* per fare riferimento a gruppi di identificatori accomunati dallo stesso prefisso.
detection:
selection:
EventID: 4625
timeframe: 5m
condition: selection | count() by SourceIp > 10Esclusione del rumore
Per sopprimere le attività legittime note, definisca un identificatore separato e lo sottragga nella condizione con not. In questo modo la logica dannosa rimane leggibile e le esclusioni sono esplicite.
In questo caso, la regola si attiva quando rundll32 avvia una connessione di rete, tranne nel caso di un processo di aggiornamento legittimo noto.
detection:
selection:
Image|endswith: '\\rundll32.exe'
filter_legit:
ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
condition: selection and not filter_legitMetadati per il triage
Oltre alla logica, le regole efficaci contengono metadati che aiutano i responsabili della risposta ad agire rapidamente e gli ingegneri a mantenere la copertura.
level— informational, low, medium, high, criticaltags— tecniche ATT&CK, ad esempio attack.t1059.001falsepositives— eventi benigni noti che possono attivare la regolareferences— report sulle minacce o documentazioneauthoredate
La compilazione di questi campi richiede pochi minuti e può far risparmiare ore durante un incidente.
Regole di correlazione
Le regole basate su un singolo evento non possono esprimere attacchi composti da più fasi. Le regole Sigma di correlazione combinano nel tempo più regole di base per rilevare sequenze e pattern.
Tra i tipi supportati ci sono event_count (N corrispondenze in un intervallo), value_count (valori distinti, ad esempio molti utenti con tentativi di accesso falliti) e temporal (prima la regola A, poi la regola B). Ciò consente, per esempio, di rilevare un accesso riuscito subito dopo una raffica di tentativi falliti.
name: bruteforce_then_success
correlation:
type: temporal
rules: [failed_logins, successful_login]
group-by: [SourceIp, TargetUser]
timespan: 10mConversione per un backend
Con sigma-cli si converte una regola nel linguaggio di query di destinazione. Una pipeline di elaborazione associa i nomi dei campi Sigma allo schema reale.
L'output è una query pronta per la distribuzione, che è possibile incollare o inviare tramite API.
sigma convert -t splunk -p sysmon \
-f default rule.yml
# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"Verifica rapida
Verifichi la propria comprensione della logica di rilevamento di Sigma.
Riepilogo
Ora è possibile creare regole Sigma portabili:
logsourceseleziona i log e le mappature dei campi applicabili- Le selezioni sono criteri campo-valore denominati (i campi equivalgono ad AND, gli elenchi di valori a OR)
- I modificatori come contains, endswith, all e re definiscono più precisamente la corrispondenza
conditioncombina le selezioni con and/or/not, filtri e aggregazioni- Gli identificatori filter separati sottraggono il rumore legittimo noto
- I metadati (level, tags, falsepositives) velocizzano il triage
sigma convertcompila la regola per il backend SIEM
Nel prossimo passaggio, queste regole verranno associate alle tecniche degli avversari tramite MITRE ATT&CK.
Domande Frequenti
La lezione «Scrivere regole Sigma» è gratuita?
Sì — il testo completo di «Scrivere regole Sigma» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Scrivere regole Sigma»?
Sintassi portabile per le regole di rilevamento. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Scrivere regole Sigma»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Principi della detection-as-code
- Scrivere regole Sigma
- Mappatura su MITRE ATT&CK
- Test e ottimizzazione dei rilevamenti