アップデート一覧に戻る
New releaseAug 4, 2026

Zircolite v3.8.0

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

共有

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

python version

Zircolite は、Python 3で書かれたスタンドアロンツールで、以下のログに対してSIGMAルールを使用できます:

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

主な特長

  • 自動ログ種別検出: マジックバイト、コンテンツ解析、正規表現ベースのフォールバックを使用して、ログ形式とタイムスタンプフィールドを自動的に識別します。ほとんどの場合で形式フラグを指定する必要はありません。
  • 複数の入力形式: EVTX、JSON Lines、JSON Arrays、CSV、XMLなどのさまざまなログ形式をサポートします。圧縮またはアーカイブされたログ(gzip、bzip2、ZIP、7-Zip)にも対応し、暗号化されたZIP/7zには --archive-password を使用します。
  • ネイティブSigmaサポート: Zircoliteは、pySigmaを使用して変換することで、ネイティブなSigmaルール(YAML)を直接使用できます。
  • SIGMAバックエンド: SIGMAバックエンド(SQLite)に基づいており、内部的なSIGMA-to-something変換は使用しません。
  • 高度なログ操作: フィールドの分割や変換を適用して入力ログを操作でき、より柔軟で強力なログ分析が可能です。
  • フィールド変換: 処理中にフィールドへカスタムPython変換を適用します(例:Base64デコード、hex-to-ASCII変換)。
  • 柔軟なエクスポート: ZircoliteはJinja テンプレート を使用して、JSON、CSV、JSONL、Splunk、Elastic、OpenSearch、Timesketch、SARIF、ATT&CK Navigatorなど、複数の形式で結果をエクスポートできます。
  • リッチなターミナル出力: 検出結果は、MITRE ATT&CKテクニックID、ATT&CK戦術ヒートマップ、ルールカバレッジ指標、クリック可能な出力ファイルリンクとともに、重大度順にソートされた表で表示されます。

ZircoliteはPythonで直接使用できます。

ドキュメントはこちら(専用サイト)またはこちら(リポジトリディレクトリ)で入手できます。

要件 / インストール

このプロジェクトはPython 3.10以上でテストされています。依存関係は pip3 install -r requirements.txt でインストールします。

依存関係

  • 必須: orjsonxxhashrichrich-argparseRestrictedPythonrequestsurllib3pySigmaevtx (pyevtx-rs)、jinja2lxmlchardetpsutilpyyamlpy7zr
  • py7zr.7z 入力が開かれたときのみインポートされます。ZIP、gzip、bzip2は標準ライブラリを使用します。

⚠️ 一部のシステム(Mac、ARMなど)では、evtx PythonライブラリのインストールにRustとCargoが必要な場合があります。

クイックスタート

(旧い)他者によるチュートリアル(英語、スペイン語、フランス語)はこちらを参照してください。

EVTXファイル

ヘルプは次のコマンドで表示できます:

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)の使用

ネイティブSigmaルール(YAML)を直接使用できます:

# 単一のYAMLルール
python3 zircolite.py --evtx sample.evtx --ruleset path/to/rule.yml

# Sigmaルールのディレクトリ
python3 zircolite.py --evtx sample.evtx --ruleset ./sigma/rules/windows/process_creation

# pySigmaパイプラインを使用
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources

その他のログ形式

Zircoliteはほとんどの場合、ログ形式を自動検出するため、明示的な形式フラグはオプションです:

# 自動検出(推奨) - Zircoliteが形式を自動的に識別します
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

# 明示的な形式フラグ(自動検出を上書き)
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 を使用します。
  • 自動形式検出を無効にするには --no-auto-detect を使用します。

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

Dockerでの実行

# Dockerイメージをプル
docker pull wagga40/zircolite:latest
# ログとルールが特定のディレクトリにある場合
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はそれらを利用可能なRAMとCPUに対して測定し、データベースモード(共有データベース1つ、またはファイルごとに1つ)を選択し、並列処理する価値があるかを判断します。そして、実行中にメモリプレッシャーに応じてワーカー数を調整します。

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

これらは --no-auto-mode--unified-db(全ファイルに1つのデータベース。クロスファイル相関ルールに必要)、--no-parallel、または --parallel-workers N で上書きできます。選択方法の詳細は 自動処理最適化 を参照してください。

YAML設定ファイルの使用

複雑または繰り返しの分析ワークフローには、YAML設定ファイルを使用します:

# 完全にコメント付きの設定ファイルを生成
python3 zircolite.py --generate-config my_config.yaml

# それを使って実行
python3 zircolite.py --yaml-config my_config.yaml

# CLI引数はファイルを上書きします
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ビルド、クリーンなど)については docs を参照してください。

[!IMPORTANT]
これらのルールセットはZircoliteをすぐに使えるようにするために提供されていますが、ノイズが多かったり遅かったりする可能性があるため、独自のルールセットを生成する ことをお勧めします。これらの自動更新ルールセットは、専用リポジトリ Zircolite-Rules-v2 で入手できます。

フィールド分割と変換

イベントを取り込む際に整形する2つの設定機能があり、どちらも config/config.yaml にあります:

  • フィールド分割 は、詰め込まれたキーと値のフィールドをクエリ可能なフィールドに変換します。Sysmonの Hashes フィールド(SHA1=abc123,MD5=def456,SHA256=789xyz)は個別の SHA1MD5SHA256 フィールドになり、ルールがハッシュを直接照合できるようになります。
  • フィールド変換 は、フィールドの値に対してサンドボックス化されたPythonを実行します。base64コマンドラインのデコード、IOCの抽出、LOLBinsのフラグ付けなどが可能で、結果を元のフィールドを置き換えるのではなく新しいフィールドに書き込むことができます。Zircoliteには11カテゴリにわたって55の変換が同梱されており、2つのauditd用を除いてデフォルトではオフになっています。
split:
  Hashes:
    separator: ","
    equal: "="

完全な設定、Zircoliteに同梱されている変換、独自の変換をテストする方法については、フィールド分割フィールド変換 を参照してください。

ドキュメント

完全なドキュメントはこちらで入手できます。

ミニGUI

ミニGUIは完全にオフラインで使用できます。結果の表示と検索が可能です。--package オプションでミニGUI「パッケージ」を自動生成できます。出力ディレクトリを指定するには --package-dir を使用します。ミニGUIの使用方法については、ドキュメントこちらを参照してください。

MITRE ATT&CK®テクニックと重大度レベル別の検出イベント

検出イベントのタイムライン

MITRE ATT&CK®マトリックスに表示された検出イベント(テクニック別)

チュートリアル、参考資料、関連プロジェクト

チュートリアル

参考資料


ライセンス


カテゴリ