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

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

Zircolite применяет правила обнаружения Sigma к:
- MS Windows EVTX (форматы EVTX, XML и JSONL)
- Логам Auditd
- Sysmon for Linux
- EVTXtract
- Логам CSV и XML
- Логам в формате JSON Array
Ключевые возможности
- Определение формата: Автоматически распознаёт форматы логов и поля временных меток. Читает входные данные gzip, bzip2, ZIP и 7-Zip; для зашифрованных ZIP/7z пароль берётся из
--ask-archive-passwordили переменной окруженияZIRCOLITE_ARCHIVE_PASSWORD. - Правила Sigma: Преобразует нативные правила YAML с помощью SQLite-бэкенда pySigma или загружает предварительно сконвертированные наборы правил JSON.
- Корреляции: Подсчёты, статистика, временные последовательности, условия отсутствия и цепочки правил, с сопутствующими событиями в каждом оповещении. Унифицированный режим поддерживает корреляции между файлами.
- Обработка полей: Разделяет поля «ключ-значение» и применяет преобразования Python, включая декодирование Base64 и hex.
- Экспорт: JSON, CSV и Jinja шаблоны для JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF и ATT&CK Navigator.
- Вывод в терминал: Обнаружения, отсортированные по критичности, техники и тактики MITRE ATT&CK, покрытие правил и ссылки на вывод.
Вы можете использовать Zircolite напрямую с Python или скачать автономный бинарный файл, не требующий установки Python.
Читайте сайт документации или документацию репозитория.
Требования / Установка
[!NOTE] Установка из исходников требует Python и менеджер пакетов. Автономные бинарные файлы и образ Docker включают Python, зависимости и скомпилированное ядро.
Проект протестирован с Python 3.10 и выше. Зависимости объявлены в
pyproject.toml; установите их из клонированного репозитория с помощью
PDM (pdm install), uv
(uv sync) или Poetry (poetry install).
Примеры ниже запускают python3 zircolite.py: активируйте окружение, созданное инструментом,
или добавьте к ним префикс pdm run, uv run или poetry run.
Зависимости
Зависимости объявлены в pyproject.toml. Их роли описаны в разделе
Зависимости.
⚠️ Сначала установите компилятор C
Установка из исходников использует компилятор C для сборки ядра уплощения на Cython. Если компиляция
не удалась, бэкенд сборки выдаёт предупреждение и установка продолжается с более медленным ядром Python.
Установите ZIRCOLITE_REQUIRE_NATIVE=1, чтобы требовать успешной нативной сборки.
Для нативного ускорения установите инструментарий до 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
Быстрый старт
Учебные руководства охватывают более ранние версии на английском, испанском и французском языках.
Файлы EVTX
Справка доступна с помощью:
# Prefix with pdm run, uv run or poetry run if the environment is not active
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
--pipeline-list показывает установленные конвейеры. Указание не установленного останавливает
запуск с кодом выхода 2, до того как будет преобразовано хоть одно правило.
Другие форматы логов
Zircolite автоматически определяет формат логов в большинстве случаев, поэтому явные флаги формата необязательны:
# 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
# Explicit format flags (override auto-detection)
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json --auditd
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json --sysmon4linux
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --jsononly
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --json-array
python3 zircolite.py --events <CSV_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --csv-input
python3 zircolite.py --events <XML_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --xml-input