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


Zircolite は、Python 3で書かれたスタンドアロンツールで、以下のログに対してSIGMAルールを使用できます:
--archive-password を使用します。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など)では、evtx PythonライブラリのインストールにRustとCargoが必要な場合があります。
(旧い)他者によるチュートリアル(英語、スペイン語、フランス語)はこちらを参照してください。
ヘルプは次のコマンドで表示できます:
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)を直接使用できます:
# 単一の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 を使用)。--file-pattern を使用します。--no-auto-detect を使用します。[!TIP] ツールを試してみたい場合は、EVTX-ATTACK-SAMPLES(EVTXファイル)でテストできます。
# 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設定ファイルを使用します:
# 完全にコメント付きの設定ファイルを生成
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 にあります:
Hashes フィールド(SHA1=abc123,MD5=def456,SHA256=789xyz)は個別の SHA1、MD5、SHA256 フィールドになり、ルールがハッシュを直接照合できるようになります。split:
Hashes:
separator: ","
equal: "="
完全な設定、Zircoliteに同梱されている変換、独自の変換をテストする方法については、フィールド分割 と フィールド変換 を参照してください。
完全なドキュメントはこちらで入手できます。
ミニGUIは完全にオフラインで使用できます。結果の表示と検索が可能です。--package オプションでミニGUI「パッケージ」を自動生成できます。出力ディレクトリを指定するには --package-dir を使用します。ミニGUIの使用方法については、ドキュメントこちらを参照してください。



英語: Russ McRee が彼のブログでSIGMAとZircoliteに関する詳細なチュートリアルを公開しています。
スペイン語: César Marín がスペイン語のチュートリアルをこちらに公開しています。
フランス語: IT-connect.fr がフランス語でZircoliteに関する広範なチュートリアルを公開しています。
フランス語: IT-connect.fr はまた、Zircoliteを使用したHack the Boxチャレンジのwrite-upも公開しています。
evtx_dump はMITライセンスです。.7z