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


Zircolite — это автономный инструмент, написанный на Python 3, который позволяет использовать правила SIGMA для:
--archive-password для зашифрованных ZIP/7z.Вы можете использовать Zircolite напрямую с Python.
Документация доступна здесь (отдельный сайт) или здесь (каталог репозитория).
Проект протестирован на Python 3.10 и выше. Установите зависимости с помощью: pip3 install -r requirements.txt.
orjson, xxhash, rich, rich-argparse, RestrictedPython, requests, urllib3, pySigma, evtx (pyevtx-rs), jinja2, lxml, chardet, psutil, pyyaml, py7zrpy7zr импортируется только при открытии входного файла ; ZIP, gzip и bzip2 используют стандартную библиотеку.⚠️ На некоторых системах (Mac, ARM и т. д.) библиотека Python evtx может требовать установки Rust и Cargo.
Ознакомьтесь со (старыми) руководствами, созданными другими (EN, ES и FR), здесь.
Справка доступна с помощью:
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
Вы можете напрямую использовать нативные правила 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
В большинстве случаев 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
--events может быть файлом или папкой. Если это папка, будут выбраны все файлы журналов в текущей папке и подпапках (используйте --no-recursion для отключения).--file-pattern для указания пользовательского glob-шаблона для выбора файлов.--no-auto-detect, чтобы отключить автоматическое определение формата.[!TIP] Если вы хотите попробовать инструмент, вы можете протестировать его с помощью EVTX-ATTACK-SAMPLES (файлы EVTX).
# Pull the Docker image
docker pull wagga40/zircolite:latest
# If your logs and rules are in a specific directory
docker run --rm --tty \
-v $PWD:/case/input:ro \
-v $PWD:/case/output \
wagga40/zircolite:latest \
-e /case/input \
-o /case/output/detected_events.json \
-r /case/input/a_sigma_rule.yml
$PWD на каталог (только абсолютный путь), в котором хранятся ваши журналы и правила/наборы правил.При наличии нескольких файлов Zircolite оценивает их относительно доступной оперативной памяти и CPU, выбирает режим базы данных (одна общая база данных или одна на файл) и решает, стоит ли обрабатывать их параллельно, — а затем по мере выполнения адаптирует количество рабочих процессов к нагрузке на память.
python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json
Вы можете переопределить любой из этих параметров с помощью --no-auto-mode, --unified-db (одна база данных для всех файлов — это то, что нужно правилам корреляции между файлами), --no-parallel или --parallel-workers N. О том, как делается выбор, см. в разделе Автоматическая оптимизация обработки.
Для сложных или повторяющихся рабочих процессов анализа используйте YAML-файл конфигурации:
# Generate a fully commented configuration file
python3 zircolite.py --generate-config my_config.yaml
# Run with it
python3 zircolite.py --yaml-config my_config.yaml
# CLI arguments override the file
python3 zircolite.py --yaml-config my_config.yaml --evtx ./other_logs/
Сгенерированный файл описывает каждый поддерживаемый ключ; config/zircolite_example.yaml — это рабочий пример. См. YAML-конфигурация для получения правил слияния и параметров, не имеющих YAML-эквивалента.
python3 zircolite.py -U
Альтернативно, если вы используете Task (go-task), выполните task update-rules из корня проекта, чтобы обновить правила из Zircolite-Rules-v2. Другие задачи (сборка Docker, очистка и т. д.) описаны в документации.
[!IMPORTANT]
Обратите внимание, что эти наборы правил предоставляются для использования Zircolite из коробки, но вам следует создавать собственные наборы правил, так как они могут быть шумными или медленными. Эти автоматически обновляемые наборы правил доступны в выделенном репозитории: Zircolite-Rules-v2.
Две функции конфигурации формируют события по мере их поступления; обе находятся в config/config.yaml:
Hashes Sysmon (SHA1=abc123,MD5=def456,SHA256=789xyz) становится отдельными полями SHA1, MD5 и SHA256, поэтому правила могут напрямую сопоставлять хэш.split:
Hashes:
separator: ","
equal: "="
Полную конфигурацию, преобразования, поставляемые с Zircolite, и способы тестирования собственных см. в разделах Разделение полей и Преобразования полей.
Полная документация доступна здесь.
Мини-GUI можно использовать полностью офлайн. Он позволяет отображать и искать результаты. Вы можете автоматически сгенерировать «пакет» Mini-GUI с помощью опции --package. Используйте --package-dir, чтобы указать выходной каталог. Чтобы узнать, как использовать Mini-GUI, обратитесь к документации здесь.



Английский: Russ McRee опубликовал подробное руководство по SIGMA и Zircolite в своём блоге.
Испанский: César Marín опубликовал руководство на испанском языке здесь.
Французский: IT-connect.fr опубликовал обширное руководство по Zircolite на французском языке.
Французский: IT-connect.fr также опубликовал разбор задания Hack the Box с использованием Zircolite.
evtx_dump распространяется под лицензией MIT..7z