
Zircolite v4.0.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 applica le regole di rilevamento Sigma a:
- MS Windows EVTX (formati EVTX, XML e JSONL)
- Log Auditd
- Sysmon per Linux
- EVTXtract
- Log CSV e XML
- Log JSON Array
Caratteristiche principali
- Rilevamento del formato: identifica automaticamente i formati di log e i campi timestamp. Legge input gzip, bzip2, ZIP e 7-Zip; gli input ZIP/7z cifrati prendono la password da
--ask-archive-passwordo dalla variabile d'ambienteZIRCOLITE_ARCHIVE_PASSWORD. - Regole Sigma: converte le regole YAML native con il backend SQLite di pySigma o carica ruleset JSON preconvertiti.
- Correlazioni: conteggi, statistiche, sequenze temporali, condizioni di assenza e regole concatenate, con eventi di supporto in ogni alert. La modalità unificata supporta correlazioni cross-file.
- Elaborazione dei campi: suddivide i campi chiave-valore e applica trasformazioni Python, inclusa la decodifica Base64 ed esadecimale.
- Esportazione: JSON, CSV e template Jinja per JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF e ATT&CK Navigator.
- Output terminale: rilevamenti ordinati per severità, tecniche e tattiche MITRE ATT&CK, copertura delle regole e link di output.
Puoi usare Zircolite direttamente con Python, oppure scaricare un binario standalone che non richiede l'installazione di Python.
Consulta il sito della documentazione o la documentazione del repository.
Requisiti / Installazione
[!NOTE] Le installazioni da sorgente richiedono Python e un gestore di pacchetti. I binari standalone e l'immagine Docker includono Python, le dipendenze e il kernel compilato.
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
Le dipendenze sono dichiarate in pyproject.toml. Vedi
Dipendenze per i loro ruoli.
⚠️ Installa prima un compilatore C
Le installazioni da sorgente usano un compilatore C per compilare il kernel di flattening Cython. Se la compilazione
fallisce, il backend di build avvisa e l'installazione prosegue con il kernel Python più lento.
Imposta ZIRCOLITE_REQUIRE_NATIVE=1 per richiedere una build nativa riuscita.
Per l'accelerazione nativa, 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 viene installato automaticamente come dipendenza di build.
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; usa Python o Docker in quei casi.
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
I tutorial coprono le versioni precedenti in inglese, spagnolo e francese.
File EVTX
L'aiuto è disponibile con:
# Prefix with pdm run, uv run or poetry run if the environment is not active
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: Zircolite usa quindi rules/rules_windows_merged.json, che
copre Sysmon e i canali Windows generici.
Uso delle regole Sigma native (YAML)
Puoi usare 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
--pipeline-list mostra le pipeline installate. Indicarne una non installata interrompe
l'esecuzione con codice di uscita 2, prima che qualsiasi regola venga convertita.
Altri formati di log
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