mcpField
P
performing-memory-forensics-with-volatility3

performing-memory-forensics-with-volatility3

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

performing-memory-forensics-with-volatility3 について

インシデント対応担当者やフォレンジック分析者向けの、Volatility 3によるメモリフォレンジック手順書です。OSやプロセスの特定からマルウェアスキャン、機密データの抽出、報告書の作成までを扱います。

主な機能

  1. 01メモリイメージ内のOS特定
  2. 02プロセス列挙と隠しプロセス検出
  3. 03ネットワーク接続とレジストリの分析
  4. 04認証情報と機密データの抽出
  5. 05YARAによるメモリ内マルウェアスキャン
  6. 06分析結果の報告書への整理

活用シーン

  1. 01侵害端末のマルウェアやコード注入の調査
  2. 02ルートキットや隠しプロセスの確認
  3. 03メモリから認証情報や暗号鍵を抽出
  4. 04シャットダウン前のランサムウェアメモリ分析

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill performing-memory-forensics-with-volatility3

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

同梱ファイル

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

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

詳細

Volatility 3 によるメモリフォレンジックの実施

使用する場面

  • 侵害された、または疑わしいシステムの RAM ダンプを分析する場合
  • インシデント対応で、実行中のマルウェア、注入されたコード、ルートキットを特定する場合
  • メモリから認証情報、暗号化キー、ネットワーク接続を抽出する必要がある場合
  • プロセスのホロウイング、DLL インジェクション、隠しプロセスを検出する場合
  • ディスクベースのフォレンジックだけでは不十分で、揮発性データが重要な場合

前提条件

  • Python 3.7 以降がインストールされていること
  • Volatility 3 フレームワークがインストールされていること(pip install volatility3)
  • raw、ELF、またはクラッシュダンプ形式のメモリダンプ
  • 対象 OS のバージョンに適したシンボルテーブル(ISF ファイル)
  • 分析結果を保存するための十分なディスク容量(メモリダンプサイズの 2~3 倍)
  • オプション:メモリ内のマルウェアスキャン用 YARA ルール

ワークフロー

ステップ 1:メモリダンプを取得して Volatility 3 をインストールする
# Install Volatility 3
pip install volatility3

# Or install from source for latest features
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
pip install -e .

# Download Windows symbol tables (ISF packs)
# Place in volatility3/symbols/ directory
wget https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip
unzip windows.zip -d /opt/volatility3/volatility3/symbols/

# Download Linux and Mac symbol packs
wget https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip
wget https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip

# Memory acquisition tools (for live systems):
# Windows: winpmem, DumpIt, FTK Imager
# Linux: LiME (Linux Memory Extractor)
sudo insmod lime-$(uname -r).ko "path=/cases/memory/linux_mem.lime format=lime"

# Verify the memory dump
file /cases/case-2024-001/memory/memory.raw
ls -lh /cases/case-2024-001/memory/memory.raw
ステップ 2:オペレーティングシステムのプロファイルを特定する
# Run banners plugin to identify the OS
vol -f /cases/case-2024-001/memory/memory.raw banners

# For Windows, identify the OS version
vol -f /cases/case-2024-001/memory/memory.raw windows.info

# Output example:
# Variable        Value
# Kernel Base     0xf8047e200000
# DTB             0x1ad000
# Symbols         ntkrnlmp.pdb/GUID
# Is64Bit         True
# IsPAE           False
# primary layer   Intel32e
# KdVersionBlock  0xf8047ee232c0
# Major/Minor     15.19041
# Machine Type    34404
# KeNumberProcessors 4
# SystemTime      2024-01-18 14:32:15 UTC
# NtBuildLab      19041.1.amd64fre.vb_release.191206-1406
# NtProductType   NtProductWinNt
# NtSystemRoot    C:\WINDOWS
# PE MajorOperatingSystemVersion 10
# PE MinorOperatingSystemVersion 0

# For Linux memory dumps
vol -f /cases/case-2024-001/memory/linux_mem.lime linux.info
ステップ 3:プロセスを列挙して異常を検出する
# List all running processes
vol -f /cases/case-2024-001/memory/memory.raw windows.pslist | tee /cases/case-2024-001/analysis/pslist.txt

# Show process tree (parent-child relationships)
vol -f /cases/case-2024-001/memory/memory.raw windows.pstree | tee /cases/case-2024-001/analysis/pstree.txt

# Detect hidden processes using cross-view analysis
vol -f /cases/case-2024-001/memory/memory.raw windows.psscan | tee /cases/case-2024-001/analysis/psscan.txt

