メモリフォレンジック

RAMメモリのフォレンジック分析は、デジタル調査における重要かつ専門的な分野であり、 システムの稼働中にのみ存在する揮発性データの抽出と分析に焦点を当てています。ハードディスクやSSDに 保存された永続的データを調べる従来のディスクフォレンジックとは異なり、メモリフォレンジックは 取得時点のシステムの正確な状態をキャプチャし、実行中のプロセス、アクティブなネットワーク 接続、メモリ上の認証情報、暗号鍵、ファイルレスマルウェア、そして 高度な攻撃者が検出を回避するために意図的にRAM上だけに残すアーティファクトを明らかにします。この 技術は、高度な脅威(APT)、現代のランサムウェア、 および living-off-the-land 技術を用いる攻撃の調査において不可欠なものとなっており、そこでは侵入者が オペレーティングシステムの正規ツールを使ってメモリ上だけで活動します。収集のための時間的 ウィンドウは極めて重要です。いったんシステムがシャットダウン、再起動、あるいは ハイバネーションモードに入ると、これらの揮発性アーティファクトは取り返しのつかない形で失われ、 取得の迅速さと方法論がフォレンジック調査の成否を決定づける要因となります。

なぜメモリフォレンジックなのか

揮発性アーティファクトはシャットダウン時に失われます。メモリには以下が含まれます:

  • 実行中のプロセス: ファイルレスマルウェア、コードインジェクション
  • ネットワーク接続: C2 active connections、オープンな sockets
  • 認証情報: 平文のパスワード、キャッシュされた NTLM ハッシュ
  • 暗号: メモリ上の暗号鍵
  • Registry hives: 永続化されていない変更
  • Handles と DLL: インジェクション、hooking、rootkits

メモリの取得

取得ツール

  • FTK Imager: AccessData の無料ツール、グラフィカルインターフェース
  • DumpIt: 一行のポータブル実行ファイル、高速
  • WinPmem: Open-source、kernel memory の取得をサポート
  • Magnet RAM Capture: Free tool、使いやすい
  • LiME (Linux): Linux systems 向けの Loadable Kernel Module
  • Belkasoft RAM Capturer: anti-dumping があっても動作する

取得時の考慮事項

  • 調査の前にメモリを取得する - 分析は状態を変化させる
  • ライブシステム:footprint を最小化するツールを使用する
  • 仮想システム:VM の snapshot を取るか .vmem を抽出する
  • 物理システム:FireWire/Thunderbolt DMA 経由での取得を検討する
  • timeline のために取得の正確な時刻を記録する

Volatility による分析

Volatility Framework はメモリ分析のための open-source のゴールドスタンダードなツールであり、 Windows、Linux、macOS およびさまざまな dump 形式をサポートしています。

必須コマンド

      # Identify the system profile
      vol.py -f memory.dmp imageinfo
      # List processes
      vol.py -f memory.dmp --profile=Win10x64 pslist
      vol.py -f memory.dmp --profile=Win10x64 pstree
      # Hidden processes (DKOM)
      vol.py -f memory.dmp --profile=Win10x64 psxview
      # Network connections
      vol.py -f memory.dmp --profile=Win10x64 netscan
      # Loaded DLLs
      vol.py -f memory.dmp --profile=Win10x64 dlllist -p <PID>
      # Process command line
      vol.py -f memory.dmp --profile=Win10x64 cmdline
      # Process dumps
      vol.py -f memory.dmp --profile=Win10x64 procdump -p <PID> -D output/
      # Credential extraction
      vol.py -f memory.dmp --profile=Win10x64 hashdump
      vol.py -f memory.dmp --profile=Win10x64 lsadump
      

ファイルレスマルウェアの分析

ファイルレスマルウェアはメモリ上にのみ存在し、正規ツール(PowerShell、 WMI)を使って AV を回避します。検出技術:

  • Process injection: RWX メモリ、remote threads を探す
  • PowerShell 分析: console history 内の不審なコマンド
  • Hollowing: コードが置き換えられた正規プロセス
  • Reflective DLL Injection: ディスク上にマッピングされていない DLL

例:Process Injection の検出

      # Look for suspicious VADs (RWX memory)
      vol.py -f memory.dmp --profile=Win10x64 malfind
      # List code injections
      vol.py -f memory.dmp --profile=Win10x64 hollowfind
      # Analyze suspicious handles
      vol.py -f memory.dmp --profile=Win10x64 handles -p <PID> -t Process,Thread
      

認証情報の抽出

メモリには平文または容易にクラックできる形式の認証情報が含まれていることが多いです:

  • LSASS dump: NT hashes、Kerberos tickets、平文パスワード
  • Registry hives: offline hashdump 用の SAM、SYSTEM
  • Browser memory: フォームのパスワード、セッション cookies
  • アプリ固有: アプリの認証情報(email、VPN など)

タイムラインの再構築

メモリのイベントを他のアーティファクトと相関させる:

      # Timeline of processes and connections
      vol.py -f memory.dmp --profile=Win10x64 timeliner --output=body --output-file=timeline.body
      # Convert to a readable format
      mactime -b timeline.body -d > timeline.csv
      

Rootkits と DKOM

Direct Kernel Object Manipulation (DKOM) は kernel structures を変更してプロセスを隠します。 複数のソース間の比較によって検出します:

  • psxview: pslist、psscan、thrdproc などを比較する
  • driverirp: drivers とその IRP hooks を一覧表示する
  • ssdt: System Service Descriptor Table hooks
  • idt: Interrupt Descriptor Table modifications

高度な Volatility プラグイン

  • yarascan: YARA ルールでメモリをスキャンする
  • strings: 特定のプロセスから strings を抽出する
  • clipboard: Windows のクリップボードの内容
  • notepad: 開いている Notepad ウィンドウのテキスト
  • mftparser: メモリから $MFT を復元する
  • svcscan: Windows services を一覧表示する

補完ツール

  • Rekall: 追加 features を備えた Volatility の fork
  • Redline: 分析用の FireEye のグラフィカルインターフェース
  • MemProcFS: memory dump を filesystem としてマウントする
  • Bulk Extractor: features の一括抽出

課題

  • 大きな dumps(16GB+ RAM)は分析に時間がかかる
  • anti-forensics 技術は dumps を破損させる可能性がある
  • Encrypted memory は分析に keys が必要
  • kernel 構造は OS versions ごとに変化する

最終的な推奨事項

メモリフォレンジックは、高度な攻撃やファイルレスマルウェアの調査に不可欠です。 不審なインシデントでは EDR を介してメモリ取得を自動化しましょう。公開されている memory dumps(DFIRScience、Volatility Foundation)で分析を練習しましょう。常に メモリの所見を disk forensics や network forensics と相関させ、インシデントの全体像を把握してください。