
Zircolite v3.8.1
Автономный инструмент обнаружения на основе SIGMA для журналов EVTX, Auditd и Sysmon для Linux

Автономный инструмент обнаружения на основе SIGMA для логов EVTX, Auditd, Sysmon for Linux, XML, CSV или JSONL/NDJSON

Zircolite — это автономный инструмент, написанный на Python 3, который позволяет использовать правила SIGMA для:
- MS Windows EVTX (форматы EVTX, XML и JSONL)
- логов Auditd
- Sysmon for Linux
- EVTXtract
- логов CSV и XML
- логов JSON Array
Ключевые возможности
- Быстрота: 452 554 события против 4 319 правил Sigma за 11,6 с — в 2,1 раза быстрее Hayabusa и в 9,8 раза быстрее Chainsaw на тех же логах, при том что оба этих инструмента написаны на Rust. См. бенчмарк.
- Автоматическое определение типа логов: автоматически распознаёт форматы логов и поля временных меток с помощью magic bytes, анализа содержимого и резервного механизма на основе регулярных выражений — в большинстве случаев указывать флаги формата не нужно.
- Множество входных форматов: поддерживает различные форматы логов, включая EVTX, JSON Lines, JSON Arrays, CSV, XML и другие. Поддерживаются сжатые и архивированные логи (gzip, bzip2, ZIP, 7-Zip); для зашифрованных ZIP/7z используйте
--archive-password. - Нативная поддержка Sigma: Zircolite может напрямую использовать нативные правила Sigma (YAML), преобразуя их с помощью pySigma.
- Бэкенд SIGMA: основан на бэкенде SIGMA (SQLite) и не использует внутреннее преобразование SIGMA во что-либо иное.
- Продвинутая обработка логов: может манипулировать входными логами, разделяя поля и применяя преобразования, что обеспечивает более гибкий и мощный анализ логов.
- Преобразования полей: применяйте пользовательские преобразования на Python к полям во время обработки (например, декодирование Base64, преобразование hex в ASCII).
- Гибкий экспорт: Zircolite может экспортировать результаты в множество форматов с помощью Jinja шаблонов, включая JSON, CSV, JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF, ATT&CK Navigator и другие.
- Насыщенный вывод в терминал: результаты обнаружения отображаются в таблицах, отсортированных по критичности, с идентификаторами техник MITRE ATT&CK, тепловой картой тактик ATT&CK, метриками покрытия правил и кликабельными ссылками на выходные файлы.
Вы можете использовать Zircolite напрямую с Python или скачать автономный бинарный файл, не требующий установки Python.
Документация доступна здесь (отдельный сайт) или здесь (каталог репозитория).
Требования / Установка
[!NOTE] Всё в этом разделе относится только к запуску Zircolite из исходного кода. Автономные бинарные файлы и Docker-образ содержат собственный Python, все зависимости и скомпилированное ядро: им не нужны ни Python, ни менеджер пакетов, ни компилятор C.
Проект протестирован с Python 3.10 и выше. Зависимости объявлены в pyproject.toml; установите их из клонированного репозитория с помощью PDM (pdm install), uv (uv sync) или Poetry (poetry install).
Примеры ниже запускают python3 zircolite.py: активируйте окружение, созданное инструментом, или добавьте префикс pdm run, uv run или poetry run.
Зависимости
- Обязательные:
orjson,xxhash,rich,rich-argparse,RestrictedPython,requests,urllib3,pySigma,evtx(pyevtx-rs),jinja2,lxml,chardet,psutil,pyyaml,py7zr,ijson,pyahocorasick,pyroaring py7zrимпортируется только при открытии входного файла.7z; ZIP, gzip и bzip2 используют стандартную библиотеку.
⚠️ Сначала установите компилятор C
Установка из исходного кода компилирует ядро выравнивания Zircolite с помощью Cython — но только если компилятор C уже присутствует. Без него установка всё равно завершится успешно, и каждый запуск будет выравнивать события на Python, что медленнее. Бинарные файлы и Docker-образ собраны с уже скомпилированным ядром, поэтому их это не касается.
Поэтому установите инструментарий до pdm install:
| Платформа | Предварительное требование |
|---|---|
| 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 устанавливать не нужно: это требование времени сборки, он загружается в изолированное окружение сборки и никогда не добавляется в ваше окружение.
Автономные бинарные файлы
Каждый релиз публикует самодостаточный пакет для каждой платформы. Каждый содержит собственный Python и все зависимости, поэтому ничего не нужно устанавливать заранее.
| Цель | Архив | Работает на |
|---|---|---|
linux-x64 | Zircolite-<version>-linux-x64.zip | glibc 2.28 или новее: RHEL 8, Debian 10, Ubuntu 20.04 и новее |
linux-arm64 | Zircolite-<version>-linux-arm64.zip | glibc 2.28 или новее |
macos-arm64 | Zircolite-<version>-macos-arm64.zip | macOS 15 или новее, Apple silicon |
windows-x64 | Zircolite-<version>-windows-x64.zip | Windows 10 или новее |
windows-arm64 | Zircolite-<version>-windows-arm64.zip | Windows 10 или новее, ARM64 |
Для Intel Mac и дистрибутивов на musl, таких как Alpine, бинарных файлов нет; используйте там Python или Docker.
unzip Zircolite-<version>-linux-x64.zip
cd Zircolite-<version>-linux-x64
./Zircolite --events sysmon.evtx --ruleset rules/rules_windows_merged.json
В примерах ниже замените python3 zircolite.py на путь к исполняемому файлу.
Бинарные файлы не подписаны кодом. macOS помещает загруженный через браузер файл в карантин, извлечённые файлы наследуют этот флаг, и затем Gatekeeper блокирует исполняемый файл и каждую библиотеку в _internal/. Снимите его со всего каталога рекурсивно перед первым запуском:
xattr -dr com.apple.quarantine Zircolite-<version>-macos-arm64
Быстрый старт
Ознакомьтесь с (старыми) руководствами, созданными другими (EN, ES и FR) здесь.
Файлы EVTX
Справка доступна с помощью:
# Don't forget to prefix with "pdm run" or "uv run" or "poetry run" when needed
python3 zircolite.py -h
Если ваши файлы EVTX имеют расширение ".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 можно опустить: тогда Zircolite использует rules/rules_windows_merged.json, который покрывает Sysmon и общие каналы Windows.
Использование нативных правил Sigma (YAML)
Вы можете использовать нативные правила Sigma (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