
Zircolite v3.8.0
Una herramienta de detección independiente basada en SIGMA para registros de EVTX, Auditd y Sysmon de Linux

Herramienta de detección autónoma basada en SIGMA para registros EVTX, Auditd, Sysmon para Linux, XML, CSV o JSONL/NDJSON

Zircolite es una herramienta autónoma escrita en Python 3 que te permite usar reglas SIGMA sobre:
- MS Windows EVTX (formatos EVTX, XML y JSONL)
- Registros de Auditd
- Sysmon para Linux
- EVTXtract
- Registros CSV y XML
- Registros JSON Array
Características principales
- Rápida: 452.554 eventos contra 4.319 reglas Sigma en 11,6 s — 2,1× más rápida que Hayabusa y 9,8× más rápida que Chainsaw sobre los mismos registros, ambas herramientas escritas en Rust. Consulta el benchmark.
- Detección automática del tipo de registro: identifica automáticamente los formatos de registro y los campos de marca temporal mediante magic bytes, análisis de contenido y respaldo basado en regex -- no es necesario especificar flags de formato en la mayoría de los casos.
- Múltiples formatos de entrada: admite varios formatos de registro, incluidos EVTX, JSON Lines, JSON Arrays, CSV, XML y más. Se admiten registros comprimidos o archivados (gzip, bzip2, ZIP, 7-Zip); usa
--archive-passwordpara ZIP/7z cifrados. - Soporte nativo de Sigma: Zircolite puede usar directamente reglas Sigma nativas (YAML) convirtiéndolas con pySigma.
- Backend SIGMA: se basa en un backend SIGMA (SQLite) y no utiliza conversión interna de SIGMA a otra cosa.
- Manipulación avanzada de registros: puede manipular los registros de entrada dividiendo campos y aplicando transformaciones, lo que permite un análisis de registros más flexible y potente.
- Transformaciones de campos: aplica transformaciones personalizadas de Python a los campos durante el procesamiento (por ejemplo, decodificación Base64, conversión de hex a ASCII).
- Exportación flexible: Zircolite puede exportar resultados a múltiples formatos usando plantillas Jinja, incluidos JSON, CSV, JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF, ATT&CK Navigator y más.
- Salida de terminal enriquecida: los resultados de detección se muestran en tablas ordenadas por severidad con identificadores de técnicas MITRE ATT&CK, mapa de calor de tácticas ATT&CK, métricas de cobertura de reglas y enlaces clicables a los archivos de salida.
Puedes usar Zircolite directamente con Python, o descargar un binario autónomo que no necesita instalación de Python.
La documentación está disponible aquí (sitio dedicado) o aquí (directorio del repositorio).
Requisitos / Instalación
[!NOTE] Todo lo de esta sección se aplica solo cuando se ejecuta Zircolite desde el código fuente. Los binarios autónomos y la imagen Docker incluyen su propio Python, todas las dependencias y el kernel compilado: no necesitan Python, ni gestor de paquetes, ni compilador de C.
El proyecto se ha probado con Python 3.10 y superiores. Las dependencias se declaran en
pyproject.toml; instálalas desde el repositorio clonado con
PDM (pdm install), uv
(uv sync) o Poetry (poetry install).
Los ejemplos siguientes ejecutan python3 zircolite.py: activa el entorno que haya creado la herramienta,
o antepón pdm run, uv run o poetry run.
Dependencias
- Requeridas:
orjson,xxhash,rich,rich-argparse,RestrictedPython,requests,urllib3,pySigma,evtx(pyevtx-rs),jinja2,lxml,chardet,psutil,pyyaml,py7zr,ijson,pyahocorasick,pyroaring py7zrsolo se importa cuando se abre una entrada.7z; ZIP, gzip y bzip2 usan la biblioteca estándar.
⚠️ Instala primero un compilador de C
La instalación desde el código fuente compila el kernel de aplanamiento de Zircolite con Cython — pero solo si ya hay un compilador de C. Sin él, la instalación sigue teniendo éxito y cada ejecución aplana los eventos en Python en su lugar, lo cual es más lento. Los binarios y la imagen Docker se compilan con el kernel ya compilado, así que esto no les afecta.
Por lo tanto, instala el conjunto de herramientas antes de pdm install:
| Plataforma | Requisito previo |
|---|---|
| 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 en sí no necesita instalarse: es un requisito de tiempo de compilación, que se obtiene en un entorno de compilación aislado y nunca se añade a tu entorno.
Binarios autónomos
Cada release publica un paquete autocontenido por plataforma. Cada uno incluye su propio Python y todas las dependencias, por lo que no hay que instalar nada primero.
| Objetivo | Archivo | Se ejecuta en |
|---|---|---|
linux-x64 | Zircolite-<version>-linux-x64.zip | glibc 2.28 o posterior: RHEL 8, Debian 10, Ubuntu 20.04 y posteriores |
linux-arm64 | Zircolite-<version>-linux-arm64.zip | glibc 2.28 o posterior |
macos-arm64 | Zircolite-<version>-macos-arm64.zip | macOS 15 o posterior, Apple silicon |
windows-x64 | Zircolite-<version>-windows-x64.zip | Windows 10 o posterior |
windows-arm64 | Zircolite-<version>-windows-arm64.zip | Windows 10 o posterior, ARM64 |
Los Mac con Intel y las distribuciones basadas en musl como Alpine no tienen binario; usa Python o Docker en esos casos.
unzip Zircolite-<version>-linux-x64.zip
cd Zircolite-<version>-linux-x64
./Zircolite --events sysmon.evtx --ruleset rules/rules_windows_merged.json
En los ejemplos siguientes, sustituye python3 zircolite.py por la ruta al ejecutable.
Los binarios no están firmados digitalmente. macOS pone en cuarentena una descarga hecha con un navegador, los
archivos extraídos heredan el flag, y Gatekeeper entonces bloquea el ejecutable y todas las
bibliotecas en _internal/. Elimínalo de todo el directorio, de forma recursiva, antes de la primera
ejecución:
xattr -dr com.apple.quarantine Zircolite-<version>-macos-arm64
Inicio rápido
Consulta los tutoriales (antiguos) hechos por otros (EN, ES y FR) aquí.
Archivos EVTX
La ayuda está disponible con:
# Don't forget to prefix with "pdm run" or "uv run" or "poetry run" when needed
python3 zircolite.py -h
Si tus archivos EVTX tienen la extensión ".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
Se puede omitir --ruleset: Zircolite entonces usa rules/rules_windows_merged.json, que
cubre Sysmon y los canales genéricos de Windows.
Uso de reglas Sigma nativas (YAML)
Puedes usar reglas Sigma nativas (YAML) directamente:
# 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