Sigma Cheatsheet
Sigma è un formato di firma generico e aperto che consente di descrivere eventi di log in modo semplice. Consente agli analisti di sicurezza di scrivere regole di rilevamento una volta e convertirli in vari formati SIEM, rendendo il rilevamento delle minacce portatile attraverso diverse piattaforme di sicurezza.
## Installazione e configurazione
### Installazione Python
**Install Sigma Tools:**
Traduzione:
*Install from Source:**
Traduzione:
### Installazione Docker
# Docker Setup #
Traduzione:
## Struttura della regola Sigma
### Formato della regola di base
♪Standard Sigma Rule ♪
Traduzione:
### Componenti della regola
**Metadata Fields:**
Traduzione:
**Log Source Definition:**
Traduzione:
♪Detection Logic ♪
Traduzione:
## Modelli di rilevamento
### Schemi di selezione
** Selezione base: **
Traduzione:
**Multiple Selections:**
Traduzione:
Traduzione:
Traduzione:
### Modificatori di campo
**String Modifiers:**
Traduzione:
rilevamento:
selezione:
# Less than
ProcessId|lt: 1000
# Greater than
FileSize|gt: 1048576
# Greater than or equal
EventID|gte: 4624
# Less than or equal
Logon Tipo: 10
Traduzione:
rilevamento:
sel_suspicious_process:
Image|endswith:
- '\powershell.exe '
- '\cmd.exe '
Sel_suspicious_args:
CommandLine|contiene:
- Commissione codificata '
- 'ScaricareString '
Sel_network:
Destinazione Porto:
- 80
- 443
stato: sel_suspicious_process and sel_suspicious_args and sel_network
Traduzione:
rilevamento:
selezione:
EventID: 4625
Obiettivo Nome utente: '*'
stato: selezione|count(TargetUserName) da SourceNetworkAddress > 10
Traduzione:
rilevamento:
selezione:
EventID: 4624
LogonType: 3
| stato: selezione | count() di TargetUserName > 5 | timeframe 5 |
Traduzione:
titolo: Suspicious Process in Temp Directory
logsource:
categoria: process_creation
prodotto: finestre
rilevamento:
selezione:
Image|startswith:
- C:\Temp\ '
- C:\Users\*\AppData\Local\Temp\ '
Image|endswith: '.exe'
stato: selezione
livello: medio
Traduzione:
titolo: Encoded Power Comando Shell
logsource:
categoria: process_creation
prodotto: finestre
rilevamento:
selezione:
Image|endswith: '\powershell.exe '
CommandLine|contiene: '-Comando codificato '
stato: selezione
livello: alto
Traduzione:
titolo: Connessione al dominio sospetto
logsource:
categoria: rete_connessione
prodotto: finestre
rilevamento:
selezione:
Iniziato: 'vero '
DestinationHostname|endswith:
- #
- '.ml '
- '.ga '
stato: selezione
livello: medio
Traduzione:
titolo: eseguibile nella cartella di avvio
logsource:
categoria: file_event
prodotto: finestre
rilevamento:
selezione:
TargetFilename|contiene: '\Startup\ '
TargetFilename|endswith: '.exe'
stato: selezione
livello: alto
Traduzione:
titolo: Registry Run Key Modifica
logsource:
categoria: Registro_event
prodotto: finestre
rilevamento:
selezione:
Obiettivo Object|contiene:
- '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ '
- '\ SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\ '
stato: selezione
livello: medio
Traduzione:
# Convertire singola regola
sigma convert -t splunk rule.yml
# Converti più regole
sigma convert -t splunk Rules/*.yml
# Convertire con configurazione personalizzata
sigma convert -t splunk -c splunk-windows.yml rule.yml
# Uscita sul file
sigma convert -t splunk rule.yml -o splunk_query.txt
Traduzione:
# Convertire in Elasticsearch Query DSL
sigma convert -t elasticsearch rule.yml
# Convertire in formato ECS
sigma convert -t elasticsearch -c ecs-cloudtrail.yml rule.yml
# Convertire a Kibana
sigma convert -t kibana rule.yml
Traduzione:
# Convertire in QRadar AQL
sigma convert -t qradar rule.yml
# Convertire con mappatura del campo
sigma convert -t qradar -c qradar-fields.yml rule.yml
Traduzione:
# Convertire in KQL
sigma convert -t microsoft365defender rule.yml
# Converti in Azure Sentinel
sigma convert -t azure-sentinel rule.yml
Traduzione:
# splunk-custom.yml
titolo: Configurazione personalizzata Splunk
ordine: 20
backends:
- Spruzzo
logsources:
finestre:
categoria: process_creation
condizioni:
EventID: 1
rewrite:
prodotto: finestre
servizio: sysmon
fieldmappings:
Immagine: processo_name
CommandLine: process_command_line
ProcessId: process_id
Traduzione:
# field-mapping.yml
titolo: Custom Field Mapping
fieldmappings:
# Windows Security Events
EventID: event_id
Obiettivo Nome utente: user_name
Rete di origine Indirizzo: src_ip
DestinazionePorto: dest_port
# Sysmon Events
Immagine: processo_path
CommandLine: comando_line
ProcessId: pid
Procedimento Id: ppid
Traduzione:
# Convalida sintassi della regola
sigma check rule.yml
# Convalida più regole
Regole di controllo sigma/*.yml
# Check con backend specifico
Sigma check -t splunk rule. - Sì.
# Validazione del verbo
verifica sigma -v rule.yml
Traduzione:
# Conversione di prova
sigma convert -t splunk rule.yml --dry-run
# Prova con i dati del campione
sigma test rule.yml --data sample_logs.json
# Debug regola logica
sigma convert -t splunk rule.yml --debug
Traduzione:
# Utilizzare specifiche partite di campo invece di wildcards
rilevamento:
selezione:
# Good - specific match
EventID: 4624
LogonType: 3
# Avoid - too broad
# EventData|contains: 'logon'
stato: selezione
Traduzione:
rilevamento:
selezione:
Image|endswith: '\powershell.exe '
CommandLine|contiene: 'DownloadString '
filtro:
User|contiene: 'SYSTEM'
ParentImage|endswith: '\services.exe '
stato: selezione e non filtro
Traduzione:
regole
─ finestre/
̄process_creation/
Ÿ ̃─ network_connection/
─ file_event/
⇒ ─ ─ Registro dell'evento/
─ linux/
̄process_creation/
Ÿ │─ network_connection/
─ cloud/
─ Aws/
─ Azure/
─ Gcp/
Traduzione:
# Utilizzare tagging coerente
tags:
- attacco.esecuzione
- attacco.t1059.001
- rilevamento.emerging_threats
- piattaforma.finestre
- data_source.process_monitoring
Traduzione:
# Creare ramo funzione per nuova regola
git checkout -b caratteristica/nuova rilevazione-rule
# Aggiungi file di regola
git aggiungere regole/finestre/process_creation/suspicious_powershell.yml
# Impegnati con un messaggio descrittivo
git commit -m "Aggiungi il rilevamento per l'esecuzione di PowerShell sospetto"
# Spingere e creare richiesta pull
funzione di origine git / nuova definizione-rule
Traduzione:
# Convalida prima del commit
Verifica sigma regole/finestre/process_creation/*.yml
# Verificare la conversione al target SIEM
sigma convert -t splunk Rules/windows/process_creation/new_rule.yml
# Controllare i duplicati
grep -r "title:" regole/|grep "Suspicious PowerShell"
Traduzione:
nome: Convalida della regola Sigma
su:
lavori:
convalida:
run-on: ubuntu-latest
passi:
- utilizza: azioni/checkout@v2
- nome: Setup Python
utilizza: azioni/setup-python@v2
con:
python-version: 3.9.
- nome: Installare Sigma
run: pip install sigma-cli
- nome: Convalida regole
run:
trovare regole / -name "*.yml" -exec sigma check \{\} \;
- nome: Conversioni di prova
run:
sigma convert -t splunk Rules/windows/process_creation/*.yml
sigma convert -t elasticsearch regole/linux/process_creation/*.yml
Traduzione:
#!/bin/bash
# distribuire-to-splunk.sh
RULES_DIR="rules/finestre"
SPLUNK_CONFIG="configs/splunk-windows.yml"
"Splunk_searchs"
# Convertire le regole in Splunk
per regola in $RULES_DIR/*.yml; do
rule_name=$(basename "$rule" .yml)
sigma convert -t splunk -c $SPLUNK_CONFIG "$rule" > "$OUTPUT_DIR/$\{rule_name\}.spl"
Fatto
# Distribuisci a Splunk tramite REST API
per la ricerca in $OUTPUT_DIR/*.spl; do
ricerca_name=$(basename "$search" .spl)
curl -k -u admin:password \
-d "name=$search_name"
-d "search=$(cat $search)" \
#
Fatto
Traduzione:
importazione
importazione yaml
da elasticsearch import Elasticsearch
da sigma.cli.convert import convert_rule
def deploy_sigma_rules_to_elasticsearch():
"""Deploy Sigma regole come avvisi Elasticsearch Watcher"""
es = Elasticsearch(['localhost:9200'])
regole_dir = 'rules/linux '
per rule_file in os.listdir(rules_dir):
se rule_file.endswith('.yml'):
rule_path = os.path.join(rules_dir, rule_file)
# Convert Sigma rule to Elasticsearch query
es_query = convert_rule(rule_path, 'elasticsearch')
# Create Watcher alert
con aperto (rule_path, 'r') come f:
regole_dati = yaml.safe_load(f)
watcher_config =
"trigger":
"schedule": "intervallazione": "5m"\}
#
"input":
"ricerca":
"Richiesta":
"search_type": "query_then_fetch",
"indice": ["logs-*],
"corpo":
"query": es_query
#
#
#
#
"condizione":
"compare":
"ctx.payload.hits.total": \{"gt": 0\}
#
#
"azioni":
"log_alert":
"logging":
"text": f"Sigma regola attivata: \{rule_data['title']\}"
#
#
#
#
# Deploy to Elasticsearch
rule_id = rule_data['id]
es.watcher.put_watch(id=rule_id, body=watcher_config)
Traduzione:
titolo: Logons falliti multipli
logsource:
categoria: autenticazione
prodotto: finestre
rilevamento:
selezione:
EventID: 4625
Obiettivo Nome utente: '*'
stato: selezione|count(TargetUserName) da SourceNetworkAddress > 5
temporale: 5m
livello: medio
Traduzione:
titolo: Unusual Process Execution Volume
logsource:
categoria: process_creation
prodotto: finestre
rilevamento:
selezione:
Image|endswith: '\powershell.exe '
stato: selezione|count() da Computer > avg(count() * 3
temporale: 1h
livello: medio
Traduzione:
Titolo: Credential Dumping Seguito dal Movimento Laterale
logsource:
categoria: process_creation
prodotto: finestre
rilevamento:
stadio1:
Image|endswith: '\mimikatz.exe '
CommandLine|contiene: 'sekurlsa:: logonpasswords '
stadio2:
Image|endswith: '\psexec.exe '
CommandLine|contiene: '\\\\\*'
stato: stage1 seguito da stage2
temporale: 30m
livello: alto
Traduzione:
titolo: Rilevazione dello stress basata su Entropy
logsource:
categoria: process_creation
prodotto: finestre
rilevamento:
selezione:
CommandLine: '*'
stato: selezione|entropy (CommandLine) > 6.5
livello: medio
Traduzione:
# Controlla la sintassi YAML
python -c "import yaml; yaml.safe_load(open('rule.yml')"
# Convalida struttura della regola Sigma
sigma check rule.yml - V
# Controllare mappature del campo
sigma convert -t splunk rule.yml --debug
Traduzione:
# Elenco backend disponibili
Elenco dei backend
# Controlla la configurazione del backend
modificatori elenco sigma -t splunk
# Test con regola minima
sigma convert -t splunk -e 'detection: \{selection: \{EventID: 1\}, stato: selezione\} '
Traduzione:
# Conversione della regola del profilo
tempo sigma convert -t splunk Rules/*.yml
# Verifica la complessità delle regole
grep -c "condizione:" rule.yml
gep -c "|" rule.yml # Count modificafiers
# Ottimizzare la struttura delle regole
sigma convert -t splunk rule.yml - Ottimizzare
Traduzione:
# Attivare debug logging
sigma convert -t splunk rule.yml --debug
# Uscita Verbose
sigma convert -t splunk rule.yml - V
# Modalità di funzionamento a secco
sigma convert -t splunk rule.yml --dry-run
Traduzione:
# Analizzare la copertura delle regole
sigma analizza le regole/ --copertura
# Controllare i duplicati
sigma analizza le regole/ --duplicazioni
# Analisi delle prestazioni
sigma analizza regole/ --performance
Traduzione:
**Modificatori numerici: **
Traduzione:
### Condizioni Avanzate
** Logica complessa: **
#
** Condizioni d'uso: **
Traduzione:
**Condizioni basate sul tempo:**
Traduzione:
## Categorie
### Regole di creazione del processo
** Esecuzione di processo dispersa:**
Traduzione:
**Analisi della linea: **
Traduzione:
### Regole di connessione di rete
**Suspicious Outbound Connections:**
Traduzione:
### Regole del sistema di file
**Suspicious File Creation:**
Traduzione:
### Regole del Registro
Perseveranza:
Traduzione:
## Conversione e distribuzione
### Convertire le regole in formati SIEM
# Splunk Conversion #
Traduzione:
# Elastic/ECs # Conversione:**
Traduzione:
Traduzione:
Traduzione:
Microsoft Sentinel Conversion:
Traduzione:
### Configurazioni di backend
♪Custom Backend Config ♪
Traduzione:
**Field Mapping:
Traduzione:
## Sviluppo delle regole
### Regole di prova
** Validazione delle regole: E' una cosa da fare.
Traduzione:
**Rule Testing:**
Traduzione:
### Ottimizzazione delle regole
** Ottimizzazione delle prestazioni:**
Traduzione:
**Ridurre i falsi positivi:**
Traduzione:
## Gestione delle regole
### Collezioni di regola
** Regole di organizzazione per categoria: **
Traduzione:
** Gestione dei Metadati Rule: **
Traduzione:
### Controllo versione
♪Git Workflow ♪
Traduzione:
**Processo di revisione del regolamento: **
Traduzione:
## Esempi di integrazione
### CI/CD Pipeline
**GitHub Azioni Flusso di lavoro:**
#
### SIEM Integrazione
** Integrazione Splunk:**
Traduzione:
** Integrazione di Elasticsearch:**
Traduzione:
## Caratteristiche avanzate
### Regole di aggregazione
** Rilevamento basato sul paese: **
Traduzione:
** Analisi statistica: **
Traduzione:
### Regole di correlazione
**Multi-stage Attacco rilevamento: **
Traduzione:
### Funzioni personalizzate
**Custom Detection Logic:**
Traduzione:
## Risoluzione dei problemi
### Questioni comuni
** Errore di convalida delle regole: **
Traduzione:
** Problemi di conversione:
Traduzione:
** Problemi di conformità: **
Traduzione:
### Debug
** Modalità di spesa: **
Traduzione:
# Analisi delle regole #
Traduzione:
< >
Questo completo Sigma cheatsheet copre lo sviluppo delle regole, la conversione, la distribuzione e le funzionalità avanzate per un rilevamento efficace delle minacce su più piattaforme SIEM.