
Zircolite v4.0.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 aplica reglas de detección Sigma a:
- MS Windows EVTX (formatos EVTX, XML y JSONL)
- Registros de Auditd
- Sysmon para Linux
- EVTXtract
- Registros CSV y XML
- Registros de arrays JSON
Características principales
- Detección de formato: Identifica automáticamente los formatos de registro y los campos de marca temporal. Lee entradas gzip, bzip2, ZIP y 7-Zip; las entradas ZIP/7z cifradas toman su contraseña de
--ask-archive-passwordo de la variable de entornoZIRCOLITE_ARCHIVE_PASSWORD. - Reglas Sigma: Convierte reglas YAML nativas con el backend SQLite de pySigma o carga conjuntos de reglas JSON preconvertidos.
- Correlaciones: Recuentos, estadísticas, secuencias temporales, condiciones de ausencia y reglas encadenadas, con eventos de soporte en cada alerta. El modo unificado admite correlaciones entre archivos.
- Procesamiento de campos: Divide campos clave-valor y aplica transformaciones de Python, incluida la decodificación Base64 y hexadecimal.
- Exportación: JSON, CSV y plantillas Jinja para JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF y ATT&CK Navigator.
- Salida de terminal: Detecciones ordenadas por severidad, técnicas y tácticas de MITRE ATT&CK, cobertura de reglas y enlaces de salida.
Puedes usar Zircolite directamente con Python, o descargar un binario autónomo que no necesita instalación de Python.
Lee el sitio de documentación o la documentación del repositorio.
Requisitos / Instalación
[!NOTE] Las instalaciones desde código fuente necesitan Python y un gestor de paquetes. Los binarios autónomos y la imagen Docker incluyen Python, las dependencias y el kernel compilado.
El proyecto se ha probado con Python 3.10 y versiones 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 prefaplícalos con pdm run, uv run o poetry run.
Dependencias
Las dependencias se declaran en pyproject.toml. Consulta
Dependencias para conocer sus funciones.
⚠️ Instala primero un compilador de C
Las instalaciones desde código fuente usan un compilador de C para compilar el kernel de aplanamiento en Cython. Si la compilación
falla, el backend de compilación avisa y la instalación continúa con el kernel de Python más lento.
Establece ZIRCOLITE_REQUIRE_NATIVE=1 para exigir una compilación nativa correcta.
Para la aceleración nativa, instala la cadena 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 se instala automáticamente como dependencia de compilación.
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 previamente.
| Destino | 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 indicador y Gatekeeper bloquea entonces el ejecutable y todas las bibliotecas de _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
Los tutoriales cubren versiones anteriores en inglés, español y francés.
Archivos EVTX
La ayuda está disponible con:
# Prefix with pdm run, uv run or poetry run if the environment is not active
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
--ruleset puede omitirse: Zircolite usa entonces 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
# With pySigma pipelines
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources
--pipeline-list muestra las pipelines instaladas. Indicar una que no está instalada detiene
la ejecución con el código de salida 2, antes de que se convierta ninguna regla.
Otros formatos de registro
Zircolite autodetecta el formato de registro en la mayoría de los casos, por lo que los indicadores explícitos de formato son opcionales:
# 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