
Windowsフォレンジックアーティファクトを迅速に検索・ハント
Chainsawは、イベントログやMFTファイルなどのWindowsフォレンジックアーティファクト内の脅威を迅速に特定するための強力な「ファーストレスポンス」機能を提供します。Chainsawは、イベントログをキーワードで検索するための汎用的かつ高速な方法を提供し、Sigma検出ルールの組み込みサポートやカスタムChainsaw検出ルールを通じて脅威を特定します。
拡張情報はこのツールのWikiにあります: https://github.com/WithSecureLabs/chainsaw/wiki
WithSecure Counterceptでは、EDRエージェントを介してエンドポイントから幅広いテレメトリソースを取り込み、マネージド検出および対応サービスを提供しています。しかし、EDRでキャプチャされなかったフォレンジックアーティファクトを迅速に分析する必要がある状況があります。一般的な例としては、侵害時にEDRがインストールされていなかった環境でのインシデントレスポンス調査が挙げられます。Chainsawは、このような状況でフォレンジックアーティファクトの迅速なトリアージを実行するツールを、当社の脅威ハンターとインシデントレスポンスコンサルタントに提供するために作成されました。
Windowsイベントログは、脅威ハンティングおよびインシデントレスポンス調査のための豊富なフォレンジック情報源を提供します。残念ながら、イベントログの処理と検索は遅く時間のかかるプロセスであり、ほとんどの場合、ログデータを効率的にハントし検出ロジックを適用するために、ELKスタックやSplunkインスタンスなどの周辺インフラストラクチャのオーバーヘッドを必要とします。このオーバーヘッドは、ブルーチームが調査を進めるために必要な方向性と結論を提供するためにWindowsイベントログを迅速にトリアージできないことをしばしば意味します。Chainsawは、Windowsイベントログを迅速に検索・ハントできるため、この問題を解決します。
執筆時点では、Windowsイベントログをトリアージし、ログ内の興味深い要素を特定し、Sigmaなどの検出ロジックルール形式を適用して悪意のある活動の兆候を検出する、シンプルで高速な方法を提供するオープンソースのスタンドアロンツールはほとんどありません。当社のテストでは、存在していたツールは大量のイベントログに検出ロジックを効率的に適用するのに苦労し、迅速なトリアージが必要なシナリオには適していませんでした。
--sigmaおよび--mappingパラメータを使用して、SIGMA検出ルールのサブセット(またはSIGMA gitリポジトリ全体)を含むディレクトリを指定すると、chainsawは自動的にこれらのルールをロード、変換し、提供されたイベントログに対して実行します。マッピングファイルは、ルールマッチングに使用するイベントログ内のフィールドをchainsawに指示します。デフォルトでは、Chainsawは以下を含む(ただしこれらに限定されない)幅広いイベントログタイプをサポートしています:
| イベントタイプ | イベントID |
|---|---|
| プロセス作成 (Sysmon) | 1 |
| ネットワーク接続 (Sysmon) | 3 |
| イメージロード (Sysmon) | 7 |
| ファイル作成 (Sysmon) | 11 |
| レジストリイベント (Sysmon) | 13 |
| Powershellスクリプトブロック | 4104 |
| プロセス作成 | 4688 |
| スケジュールタスク作成 | 4698 |
| サービス作成 | 7045 |
ルール検出に使用されるフィールドの完全なリストについてはマッピングファイルを参照し、必要に応じて自由に拡張してください。
Sigmaルールのサポートに加えて、Chainsawはカスタムルール形式もサポートしています。リポジトリには、ユーザーが以下を実行できるようにするさまざまなChainsawルールを含むrulesディレクトリがあります:
Chainsaw v2のリリースに伴い、Sigma RulesおよびEVTX-Attack-SamplesリポジトリをChainsawのサブモジュールとして含めないことにしました。最新バージョンを確実に入手するために、これらのリポジトリを個別にクローンすることをお勧めします。
Chainsawバイナリ、Sigmaルール、サンプルイベントログを含むオールインワンパッケージがまだ必要な場合は、このGitHubリポジトリのリリースセクションからダウンロードできます。このリリースセクションでは、さまざまなプラットフォームとアーキテクチャ向けのコンパイル済みバイナリのみのバージョンのChainsawも見つけることができます。
Chainsawを自分でコンパイルしたい場合は、Chainsawリポジトリをクローンできます:
git clone https://github.com/WithSecureLabs/chainsaw.git
そして、cargo build --releaseを実行してコードを自分でコンパイルします。ビルドが完了すると、コンパイル済みバイナリのコピーがtarget/releaseフォルダにあります。
--releaseフラグを付けてビルドしてください。これにより実行時間が大幅に速くなります。
Chainsawの実行時の外観をすばやく確認したい場合は、Sigma RulesおよびEVTX-Attack-Samplesリポジトリをクローンできます:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git
そして、以下のパラメータでChainsawを実行します:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
├───devShells │ └───x86_64-linux │ └───default: development environment 'nix-shell' ├───formatter │ └───x86_64-linux: package 'alejandra-3.1.0' └───packages └───x86_64-linux ├───chainsaw: package 'chainsaw-2.10.1' └───default: package 'chainsaw-2.10.1'
Chainsaw はパッケージとして [nixpkgs](https://search.nixos.org/packages?query=chainsaw) から入手できます。
NixOS を使用している場合は、システム設定ファイルに `chainsaw` を追加するだけです。
ただし、NixOS を使用していない場合でも、Nix 経由で Chainsaw をインストールできます。推奨される方法は `nix-shell` を使用する方法で、これにより $PATH 環境変数が一時的に変更されます。
そのためには、以下を実行してください:```
nix-shell -p chainsaw
また、このリポジトリがflakeであることを利用して、以下を実行することもできます:``` nix profile install github:WithSecureLabs/chainsaw
ただし、Nix を使用して chainsaw を自分でビルドしたい場合は、このリポジトリに付属している `flake.nix` を再び利用できます。
バイナリをビルドするには、クローンしたリポジトリのルートディレクトリで以下を実行してください```
nix build .#
これにより ./result ディレクトリが作成され、chainsaw バイナリは ./result/bin/chainsaw に配置されます。
chainsaw をダウンロードして実行すると、ローカルの EDR / アンチウイルスエンジンが Chainsaw を悪意のあるものとして検出する場合があります。この例は以下の GitHub issue で確認できます: Example1、Example2。
これらの警告は通常、悪意のある文字列(例: "mimikatz")への参照を含むサンプルイベントログおよび/または Sigma ルールが原因です。また、何らかのヒューリスティック検出により、一部のアンチウイルスエンジンが Chainsaw バイナリを検出する事例も確認されています。
2022年7月に、Chainsaw の動作を大幅に刷新したバージョン2をリリースしました。Chainsaw v2 には、以下のハイライトを含むいくつかの重要な改善が含まれています:
Chainsaw のバージョン1を引き続き使用したい場合は、releases セクションでコンパイル済みバイナリを入手するか、v1.x.x ブランチでソースコードにアクセスできます。Chainsaw v1 はもはやメンテナンスされていないため、すべてのユーザーは Chainsaw v2 への移行を検討してください。
Chainsaw v1 の「Christmas Project」コードベースを v2 で洗練された製品へと変換してくれた @AlexKornitzer に多大なる感謝を申し上げます。
USAGE:
chainsaw search [FLAGS] [OPTIONS] <pattern> [--] [path]...
FLAGS:
-h, --help Prints help information
-i, --ignore-case Ignore the case when searching patterns
--json Print the output in json format
--load-unknown Allow chainsaw to try and load files it cannot identify
--local Output the timestamp using the local machine's timestamp
-q Suppress informational output
--skip-errors Continue to search when an error is encountered
-V, --version Prints version information