
Zircolite v4.0.0
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 applique les règles de détection Sigma aux :
- 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
- Détection de format : identifie automatiquement les formats de journaux et les champs d'horodatage. Lit les entrées gzip, bzip2, ZIP et 7-Zip ; les entrées ZIP/7z chiffrées prennent leur mot de passe depuis
--ask-archive-passwordou la variable d'environnementZIRCOLITE_ARCHIVE_PASSWORD. - Règles Sigma : convertit les règles YAML natives avec le backend SQLite de pySigma ou charge des ensembles de règles JSON préconvertis.
- Corrélations : comptages, statistiques, séquences temporelles, conditions d'absence et règles chaînées, avec les événements de support dans chaque alerte. Le mode unifié prend en charge les corrélations inter-fichiers.
- Traitement des champs : découpe les champs clé-valeur et applique des transformations Python, y compris le décodage Base64 et hexadécimal.
- Export : JSON, CSV et templates Jinja pour JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF et ATT&CK Navigator.
- Sortie terminal : détections triées par sévérité, techniques et tactiques MITRE ATT&CK, couverture des règles et liens de sortie.
Vous pouvez utiliser Zircolite directement avec Python, ou télécharger un binaire autonome qui ne nécessite aucune installation de Python.
Consultez le site de documentation ou la documentation du dépôt.
Prérequis / Installation
[!NOTE] Les installations depuis les sources nécessitent Python et un gestionnaire de paquets. Les binaires autonomes et l'image Docker incluent Python, les dépendances et le noyau compilé.
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
Les dépendances sont déclarées dans pyproject.toml. Voir
Dependencies pour leurs rôles.
⚠️ Installez d'abord un compilateur C
Les installations depuis les sources utilisent un compilateur C pour construire le noyau d'aplatissement Cython. Si la compilation
échoue, le backend de build avertit et l'installation se poursuit avec le noyau Python plus lent.
Définissez ZIRCOLITE_REQUIRE_NATIVE=1 pour exiger une compilation native réussie.
Pour l'accélération native, installez 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 est installé automatiquement comme dépendance de build.
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 comme 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 de l'exécutable.
Les binaires ne sont pas signés. macOS met en quarantaine un téléchargement effectué avec un navigateur, les
fichiers extraits héritent du drapeau, 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
Les tutoriels couvrent les versions antérieures en anglais, espagnol et français.
Fichiers EVTX
L'aide est disponible avec :
# Prefix with pdm run, uv run or poetry run if the environment is not active
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) :
# 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 affiche les pipelines installés. En nommer un qui n'est pas installé arrête
l'exécution avec le code de sortie 2, avant toute conversion de règle.
Autres formats de journaux
Zircolite détecte automatiquement le format de journal dans la plupart des cas, donc les indicateurs de format explicites sont facultatifs :
# 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