アップデート一覧に戻る
New releaseSep 21, 2026

Zircolite v4.0.0

EVTX、Auditd、Sysmon for Linuxのログを対象としたスタンドアロンSIGMAベースの検出ツール

共有

EVTX、Auditd、Sysmon for Linux、XML、CSV、または JSONL/NDJSON ログ向けのスタンドアロン SIGMA ベース検出ツール

python version

Zircolite は Sigma 検出ルールを以下に適用します:

  • MS Windows EVTX (EVTX、XML、および JSONL 形式)
  • Auditd ログ
  • Sysmon for Linux
  • EVTXtract
  • CSV および XML ログ
  • JSON 配列ログ

主な機能

  • 形式検出: ログ形式とタイムスタンプフィールドを自動的に識別します。gzip、bzip2、ZIP、7-Zip 入力を読み取ります。暗号化された ZIP/7z 入力は、--ask-archive-password または ZIRCOLITE_ARCHIVE_PASSWORD 環境変数からパスワードを取得します。
  • Sigma ルール: pySigma の SQLite バックエンドでネイティブ YAML ルールを変換するか、事前変換済みの JSON ルールセットを読み込みます。
  • 相関: カウント、統計、時間的シーケンス、不在条件、および連鎖ルールを、各アラートのサポートイベントとともに提供します。統合モードはファイル間の相関をサポートします。
  • フィールド処理: キーと値のフィールドを分割し、Base64 や hex デコードを含む Python 変換を適用します。
  • エクスポート: JSON、CSV、および JSONL、Splunk、Elastic、OpenSearch、Timesketch、SARIF、ATT&CK Navigator 用の Jinja テンプレート。
  • ターミナル出力: 重大度でソートされた検出結果、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 コンパイラをインストールしてください

ソースからのインストールでは、Cython フラット化カーネルをビルドするために C コンパイラを使用します。コンパイルが 失敗した場合、ビルドバックエンドは警告を出し、より低速な Python カーネルでインストールを続行します。 ネイティブビルドを必須にするには ZIRCOLITE_REQUIRE_NATIVE=1 を設定してください。

ネイティブアクセラレーションを利用するには、pdm install の前にツールチェーンをインストールしてください:

プラットフォーム前提条件
Debian、Ubuntuapt install build-essential python3-dev
RHEL、Fedora、Rockydnf install gcc python3-devel
Alpineapk add build-base python3-dev
macOSxcode-select --install
WindowsBuild Tools for Visual Studio (「Desktop development with C++」)

Cython はビルド依存関係として自動的にインストールされます。

スタンドアロンバイナリ

各リリースでは、プラットフォームごとに自己完結型の パッケージが公開されています。それぞれが独自の Python とすべての依存関係を同梱しているため、事前に何も インストールする必要はありません。

ターゲットアーカイブ動作環境
linux-x64Zircolite-<version>-linux-x64.zipglibc 2.28 以降: RHEL 8、Debian 10、Ubuntu 20.04 以降
linux-arm64Zircolite-<version>-linux-arm64.zipglibc 2.28 以降
macos-arm64Zircolite-<version>-macos-arm64.zipmacOS 15 以降、Apple silicon
windows-x64Zircolite-<version>-windows-x64.zipWindows 10 以降
windows-arm64Zircolite-<version>-windows-arm64.zipWindows 10 以降、ARM64

Intel Mac および Alpine などの musl ベースのディストリビューションにはバイナリがありません。そのような環境では 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
  • --events 引数にはファイルまたはフォルダを指定できます。フォルダの場合、現在のフォルダとサブフォルダ内のすべてのログファイルが選択されます (無効にするには --no-recursion を使用)。
  • ファイル選択にカスタム glob パターンを指定するには --file-pattern を使用します。
  • 形式フラグ (--json-input、--xml-input など) を渡すと、自動形式検出をスキップします。

[!TIP] ツールを試したい場合は、EVTX-ATTACK-SAMPLES (EVTX ファイル) でテストできます。

Docker での実行

# 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 は、ログとルール/ルールセットが保存されているディレクトリ (絶対パスのみ) に置き換えてください。
  • Linux ホストでは、--user "$(id -u):$(id -g)" と -l /case/output/zircolite.log を追加してください。イメージは非特権ユーザーとして実行されるため、あなたが所有するディレクトリに書き込むことができません。詳細は Docker を参照してください。

自動処理最適化

複数のファイルに対して、Zircolite はファイルサイズ、利用可能な RAM、CPU 数を使用してデータベースレイアウトとワーカー数を選択します。メモリ負荷が高いときは新しい処理を抑制します。

python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json

--no-auto-mode、--unified-db (すべてのファイルに対して 1 つのデータベース。相関ルールが読み込まれると自動モードでもこれを選択します)、--no-parallel、または --parallel-workers N で上書きできます。選択方法については自動処理最適化を参照してください。

YAML 設定ファイルの使用

再利用可能な実行オプションを YAML 設定ファイルに保存します:

カテゴリ