# Compare pslist vs psscan to find hidden processes
diff <(vol -f memory.raw windows.pslist | awk '{print $1}' | sort) \
     <(vol -f memory.raw windows.psscan | awk '{print $1}' | sort)

# List DLLs loaded by a suspicious process (PID 4532)
vol -f /cases/case-2024-001/memory/memory.raw windows.dlllist --pid 4532

# Check for process hollowing and injection
vol -f /cases/case-2024-001/memory/memory.raw windows.malfind | tee /cases/case-2024-001/analysis/malfind.txt

# Dump suspicious process memory for further analysis
vol -f /cases/case-2024-001/memory/memory.raw windows.memmap --pid 4532 --dump \
   -o /cases/case-2024-001/analysis/dumps/
ステップ 4:ネットワーク接続とレジストリを分析する
# List active network connections
vol -f /cases/case-2024-001/memory/memory.raw windows.netscan | tee /cases/case-2024-001/analysis/netscan.txt

# Filter for established connections
vol -f /cases/case-2024-001/memory/memory.raw windows.netscan | grep ESTABLISHED

# Filter for listening ports
vol -f /cases/case-2024-001/memory/memory.raw windows.netscan | grep LISTENING

# Extract network connections with process mapping
vol -f /cases/case-2024-001/memory/memory.raw windows.netstat | tee /cases/case-2024-001/analysis/netstat.txt

# Dump registry hives from memory
vol -f /cases/case-2024-001/memory/memory.raw windows.registry.hivelist

# Extract specific registry keys
vol -f /cases/case-2024-001/memory/memory.raw windows.registry.printkey \
   --key "Software\Microsoft\Windows\CurrentVersion\Run"

# Check services
vol -f /cases/case-2024-001/memory/memory.raw windows.svcscan | tee /cases/case-2024-001/analysis/services.txt
ステップ 5:認証情報と機密データを抽出する
# Dump cached credentials (hashdump)
vol -f /cases/case-2024-001/memory/memory.raw windows.hashdump | tee /cases/case-2024-001/analysis/hashes.txt

# Extract LSA secrets
vol -f /cases/case-2024-001/memory/memory.raw windows.lsadump

# Dump cached domain credentials
vol -f /cases/case-2024-001/memory/memory.raw windows.cachedump

# Search for plaintext strings in process memory
vol -f /cases/case-2024-001/memory/memory.raw windows.strings --pid 4532 \
   | grep -iE '(password|credential|token|api.key)'

# Extract command history from cmd.exe/powershell
vol -f /cases/case-2024-001/memory/memory.raw windows.cmdline | tee /cases/case-2024-001/analysis/cmdline.txt

# Extract environment variables
vol -f /cases/case-2024-001/memory/memory.raw windows.envars --pid 4532
ステップ 6:YARA ルールでマルウェアをスキャンする
# Scan memory with YARA rules
vol -f /cases/case-2024-001/memory/memory.raw yarascan \
   --yara-file /opt/yara-rules/malware_index.yar | tee /cases/case-2024-001/analysis/yara_hits.txt

# Scan specific process memory
vol -f /cases/case-2024-001/memory/memory.raw yarascan \
   --yara-file /opt/yara-rules/apt_rules.yar --pid 4532

# Check loaded kernel modules for rootkits
vol -f /cases/case-2024-001/memory/memory.raw windows.modules | tee /cases/case-2024-001/analysis/modules.txt

# Detect unlinked/hidden modules
vol -f /cases/case-2024-001/memory/memory.raw windows.modscan | tee /cases/case-2024-001/analysis/modscan.txt

# Check for SSDT hooks (System Service Descriptor Table)
vol -f /cases/case-2024-001/memory/memory.raw windows.ssdt | grep -v "ntoskrnl\|win32k"

# Dump a suspicious executable from memory
vol -f /cases/case-2024-001/memory/memory.raw windows.dumpfiles --pid 4532 \
   -o /cases/case-2024-001/analysis/extracted/
ステップ 7:調査結果をレポートにまとめる
# Generate comprehensive analysis summary
echo "=== MEMORY FORENSICS REPORT ===" > /cases/case-2024-001/analysis/memory_report.txt
echo "Image: memory.raw" >> /cases/case-2024-001/analysis/memory_report.txt
echo "OS: Windows 10 Build 19041" >> /cases/case-2024-001/analysis/memory_report.txt
echo "" >> /cases/case-2024-001/analysis/memory_report.txt

echo "--- Suspicious Processes ---" >> /cases/case-2024-001/analysis/memory_report.txt
cat /cases/case-2024-001/analysis/malfind.txt >> /cases/case-2024-001/analysis/memory_report.txt

