memory-forensics について
インシデント対応やデジタルフォレンジック向けのスキルです。Volatilityで揮発性メモリダンプを解析し、マルウェアやルートキットを調査します。
主な機能
- 01プロセス、通信、注入コードの抽出
- 02隠れたプロセスとルートキットの検出
- 03休止ファイルとページファイルの調査
- 04複数のダンプ形式とプロファイル検出への対応
活用シーン
- 01侵害が疑われるシステムのメモリ調査
- 02エンドポイントのマルウェア確認
- 03休止ファイルに含まれる痕跡の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill memory-forensicsインストール後、Claude Code で/memory-forensicsを入力して読み込まれたか確認します。
詳細
メモリフォレンジック
目的
このスキルを使うと、Volatility などのツールで揮発性メモリダンプを分析し、マルウェア、ルートキット、セキュリティ侵害を特定して、デジタルフォレンジック調査を支援できます。
使用するタイミング
侵害が疑われる場合のインシデント対応、侵害されたシステムの RAM ダンプの分析、またはマルウェア感染の可能性があるエンドポイントの予防的なセキュリティ評価で使用します。
主な機能
- Volatility のプラグインを使ってメモリダンプを解析し、プロセス、ネットワーク接続、インジェクションされたコードを抽出します。
- プロセスのハロウイングや DKOM(直接カーネルオブジェクト操作)を検査し、隠れたプロセスやルートキットを検出します。
- ハイバネーションファイルやページファイルを分析し、コマンド履歴や暗号化キーなどのアーティファクトを調べます。
- raw、VMware、クラッシュダンプなど複数のダンプ形式に対応し、プロファイルを自動検出します。
使用パターン
このスキルは、Python スクリプト内の CLI コマンド、またはターミナルから直接実行します。メモリダンプファイルと必要なプラグインを必ず指定してください。自動化する場合は、ファイルパスと出力を処理する関数でコマンドをラップします。クラウドベースのフォレンジックツールに拡張する場合は、API キーに環境変数を使用します。
Python での使用例:
import subprocess
dump_file = 'memory.dmp'
subprocess.run(['volatility', '-f', dump_file, 'pslist'])
主なコマンド/API
中核機能には Volatility フレームワークのコマンドを使用します。プロファイルが一致しない場合は、VOLATILITY_PROFILE 環境変数を設定します(例:$VOLATILITY_PROFILE=Win7SP1x64)。
- コマンド:
volatility -f memory.dmp imageinfo— ダンプから OS プロファイルを特定します。- フラグ:ファイルパスには
-f、自動検出を上書きするには--profile=Win10x64を指定します。
- フラグ:ファイルパスには
- コマンド:
volatility -f memory.dmp malfind— インジェクションされたコードやマルウェアのフックをスキャンします。- 例:出力をパイプする場合:
volatility -f memory.dmp malfind > malware_output.txt
- 例:出力をパイプする場合:
- API エンドポイント:Python API 経由で Volatility3 を使う場合は、
from volatility3.framework import interfacesとしてインポートし、設定にはinterfaces.configuration.ConfObject()を呼び出します。- スニペット:
from volatility3 import framework config = framework.require_plugin('windows').build_configuration() config['primary'] = 'memory.dmp'
- スニペット:
- 設定形式:JSON ベースです。たとえば、カスタム実行では
{"plugin": "pslist", "dumpfile": "memory.dmp"}のように指定します。
統合に関する注意
Volatility を pip(pip install volatility)でインストールしてから、スクリプトから呼び出して統合します。クラウドフォレンジック(AWS Memory DB の分析など)での認証には、$AWS_ACCESS_KEY_ID や $AWS_SECRET_ACCESS_KEY などの環境変数を使用します。汚染を避けるため、このスキルは隔離された環境で実行してください。ダンプファイルは安全なパスを介して渡します。複数のツールを統合する場合は、出力をパイプして strings や YARA などのツールと連携できます(例:volatility -f memory.dmp strings | grep suspicious)。
エラー処理
Volatility の終了コードを確認して、一般的なエラーに対処します。たとえば、プロファイルが見つからない場合は、まず imageinfo を使用します。ファイルが見つからないエラーの場合は、実行前にパスを検証します。スクリプトでは、コマンドを try-except ブロックでラップします。
try:
result = subprocess.run(['volatility', '-f', 'memory.dmp', 'pslist'], capture_output=True, check=True)
except subprocess.CalledProcessError as e:
print(f"Error: {e.returncode} - {e.stderr.decode()}")
デバッグ用に詳細なエラーを記録し、詳細な出力を有効にするには $VOLATILITY_DEBUG=1 環境変数を使用します。
具体的な使用例
- Windows ダンプ内のマルウェアを検出する: 感染が疑われるマシンのメモリダンプを読み込み、異常をスキャンします。
- コマンド:
volatility -f infected.dmp --profile=Win10x64 malfind - 手順:まず
volatility -f infected.dmp imageinfoを実行してプロファイルを確認し、次に出力から不審なプロセスの PID と仮想アドレスを分析します。
- コマンド:
- ルートキットの存在を調査する: Linux のメモリダンプを分析し、隠れたカーネルモジュールを探します。
- コマンド:
volatility -f linux.dmp linux_pslist - 手順:
linux_modulesと照合して不一致を見つけた後、フラグが付いたアドレスに対してstringsを使い、さらに調査します。
- コマンド:
グラフ関係
- 関連:出力に依存する「incident-response」や入力データを提供する「threat-intelligence」などのブルーチームクラスターのスキルです。
- 接続: 「forensics」や「security」などのタグを介して、「network-forensics」などのスキルとつながり、包括的な侵害分析を行います。