
Uno strumento di rilevamento autonomo basato su SIGMA per log EVTX, Auditd e Sysmon per Linux


Zircolite è uno strumento autonomo scritto in Python 3 che consente di utilizzare le regole SIGMA su:
--archive-password per ZIP/7z cifrati.Puoi usare Zircolite direttamente con Python.
La documentazione è disponibile qui (sito dedicato) o qui (directory del repository).
Il progetto è stato testato con Python 3.10 e versioni successive. Installa le dipendenze con: pip3 install -r requirements.txt.
orjson, xxhash, rich, rich-argparse, RestrictedPython, requests, urllib3, pySigma, evtx (pyevtx-rs), jinja2, lxml, chardet, psutil, pyyaml, py7zrpy7zr viene importato solo quando viene aperto un input ; ZIP, gzip e bzip2 usano la libreria standard.⚠️ Su alcuni sistemi (Mac, ARM, ecc.), la libreria Python evtx potrebbe richiedere l'installazione di Rust e Cargo.
Dai un'occhiata ai (vecchi) tutorial realizzati da altri (EN, ES e FR) qui.
La guida è disponibile con:
python3 zircolite.py -h
Se i tuoi file EVTX hanno estensione ".evtx":
# python3 zircolite.py --evtx <EVTX FOLDER or EVTX FILE> --ruleset <SIGMA RULESET> [--ruleset <OTHER RULESET>]
python3 zircolite.py --evtx sysmon.evtx --ruleset rules/rules_windows_merged.json
Puoi usare direttamente regole Sigma native (YAML):
# Single YAML rule
python3 zircolite.py --evtx sample.evtx --ruleset path/to/rule.yml
# Directory of Sigma rules
python3 zircolite.py --evtx sample.evtx --ruleset ./sigma/rules/windows/process_creation
# With pySigma pipelines
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources
Zircolite rileva automaticamente il formato del log nella maggior parte dei casi, quindi i flag di formato espliciti sono opzionali:
# Auto-detection (recommended) - Zircolite identifies the format automatically
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json
# Explicit format flags (override auto-detection)
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json --auditd
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json --sysmon4linux
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --jsononly
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --json-array
python3 zircolite.py --events <CSV_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --csv-input
python3 zircolite.py --events <XML_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --xml-input
--events può essere un file o una cartella. Se si tratta di una cartella, verranno selezionati tutti i file di log nella cartella corrente e nelle sottocartelle (usa --no-recursion per disabilitare).--file-pattern per specificare un pattern glob personalizzato per la selezione dei file.--no-auto-detect per disabilitare il rilevamento automatico del formato.[!TIP] Se vuoi provare lo strumento, puoi testarlo con EVTX-ATTACK-SAMPLES (file EVTX).
# Pull the Docker image
docker pull wagga40/zircolite:latest
# If your logs and rules are in a specific directory
docker run --rm --tty \
-v $PWD:/case/input:ro \
-v $PWD:/case/output \
wagga40/zircolite:latest \
-e /case/input \
-o /case/output/detected_events.json \
-r /case/input/a_sigma_rule.yml
$PWD con la directory (solo percorso assoluto) in cui sono salvati i tuoi log e le regole/ruleset.Dati più file, Zircolite li confronta con la RAM e la CPU disponibili, sceglie una modalità di database (un database condiviso o uno per file) e stabilisce se vale la pena elaborarli in parallelo — adattando poi il numero di worker alla pressione sulla memoria durante l'esecuzione.
python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json
Puoi sovrascrivere tutto con --no-auto-mode, --unified-db (un database per tutti i file, che è ciò di cui hanno bisogno le regole di correlazione tra file), --no-parallel o --parallel-workers N. Consulta Ottimizzazione automatica dell'elaborazione per capire come viene effettuata la scelta.
Per flussi di lavoro di analisi complessi o ripetuti, usa un file di configurazione YAML:
# Generate a fully commented configuration file
python3 zircolite.py --generate-config my_config.yaml
# Run with it
python3 zircolite.py --yaml-config my_config.yaml
# CLI arguments override the file
python3 zircolite.py --yaml-config my_config.yaml --evtx ./other_logs/
Il file generato documenta ogni chiave supportata; config/zircolite_example.yaml è un esempio pratico. Consulta configurazione YAML per le regole di unione e le opzioni che non hanno un equivalente YAML.
python3 zircolite.py -U
In alternativa, se usi Task (go-task), esegui task update-rules dalla radice del progetto per aggiornare le regole da Zircolite-Rules-v2. Consulta docs per altre attività (build Docker, pulizia, ecc.).
[!IMPORTANT]
Tieni presente che queste ruleset sono fornite per usare Zircolite pronte all'uso, ma dovresti generare le tue ruleset poiché possono essere rumorose o lente. Queste ruleset aggiornate automaticamente sono disponibili nel repository dedicato: Zircolite-Rules-v2.
Due funzionalità di configurazione modellano gli eventi durante l'acquisizione, entrambe in config/config.yaml:
Hashes di Sysmon (SHA1=abc123,MD5=def456,SHA256=789xyz) diventa campi SHA1, MD5 e SHA256 separati, così le regole possono corrispondere direttamente a un hash.split:
Hashes:
separator: ","
equal: "="
Consulta Suddivisione dei campi e Trasformazioni dei campi per la configurazione completa, le trasformazioni incluse in Zircolite e come testare le tue.
La documentazione completa è disponibile qui.
La Mini-GUI può essere utilizzata completamente offline. Consente di visualizzare e cercare i risultati. Puoi generare automaticamente un "pacchetto" Mini-GUI con l'opzione --package. Usa --package-dir per specificare la directory di output. Per imparare a usare la Mini-GUI, consulta la documentazione qui.



Inglese: Russ McRee ha pubblicato un tutorial dettagliato su SIGMA e Zircolite sul suo blog.
Spagnolo: César Marín ha pubblicato un tutorial in spagnolo qui.
Francese: IT-connect.fr ha pubblicato un tutorial completo su Zircolite in francese.
Francese: IT-connect.fr ha anche pubblicato un write-up della challenge Hack the Box utilizzando Zircolite.
evtx_dump è sotto licenza MIT..7z