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

Strumento di rilevamento standalone basato su SIGMA per log EVTX, Auditd, Sysmon per Linux, XML, CSV o JSONL/NDJSON

Zircolite è uno strumento standalone scritto in Python 3 che consente di utilizzare le regole SIGMA su:
- MS Windows EVTX (formati EVTX, XML e JSONL)
- Log Auditd
- Sysmon per Linux
- EVTXtract
- Log CSV e XML
- Log JSON Array
Caratteristiche principali
- Veloce: 452.554 eventi contro 4.319 regole Sigma in 11,6 s — 2,1× più veloce di Hayabusa e 9,8× più veloce di Chainsaw sugli stessi log, entrambi strumenti scritti in Rust. Vedi il benchmark.
- Rilevamento automatico del tipo di log: identifica automaticamente i formati di log e i campi timestamp utilizzando magic bytes, analisi del contenuto e fallback basato su regex -- nella maggior parte dei casi non è necessario specificare flag di formato.
- Molteplici formati di input: supporta vari formati di log tra cui EVTX, JSON Lines, JSON Arrays, CSV, XML e altri. Sono supportati log compressi o archiviati (gzip, bzip2, ZIP, 7-Zip); usa
--archive-passwordper ZIP/7z cifrati. - Supporto nativo Sigma: Zircolite può utilizzare direttamente le regole Sigma native (YAML) convertendole con pySigma.
- Backend SIGMA: si basa su un backend SIGMA (SQLite) e non utilizza conversioni interne da SIGMA a qualcos'altro.
- Manipolazione avanzata dei log: può manipolare i log di input suddividendo i campi e applicando trasformazioni, consentendo un'analisi dei log più flessibile e potente.
- Trasformazioni dei campi: applica trasformazioni Python personalizzate ai campi durante l'elaborazione (ad esempio, decodifica Base64, conversione da hex ad ASCII).
- Esportazione flessibile: Zircolite può esportare i risultati in molteplici formati utilizzando template Jinja, tra cui JSON, CSV, JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF, ATT&CK Navigator e altri.
- Output terminale avanzato: i risultati del rilevamento vengono visualizzati in tabelle ordinate per severità con ID delle tecniche MITRE ATT&CK, heatmap delle tattiche ATT&CK, metriche di copertura delle regole e link cliccabili ai file di output.
Puoi utilizzare Zircolite direttamente con Python, oppure scaricare un binario standalone che non richiede l'installazione di Python.
La documentazione è disponibile qui (sito dedicato) o qui (directory del repository).
Requisiti / Installazione
[!NOTE] Tutto ciò che è contenuto in questa sezione si applica solo quando si esegue Zircolite dal codice sorgente. I binari standalone e l'immagine Docker includono il proprio Python, tutte le dipendenze e il kernel compilato: non richiedono Python, né un package manager, né un compilatore C.
Il progetto è stato testato con Python 3.10 e versioni successive. Le dipendenze sono dichiarate in
pyproject.toml; installale dal repository clonato con
PDM (pdm install), uv
(uv sync) o Poetry (poetry install).
Gli esempi seguenti eseguono python3 zircolite.py: attiva l'ambiente creato dallo strumento,
oppure anteponi pdm run, uv run o poetry run.
Dipendenze
- Obbligatorie:
orjson,xxhash,rich,rich-argparse,RestrictedPython,requests,urllib3,pySigma,evtx(pyevtx-rs),jinja2,lxml,chardet,psutil,pyyaml,py7zr,ijson,pyahocorasick,pyroaring py7zrviene importato solo quando si apre un input.7z; ZIP, gzip e bzip2 utilizzano la libreria standard.
⚠️ Installa prima un compilatore C
L'installazione dal sorgente compila il kernel di flattening di Zircolite con Cython — ma solo se è già presente un compilatore C. Senza di esso l'installazione riesce comunque e ogni esecuzione appiattisce gli eventi in Python, il che è più lento. I binari e l'immagine Docker sono costruiti con il kernel già compilato, quindi questo non li riguarda.
Quindi installa la toolchain prima di pdm install:
| Piattaforma | Prerequisito |
|---|---|
| Debian, Ubuntu | apt install build-essential python3-dev |
| RHEL, Fedora, Rocky | dnf install gcc python3-devel |
| Alpine | apk add build-base python3-dev |
| macOS | xcode-select --install |
| Windows | Build Tools for Visual Studio ("Desktop development with C++") |
Cython stesso non necessita di installazione: è un requisito di build, recuperato in un ambiente di build isolato e mai aggiunto al tuo ambiente.
Binari standalone
Ogni release pubblica un pacchetto autocontenuto per piattaforma. Ognuno include il proprio Python e tutte le dipendenze, quindi non deve essere installato nulla in anticipo.
| Target | Archivio | Funziona su |
|---|---|---|
linux-x64 | Zircolite-<version>-linux-x64.zip | glibc 2.28 o successiva: RHEL 8, Debian 10, Ubuntu 20.04 e versioni successive |
linux-arm64 | Zircolite-<version>-linux-arm64.zip | glibc 2.28 o successiva |
macos-arm64 | Zircolite-<version>-macos-arm64.zip | macOS 15 o successivo, Apple silicon |
windows-x64 | Zircolite-<version>-windows-x64.zip | Windows 10 o successivo |
windows-arm64 | Zircolite-<version>-windows-arm64.zip | Windows 10 o successivo, ARM64 |
I Mac Intel e le distribuzioni basate su musl come Alpine non hanno un binario; in quei casi usa Python o Docker.
unzip Zircolite-<version>-linux-x64.zip
cd Zircolite-<version>-linux-x64
./Zircolite --events sysmon.evtx --ruleset rules/rules_windows_merged.json
Negli esempi seguenti, sostituisci python3 zircolite.py con il percorso dell'eseguibile.
I binari non sono firmati digitalmente. macOS mette in quarantena un download effettuato con un browser, i
file estratti ereditano il flag, e Gatekeeper blocca quindi l'eseguibile e ogni
libreria in _internal/. Rimuovilo dall'intera directory, ricorsivamente, prima della prima
esecuzione:
xattr -dr com.apple.quarantine Zircolite-<version>-macos-arm64
Avvio rapido
Dai un'occhiata ai (vecchi) tutorial realizzati da altri (EN, ES e FR) qui.
File EVTX
L'aiuto è disponibile con:
# Don't forget to prefix with "pdm run" or "uv run" or "poetry run" when needed
python3 zircolite.py -h
Se i tuoi file EVTX hanno l'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
--ruleset può essere omesso: in tal caso Zircolite utilizza rules/rules_windows_merged.json, che
copre Sysmon e i canali Windows generici.
Utilizzo delle regole Sigma native (YAML)
Puoi utilizzare direttamente le 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