0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Volatilityを使ったメモリフォレンジック基礎(備忘録)

Posted at

この記事はフォレンジック初心者の筆者が、同じく初心者向けにメモリフォレンジックの概要と、代表的ツールVolatilityの使い方をまとめたものです。


メモリフォレンジックの流れ

事件発生後のメモリフォレンジックは、だいたい次の流れで進めます。

  1. メモリダンプの取得(現場でRAMを丸ごと保存)
  2. 解析環境の準備(Volatilityや必要ツールを用意)
  3. プロファイル情報の取得(対象OSを特定)
  4. OS情報の調査(バージョンやカーネル情報)
  5. プロセス解析(不審なプロセスや親子関係を調べる)
  6. タイムゾーンや時刻情報の取得(時系列分析の基準)
  7. ネットワーク調査(外部通信先の確認)
  8. 詳細解析(レジストリ、DLL、コマンド履歴など)

この記事では、③〜⑦の基本操作をVolatilityで行っていきます。


Volatilityとは?

メモリフォレンジックの代表的な解析ツールです。

  • オープンソース & 無料
  • Windows / Linux / MacOS のメモリ解析に対応
  • 豊富なプラグインでプロセス、ネットワーク、レジストリなどを調査可能
  • コマンドラインベースで軽量

Volatility 2 と Volatility 3 の違い

項目 Volatility 2 Volatility 3
言語 Python 2(2.7) Python 3
プロファイル指定 必須(--profile 不要(自動判別)
コマンド形式 volatility <options> <plugin> vol <plugin> <options>
プラグイン互換性 豊富だが古いOS中心 新しいOS対応が進むがプラグイン数は少なめ
学習コスト 比較的低い コマンド体系がやや変化
開発状況 メンテ終了 継続開発中

初心者が既存記事や資料を参考に学びたい場合はVolatility 2
最新OSや将来性を考えるならVolatility 3を選ぶと良いです。

この記事ではVolatility 2を例にします。


基本的な書式(Volatility 2)

volatility -f <メモリダンプファイル> --profile=<プロファイル名> <プラグイン名> [オプション]

例:

volatility -f memdump.raw --profile=Win7SP1x64 pslist

実践 — Volatilityでの調査手順


1. プロファイル情報の取得

まず対象OSのプロファイルを確認します。

volatility -f memdump.raw imageinfo

サンプル結果

Volatility Foundation Volatility Framework 2.6
INFO    : Suggested Profile(s) : Win7SP1x64, Win7SP0x64
INFO    : Number of Processors : 2
INFO    : Time of capture : 2023-08-21 14:35:02 UTC+0000

候補として出た Win7SP1x64 を使用します。


2. OSの調査

カーネルデバッグ情報を表示します。

volatility -f memdump.raw --profile=Win7SP1x64 kdbgscan

3. 不審なプロセスの特定(pstree)

pstree はプロセスの親子関係をツリー表示します。
マルウェアが explorer.exe の子プロセスとして潜んでいることもあります。

volatility -f memdump.raw --profile=Win7SP1x64 pstree

サンプル結果

System(4)
  smss.exe(228)
    csrss.exe(300)
    wininit.exe(400)
      services.exe(500)
        svchost.exe(1120)
        svchost.exe(1180)
      lsass.exe(600)
  explorer.exe(1500)
    malware.exe(2340)   ← 不審

4. timezoneの調査(hivelist使用)

Volatility 2には timezone プラグインがありますが、ここではレジストリ解析の流れも紹介します。

  1. レジストリハイブの場所を調べる
volatility -f memdump.raw --profile=Win7SP1x64 hivelist
  1. SYSTEMハイブをダンプ
volatility -f memdump.raw --profile=Win7SP1x64 dumpregistry -o 0xfffff8a000024010 -D ./dump/
  1. レジストリからタイムゾーン情報を確認
    SYSTEMハイブ内の
    ControlSet001\Control\TimeZoneInformation を解析します。

(解析は reg.py やオフラインレジストリエディタで確認可能)

例:

TimeZoneKeyName : Tokyo Standard Time
Bias            : -540

5. 送信元IPの所在地の特定

volatility -f memdump.raw --profile=Win7SP1x64 netscan

サンプル結果

TCP 192.168.1.10:49213 → 203.0.113.45:80 (ESTABLISHED)
TCP 192.168.1.10:49214 → 198.51.100.25:443 (ESTABLISHED)

外部IPを調査:

geoiplookup 203.0.113.45
GeoIP Country Edition: JP, Japan

まとめ

  • Volatility 2は情報が豊富で学びやすい
  • 調査は プロファイル確認 → OS調査 → pstreeで不審プロセス確認 → timezone解析 → ネットワーク調査 の順が基本
  • hivelistを使うと、タイムゾーンや他のレジストリ値も直接取得可能
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?