
Ein eigenständiges SIGMA-basiertes Erkennungstool für EVTX-, Auditd- und Sysmon-for-Linux-Logs.


Zircolite ist ein eigenständiges, in Python 3 geschriebenes Tool, mit dem Sie SIGMA-Regeln auf Folgendes anwenden können:
--archive-password verwenden.Sie können Zircolite direkt mit Python verwenden.
Die Dokumentation ist hier (eigene Website) oder hier (Repository-Verzeichnis) verfügbar.
Das Projekt wurde mit Python 3.10 und höher getestet. Installieren Sie die Abhängigkeiten mit: pip3 install -r requirements.txt.
orjson, xxhash, rich, rich-argparse, RestrictedPython, requests, urllib3, pySigma, evtx (pyevtx-rs), jinja2, lxml, chardet, psutil, pyyaml, py7zrpy7zr wird nur importiert, wenn eine -Eingabedatei geöffnet wird; ZIP, gzip und bzip2 verwenden die Standardbibliothek.⚠️ Auf einigen Systemen (Mac, ARM usw.) erfordert die Python-Bibliothek evtx möglicherweise die Installation von Rust und Cargo.
Schauen Sie sich (alte) Tutorials von anderen an (EN, ES und FR) hier.
Hilfe ist verfügbar mit:
python3 zircolite.py -h
Wenn Ihre EVTX-Dateien die Erweiterung ".evtx" haben:
# 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
Sie können native Sigma-Regeln (YAML) direkt verwenden:
# Einzelne YAML-Regel
python3 zircolite.py --evtx sample.evtx --ruleset path/to/rule.yml
# Verzeichnis mit Sigma-Regeln
python3 zircolite.py --evtx sample.evtx --ruleset ./sigma/rules/windows/process_creation
# Mit pySigma-Pipelines
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources
Zircolite erkennt das Logformat in den meisten Fällen automatisch, daher sind explizite Formatflags optional:
# Automatische Erkennung (empfohlen) – Zircolite identifiziert das Format automatisch
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
# Explizite Formatflags (überschreiben die automatische Erkennung)
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 kann eine Datei oder ein Ordner sein. Bei einem Ordner werden alle Logdateien im aktuellen Ordner und in Unterordnern ausgewählt (mit --no-recursion deaktivierbar).--file-pattern kann ein benutzerdefiniertes Glob-Muster für die Dateiauswahl angegeben werden.--no-auto-detect kann die automatische Formaterkennung deaktiviert werden.[!TIP] Wenn Sie das Tool ausprobieren möchten, können Sie es mit EVTX-ATTACK-SAMPLES (EVTX-Dateien) testen.
# Docker-Image pullen
docker pull wagga40/zircolite:latest
# Wenn sich Ihre Logs und Regeln in einem bestimmten Verzeichnis befinden
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 durch das Verzeichnis (nur absoluter Pfad), in dem Ihre Logs und Regeln/Rulesets gespeichert sind.Bei mehreren Dateien misst Zircolite diese anhand des verfügbaren RAM und der CPU, wählt einen Datenbankmodus (eine gemeinsame Datenbank oder eine pro Datei) und entscheidet, ob die parallele Verarbeitung sich lohnt – danach passt es die Anzahl der Worker bei laufendem Betrieb an den Speicherdruck an.
python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json
Überschreiben Sie all dies mit --no-auto-mode, --unified-db (eine Datenbank für alle Dateien, was für dateiübergreifende Korrelationsregeln erforderlich ist), --no-parallel oder --parallel-workers N. Siehe Automatische Verarbeitungsoptimierung, um zu erfahren, wie die Wahl getroffen wird.
Für komplexe oder wiederholte Analyse-Workflows verwenden Sie eine YAML-Konfigurationsdatei:
# Eine vollständig kommentierte Konfigurationsdatei erzeugen
python3 zircolite.py --generate-config my_config.yaml
# Damit ausführen
python3 zircolite.py --yaml-config my_config.yaml
# CLI-Argumente überschreiben die Datei
python3 zircolite.py --yaml-config my_config.yaml --evtx ./other_logs/
Die generierte Datei dokumentiert jeden unterstützten Schlüssel; config/zircolite_example.yaml ist ein ausführliches Beispiel. Siehe YAML-Konfiguration für die Zusammenführungsregeln und die Optionen, die keine YAML-Entsprechung haben.
python3 zircolite.py -U
Alternativ, wenn Sie Task (go-task) verwenden, führen Sie task update-rules aus dem Projektstammverzeichnis aus, um die Rulesets aus Zircolite-Rules-v2 zu aktualisieren. Siehe Dokumentation für andere Aufgaben (Docker-Build, Bereinigung usw.).
[!IMPORTANT]
Bitte beachten Sie, dass diese Rulesets bereitgestellt werden, um Zircolite sofort nutzen zu können, aber Sie sollten Ihre eigenen Rulesets erstellen, da diese laut oder langsam sein können. Diese automatisch aktualisierten Rulesets sind im eigenen Repository verfügbar: Zircolite-Rules-v2.
Zwei Konfigurationsfunktionen formen Ereignisse bei der Aufnahme, beide in config/config.yaml:
Hashes-Feld (SHA1=abc123,MD5=def456,SHA256=789xyz) wird zu separaten SHA1-, MD5- und SHA256-Feldern, sodass Regeln direkt einen Hash abgleichen können.split:
Hashes:
separator: ","
equal: "="
Siehe Feldaufteilung und Feldtransformationen für die vollständige Konfiguration, die mitgelieferten Transformationen und wie Sie eigene testen können.
Die vollständige Dokumentation ist hier verfügbar.
Die Mini-GUI kann vollständig offline verwendet werden. Sie ermöglicht die Anzeige und Suche in Ergebnissen. Sie können automatisch ein Mini-GUI-„Paket“ mit der Option --package erzeugen. Verwenden Sie --package-dir, um das Ausgabeverzeichnis anzugeben. Wie Sie die Mini-GUI verwenden, erfahren Sie in der Dokumentation hier.



Englisch: Russ McRee hat auf seinem Blog ein ausführliches Tutorial zu SIGMA und Zircolite veröffentlicht.
Spanisch: César Marín hat ein Tutorial auf Spanisch hier veröffentlicht.
Französisch: IT-connect.fr hat ein ausführliches Tutorial zu Zircolite auf Französisch veröffentlicht.
Französisch: IT-connect.fr hat ebenfalls einen Hack-the-Box-Challenge-Write-up mit Zircolite veröffentlicht.
evtx_dump steht unter der MIT-Lizenz..7z