threat-hunting について
企業のサイバー脅威を調査するブルーチーム向けの脅威ハンティングスキルです。Volatility、Zeek、Elasticsearch、Plaso、Sigmaを使ったフォレンジック分析とイベント相関を案内します。
主な機能
- 01Volatilityによるメモリダンプ分析
- 02Zeekによるネットワークログ調査
- 03Elasticsearchでの脅威パターン検索
- 04Plasoによるフォレンジックタイムライン作成
- 05Sigmaルールによるログ相関
活用シーン
- 01不審なエンドポイント活動の調査
- 02異常なネットワーク通信の探索
- 03侵害後のフォレンジックデータ分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill threat-huntingインストール後、Claude Code で/threat-huntingを入力して読み込まれたか確認します。
詳細
脅威ハンティング
目的
このスキルを使うと、フォレンジックツールと分析を活用して、エンタープライズ環境における高度なサイバー脅威をプロアクティブに検出し、対応できます。データに基づく手法で異常を特定し、インシデントを調査し、リスクを軽減することに重点を置いています。
使用するタイミング
異常なネットワークトラフィック、エンドポイントの異常、侵害後の分析など、進行中の脅威調査でこのスキルを使用します。侵害の兆候(IOC)の監視、大規模ネットワークでの定期的なハンティング、リアルタイムアラートを目的とした SIEM システムとの連携など、ブルーチームの運用に適用します。
主な機能
- Volatility でメモリダンプを分析し、マルウェアのプロセスを検出します。
- Zeek でネットワークログを解析し、不審な接続を特定します。
- カスタムクエリを使って Elasticsearch に脅威のパターンを問い合わせます。
- Plaso などのツールを使い、フォレンジックアーティファクトからタイムラインを生成します。
- ログ分析用の Sigma ルールで脅威の相関分析を自動化します。
使用パターン
まずエンドポイントまたはネットワークからデータを収集し、次に分析を適用して脅威を特定します。たとえば、ログの取り込み → クエリの実行 → イベントの相関分析 → 対応、というパイプラインを使用します。ハンティングの対象は、特定の IOC または時間枠に必ず絞り込みます。自動化と連携する場合は、入力検証と出力解析を処理するスクリプトでコマンドをラップします。複数ステップのハンティングでは、Zeek でキャプチャし、Elasticsearch でインデックスを作成するなど、ツールを連携させます。
一般的なコマンド/API
脅威ハンティングのタスクには、次のコマンドを使用します。認証用に環境変数を設定します。たとえば、API アクセスには $ELASTICSEARCH_API_KEY をエクスポートします。
-
メモリフォレンジック用の Volatility:
volatility -f memory.dump --profile=Win7SP1x64 pslist
プロセスの一覧が表示されます。-o output.jsonを追加すると、結果を保存できます。 -
ネットワーク分析用の Zeek:
zeek -r capture.pcap policy/scripts
続けてzeek-cut conn.log | grep "suspicious_ip"を実行し、ログをフィルタリングします。 -
ログクエリ用の Elasticsearch API:
エンドポイントPOST https://es.example.com/_searchを次のボディとともに使用します。
{ "query": { "match": { "message": "malware" } } }
ヘッダーAuthorization: Bearer $ELASTICSEARCH_API_KEYで認証します。 -
タイムライン生成用の Plaso:
log2timeline.py --storage-file timeline.plaso /path/to/logs
次に、psort.py -w output.csv timeline.plasoでクエリを実行します。
設定形式:Elasticsearch のクエリには JSON(上記の例を参照)、Zeek のポリシーには INI(例:[site] interface=eth0)を使用します。
統合に関するメモ
出力をパイプで渡すことで、このスキルを他のブルーチームツールと統合できます。たとえば、Logstash を介して Zeek のログを Elasticsearch に送ります。API と統合する場合は、スクリプトで $ELASTICSEARCH_API_KEY を使用します。
curl -H "Authorization: Bearer $ELASTICSEARCH_API_KEY" -X POST https://es.example.com/_ingest/pipeline
データ交換には JSON など、ツール間で共通の形式を使用してください。コンテナを使用する場合は、フォレンジックデータにアクセスできるよう、Docker の実行時に -v /host/logs:/container/logs などでボリュームをマウントします。本番環境への影響を避けるため、統合はサンドボックスでテストしてください。
エラー処理
Volatility の無効なプロファイルなど、よくあるエラーを確認します(たとえば、--profile が一致しない場合は「Error: No suitable profile found」と出力されます。その場合は volatility --info を実行して選択肢を一覧表示し、再試行します)。API 呼び出しでは、4xx/5xx の応答を処理します。
import requests; response = requests.post(url, headers={'Authorization': f'Bearer {os.environ.get("ELASTICSEARCH_API_KEY")}'}); if response.status_code != 200: raise ValueError(response.text)
スクリプトでは、ファイルが見つからない場合のエラーを try-catch で処理します。たとえば Zeek では、処理を始める前に pcap が存在するか確認します。監査用に、エラーをタイムスタンプ付きでファイルに記録します。
具体的な使用例
-
メモリダンプでマルウェアを検出する:
まず、$VOLATILITY_PATH=/path/to/volatilityをエクスポートします。volatility -f suspect.dump --profile=Linuxx64x64 pslist | grep "suspicious_process"を実行します。一致する項目が見つかったら、スクリプトでアラートを通知します:echo "Threat detected" >> alert.log。 -
ネットワークの異常をハンティングする:
Zeek でトラフィックをキャプチャします:zeek -i eth0 -C。次に、zeek-cut conn.log | awk '$3 == "192.168.1.100" {print}'でクエリを実行します。Elasticsearch と統合するには、curl -H "Authorization: Bearer $ELASTICSEARCH_API_KEY" -d '{"query":{"match":{"source_ip":"192.168.1.100"}}}' https://es.example.com/_searchを実行します。
グラフ上の関連性
- 関連先:blue-team(クラスター)。防御的な運用に関するツールを共有しています。
- タグによる関連:threat-hunting(一致)、cybersecurity(検出スキルと重複)、blue-team(クラスターによる関連)。
- リンク先:フォローアップ対応の「incident-response」や、より詳細なデータ調査の「forensics-analysis」など、ほかの blue-team スキル。