Retour aux mises à jour
New releaseAug 5, 2026

Zircolite v3.8.1

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

Partager

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

python version

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-password pour 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
  • py7zr n'est importé que lorsqu'une entrée .7z est 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 :

PlateformePrérequis
Debian, Ubuntuapt install build-essential python3-dev
RHEL, Fedora, Rockydnf install gcc python3-devel
Alpineapk add build-base python3-dev
macOSxcode-select --install
WindowsBuild 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.

CibleArchiveFonctionne sur
linux-x64Zircolite-<version>-linux-x64.zipglibc 2.28 ou ultérieur : RHEL 8, Debian 10, Ubuntu 20.04 et plus récents
linux-arm64Zircolite-<version>-linux-arm64.zipglibc 2.28 ou ultérieur
macos-arm64Zircolite-<version>-macos-arm64.zipmacOS 15 ou ultérieur, Apple silicon
windows-x64Zircolite-<version>-windows-x64.zipWindows 10 ou ultérieur
windows-arm64Zircolite-<version>-windows-arm64.zipWindows 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) :

Catégories