
Zircolite v3.8.1
Un outil de détection autonome basé sur SIGMA pour les journaux EVTX, Auditd et Sysmon pour Linux.

Outil de détection autonome basé sur SIGMA pour les journaux EVTX, Auditd, Sysmon for Linux, XML, CSV ou JSONL/NDJSON

Zircolite est un outil autonome écrit en Python 3 qui vous permet d'utiliser des règles SIGMA sur :
- MS Windows EVTX (formats EVTX, XML et JSONL)
- Journaux Auditd
- Sysmon for Linux
- EVTXtract
- Journaux CSV et XML
- Journaux JSON Array
Fonctionnalités clés
- Rapide : 452 554 événements contre 4 319 règles Sigma en 11,6 s — 2,1× plus rapide que Hayabusa et 9,8× plus rapide que Chainsaw sur les mêmes journaux, tous deux des outils Rust. Voir le benchmark.
- Détection automatique du type de journal : identifie automatiquement les formats de journaux et les champs d'horodatage à l'aide des magic bytes, de l'analyse du contenu et d'un repli basé sur des expressions régulières — plus besoin de spécifier des indicateurs de format dans la plupart des cas.
- Formats d'entrée multiples : prend en charge divers formats de journaux, notamment EVTX, JSON Lines, JSON Arrays, CSV, XML, etc. Les journaux compressés ou archivés (gzip, bzip2, ZIP, 7-Zip) sont pris en charge ; utilisez
--archive-passwordpour les ZIP/7z chiffrés. - Prise en charge native de Sigma : Zircolite peut utiliser directement les règles Sigma natives (YAML) en les convertissant avec pySigma.
- Backend SIGMA : il est basé sur un backend SIGMA (SQLite) et n'utilise pas de conversion interne SIGMA-vers-quelque-chose.
- Manipulation avancée des journaux : il peut manipuler les journaux d'entrée en divisant les champs et en appliquant des transformations, permettant une analyse de journaux plus flexible et plus puissante.
- Transformations de champs : appliquez des transformations Python personnalisées aux champs pendant le traitement (par exemple, décodage Base64, conversion hex-vers-ASCII).
- Export flexible : Zircolite peut exporter les résultats vers plusieurs formats à l'aide de templates Jinja, notamment JSON, CSV, JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF, ATT&CK Navigator, et plus encore.
- Sortie terminal enrichie : résultats de détection affichés dans des tableaux triés par sévérité avec les identifiants de techniques MITRE ATT&CK, heatmap des tactiques ATT&CK, métriques de couverture des règles et liens cliquables vers les fichiers de sortie.
Vous pouvez utiliser Zircolite directement avec Python, ou télécharger un binaire autonome qui ne nécessite aucune installation de Python.
La documentation est disponible ici (site dédié) ou ici (répertoire du dépôt).
Prérequis / Installation
[!NOTE] Tout ce qui figure dans cette section s'applique uniquement lors de l'exécution de Zircolite depuis les sources. Les binaires autonomes et l'image Docker embarquent leur propre Python, toutes les dépendances et le noyau compilé : ils ne nécessitent ni Python, ni gestionnaire de paquets, ni compilateur C.
Le projet a été testé avec Python 3.10 et versions supérieures. Les dépendances sont déclarées dans
pyproject.toml ; installez-les depuis le dépôt cloné avec
PDM (pdm install), uv
(uv sync) ou Poetry (poetry install).
Les exemples ci-dessous exécutent python3 zircolite.py : activez l'environnement créé par l'outil,
ou préfixez-les avec pdm run, uv run ou poetry run.
Dépendances
- Requises :
orjson,xxhash,rich,rich-argparse,RestrictedPython,requests,urllib3,pySigma,evtx(pyevtx-rs),jinja2,lxml,chardet,psutil,pyyaml,py7zr,ijson,pyahocorasick,pyroaring py7zrn'est importé que lorsqu'une entrée.7zest ouverte ; ZIP, gzip et bzip2 utilisent la bibliothèque standard.
⚠️ Installez d'abord un compilateur C
L'installation depuis les sources compile le noyau d'aplatissement de Zircolite avec Cython — mais uniquement si un compilateur C est déjà présent. Sans celui-ci, l'installation réussit quand même et chaque exécution aplatit les événements en Python à la place, ce qui est plus lent. Les binaires et l'image Docker sont construits avec le noyau déjà compilé, donc cela ne les concerne pas.
Installez donc la chaîne d'outils avant pdm install :
| Plateforme | Prérequis |
|---|---|
| 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 lui-même n'a pas besoin d'être installé : c'est une dépendance de compilation, récupérée dans un environnement de build isolé et jamais ajoutée à votre environnement.
Binaires autonomes
Chaque release publie un paquet autonome par plateforme. Chacun embarque son propre Python et toutes les dépendances, donc rien n'a besoin d'être installé au préalable.
| Cible | Archive | Fonctionne sur |
|---|---|---|
linux-x64 | Zircolite-<version>-linux-x64.zip | glibc 2.28 ou ultérieur : RHEL 8, Debian 10, Ubuntu 20.04 et plus récents |
linux-arm64 | Zircolite-<version>-linux-arm64.zip | glibc 2.28 ou ultérieur |
macos-arm64 | Zircolite-<version>-macos-arm64.zip | macOS 15 ou ultérieur, Apple silicon |
windows-x64 | Zircolite-<version>-windows-x64.zip | Windows 10 ou ultérieur |
windows-arm64 | Zircolite-<version>-windows-arm64.zip | Windows 10 ou ultérieur, ARM64 |
Les Mac Intel et les distributions basées sur musl telles qu'Alpine n'ont pas de binaire ; utilisez Python ou Docker dans ce cas.
unzip Zircolite-<version>-linux-x64.zip
cd Zircolite-<version>-linux-x64
./Zircolite --events sysmon.evtx --ruleset rules/rules_windows_merged.json
Dans les exemples ci-dessous, remplacez python3 zircolite.py par le chemin vers l'exécutable.
Les binaires ne sont pas signés numériquement. macOS met en quarantaine un téléchargement effectué avec un navigateur, les
fichiers extraits héritent de l'indicateur, et Gatekeeper bloque alors l'exécutable et chaque
bibliothèque dans _internal/. Supprimez-le de tout le répertoire, récursivement, avant la première
exécution :
xattr -dr com.apple.quarantine Zircolite-<version>-macos-arm64
Démarrage rapide
Consultez les (anciens) tutoriels réalisés par d'autres (EN, ES et FR) ici.
Fichiers EVTX
L'aide est disponible avec :
# Don't forget to prefix with "pdm run" or "uv run" or "poetry run" when needed
python3 zircolite.py -h
Si vos fichiers EVTX ont l'extension ".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 peut être omis : Zircolite utilise alors rules/rules_windows_merged.json, qui
couvre Sysmon et les canaux Windows génériques.
Utilisation des règles Sigma natives (YAML)
Vous pouvez utiliser directement les règles Sigma natives (YAML) :