echo "--- Network Connections ---" >> /cases/case-2024-001/analysis/memory_report.txt
cat /cases/case-2024-001/analysis/netscan.txt >> /cases/case-2024-001/analysis/memory_report.txt

echo "--- YARA Matches ---" >> /cases/case-2024-001/analysis/memory_report.txt
cat /cases/case-2024-001/analysis/yara_hits.txt >> /cases/case-2024-001/analysis/memory_report.txt

# Calculate hash of the memory dump for integrity
sha256sum /cases/case-2024-001/memory/memory.raw >> /cases/case-2024-001/analysis/memory_report.txt

重要な概念

概念説明
揮発性データRAM にのみ存在し、電源が切れると失われる情報
プロセスのホロウイングマルウェアが正規のプロセスメモリを悪意のあるコードに置き換える手法
DLL インジェクション実行中のプロセスのアドレス空間に不正な DLL を読み込むこと
EPROCESSプロセスを表す Windows カーネル構造体。プロセス一覧の基盤となります
プールスキャンメモリ内でカーネルオブジェクトのシグネチャを検索し、隠れたアーティファクトを見つけること
VAD(仮想アドレス記述子)プロセスの仮想メモリ領域を追跡するメモリ管理構造体
ISF(中間シンボル形式)OS 固有の構造体定義に使用する Volatility 3 のシンボルテーブル形式
MalfindVAD のアクセス許可と内容を調べて、注入されたコードを検出するプラグイン

ツールとシステム

ツール目的
Volatility 3主要なオープンソースメモリフォレンジックフレームワーク
LiMELinux の RAM ダンプを取得する Linux Memory Extractor
WinPmemWindows の物理メモリ取得ドライバー
DumpItComae のワンクリック Windows メモリダンプユーティリティ
YARAマルウェアのシグネチャスキャン用パターンマッチングエンジン
Rekall代替のメモリフォレンジックフレームワーク(Google)
MemProcFSメモリ分析用のメモリプロセスファイルシステム
stringsバイナリメモリダンプから印字可能な文字列を抽出するツール

よくあるシナリオ

シナリオ 1:進行中のマルウェア調査 DumpIt でメモリを取得し、pslist/pstree を実行して疑わしいプロセスを特定します。malfind を使って svchost.exe 内の注入されたコードを検出し、注入されたメモリセグメントをダンプします。YARA ルールでスキャンして Cobalt Strike ビーコンを特定し、netscan から C2 IP を抽出して、ネットワークログと照合します。

シナリオ 2:侵害後の認証情報窃取 hashdump と lsadump を実行してキャッシュされた認証情報を抽出し、cmdline の出力から mimikatz の実行を特定します。ファイルシステムのアーティファクトから lsass.exe のメモリダンプがないか確認し、ネットワーク接続に見られるラテラルムーブメントの証拠と照合します。

シナリオ 3:ルートキットの検出 pslist(EPROCESS のリンクリストを使用)と psscan(プールスキャンを使用)を比較して、リンクリストから外れたプロセスを見つけます。modules と modscan を照合して隠されたカーネルドライバーを確認し、SSDT を調べてシステムコールをリダイレクトするフックを探します。疑わしいモジュールをダンプして静的解析します。

シナリオ 4:ランサムウェアインシデントからの復旧 システムのシャットダウン前に、ランサムウェアプロセスのメモリから暗号化キーを抽出します。YARA を使ってランサムウェアの亜種を特定し、コマンドラインのアーティファクトから最初の実行地点を見つけ、ネットワーク接続を通じてラテラルムーブメントを追跡します。

出力形式

Memory Forensics Analysis:
  Image:            memory.raw (16 GB)
  OS Identified:    Windows 10 x64 Build 19041
  Capture Time:     2024-01-18 14:32:15 UTC

  Process Analysis:
    Total Processes:    87
    Hidden Processes:   2 (PIDs: 4532, 6128)
    Injected Processes: 3 (malfind detections)
    Suspicious:         svchost.exe (PID 4532) - injected code at 0x7FFE0000

  Network Connections:
    Total:        45
    Established:  12
    Suspicious:   3 (C2 connections to 185.xx.xx.xx:443)

  Credentials Found:
    NTLM Hashes:      4 accounts
    Cached Creds:      2 domain accounts

  YARA Matches:
    CobaltStrike_Beacon:  PID 4532 (3 hits)
    Mimikatz_Memory:      PID 6128 (1 hit)

  Extracted Artifacts:   15 files dumped to /analysis/extracted/

コメント