
Zircolite v3.8.0
EVTX、Auditd、Sysmon for Linuxのログを対象としたスタンドアロンSIGMAベースの検出ツール
EVTX、Auditd、Sysmon for Linux、XML、CSV、JSON ログ向けのスタンドアロン Sigma ベース検出
Zircolite は、あなたのログに対して Sigma ルールを実行します。イベントを SQLite にフラット化し、各ルールを SQL クエリに変換して、一致したものをオフラインで、1 つのコマンドで報告します。

- 多数のログ形式を自動検出: Windows EVTX(バイナリ、XML、JSON)、Auditd、Sysmon for Linux、EVTXtract、CSV、XML、JSON、およびプレーンなものや gzip、bzip2、ZIP、7-Zip アーカイブ内のもの。
- Sigma ルールをそのまま: pySigma で変換されたネイティブ YAML、または
rules/内の既製のルールセット。相関ルールも含みます。 - 高速: コンパイル済みのフラット化カーネル、並列ワーカー、ルールのプリフィルタリング。ベンチマークを参照してください。
- フィールド処理: パックされたフィールドを分割し、サンドボックス化された Python 変換(Base64 デコード、IOC 抽出、LOLBin 検出など)を実行します。
- エクスポート: JSON、CSV、および Splunk、Elastic、OpenSearch、Timesketch、SARIF、ATT&CK Navigator 用のテンプレート。
- タイムライン: すべての検出を時系列順に 1 行ずつ、イベントの 1 行サマリー付きで、CSV または JSON lines として出力します(
--timeline)。 - Zircolite Viewer: すべてのイベントと検出を 1 つの zip にまとめ、ブラウザでオフラインで開けます。
📖 ドキュメント をお読みください。docs/ にもあります。
インストール
スタンドアロンバイナリ、インストール不要: リリースからお使いのプラットフォーム用の zip をダウンロードしてください(Linux x64 および ARM64、macOS Apple silicon、Windows x64 および ARM64)。
Docker:
docker pull wagga40/zircolite:latest
PDM を使い、Python 3.11 から 3.14 までをソースからインストール:
git clone https://github.com/wagga40/Zircolite.git
cd Zircolite
pdm use -f 3.14
pdm install
pdm use は PDM を Python 3.15 およびフリースレッドビルドから遠ざけます。これらは
まだサポートされていません。3.11 から 3.13 のいずれでも問題ありません。
uv を使用する場合:
git clone https://github.com/wagga40/Zircolite.git
cd Zircolite
uv sync --python 3.14+gil
ソースからのインストールではネイティブのフラット化カーネルをコンパイルするため、Cコンパイラが必要です。Cコンパイラがない場合は、より低速なPythonカーネルにフォールバックします。コンパイラパッケージ、バイナリの詳細(macOSの隔離属性、チェックサム)、Dockerの権限については、インストールを参照してください。
クイックスタート
# Windows logs, with the default ruleset (rules/rules_windows_merged.json)
python3 zircolite.py --events sysmon.evtx
# Linux logs: the format is detected
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json
# Native Sigma rules, through pySigma pipelines
python3 zircolite.py --events logs/ --ruleset ./sigma/rules/windows/process_creation \
--pipeline sysmon --pipeline windows-logsources
# Every event and detection, for the Zircolite Viewer
python3 zircolite.py --events logs/ --package
# The detections as a timeline, for Timeline Explorer or a spreadsheet
python3 zircolite.py --events logs/ --timeline
バイナリの場合は、python3 zircolite.py の代わりに ./Zircolite を実行します。ソースから実行する場合は、環境がアクティブでない限り、コマンドの前に pdm run(または uv run)を付けます。Docker の場合は、ログをマウントし、絶対パスを指定します:
docker run --rm --tty -v $PWD:/case/input:ro -v $PWD:/case/output \
wagga40/zircolite:latest --events /case/input -o /case/output/detected_events.json
Linux ホストでは、--user "$(id -u):$(id -g)" と -l /case/output/zircolite.log を追加してください。イメージは非特権ユーザーとして実行されるため、あなたが所有するディレクトリには書き込めません。
検出結果は detected_events.json に出力されます。試すためのログについては、EVTX-ATTACK-SAMPLES を参照してください。
[!IMPORTANT] デフォルトのルールセットには、ノイズの多いルールや低速なルールが含まれている場合があります。 環境に合わせてルールを選択し、
python3 zircolite.py -Uで更新してください。
仕組み
Zircolite は各イベントを SQLite テーブルの 1 行に平坦化し、すべての Sigma ルールをそのテーブルに対する SQL クエリに変換して、一致する行を報告します。
Zircolite Viewer
--package は、その実行のすべてのイベントを、検出結果と相関アラートを関連付けた状態で 1 つの zip に書き出します。展開して index.html を開いてください。ビューアはオフラインで動作し、概要、検出結果、任意の列で検索・フィルタ・並べ替えができるイベントテーブル、タイムライン、ATT&CK マトリクス、エンティティ、最も稀な値のスタッキング、ログオンとラテラルムーブメント、プロセスツリー、SQL コンソールを提供します。パッケージは、その元となったログと同様に扱って共有してください。詳細は Zircolite Viewer を参照してください。

ベンチマーク
10 コアの Apple M1 Max における中央値の実時間。各ツールはデフォルト設定で独自のルールを使用:
| ツール | Sysmon EVTX 4 件、478 MB | 11 チャネルにわたる EVTX 8 件、13.3 GB |
|---|---|---|
| Zircolite | 7.7 秒 | 30.2 秒 |
| Hayabusa 4.2.0 | 23.3 秒 | 500.3 秒 |
| Chainsaw 2.17.1 | 48.3 秒 | 183.0 秒 |
Zircolite は並列ワーカー(--no-parallel で無効化)により他のツールより多くのメモリを使用し、ルールセットも異なるため、検出件数は比較できません。メモリ、セットアップ、再現方法については Benchmark を参照してください。
チュートリアル、参考文献、関連プロジェクト
チュートリアル(以前のバージョン向けに執筆されたもの):
- 英語: Sigma and Zircolite、Russ McRee。
- スペイン語: Running Sigma rules on EVTX files、César Marín。
- フランス語: Windows log investigation および Hack the Box challenge write-up、IT-Connect。
参考文献:
- Florian Roth は、2021 年 10 月の EU ATT&CK Workshop で彼の SIGMA Hall of Fame において Zircolite を紹介しました。
- Zircolite は JSAC 2023 で引用・発表されました。
- 引用または使用している研究論文:
Zircolite は KAPE および Velociraptor の中でも実行できます。