The Volatility Framework

The Volatility Framework: Volatile memory artifact extraction utility framework
https://www.volatilesystems.com/default/volatility

オープンソースの物理メモリ解析ツールです。2008/08/18時点でバージョン1.3betaがリリースされています。Windows XP SP2, SP3のメモリを対象にしており、PAEの有無どちらにも対応しています。Linuxにも対応する予定(おそらく1.3の正式版)であり、メモリ解析の有力なツールとして期待できます。Pythonで書かれていてCygwinを含むUnix系のOSで実行できます。試した感じでは完成度はかなり高いです。

イメージの形式はこれまでraw(dd)イメージのみでしたが、1.3betaでクラッシュダンプ、ハイバネーションファイル形式をサポートするようになりました。相互に変換することも可能です。

実行形式は以下の通りです。

# python volatility コマンド オプション

多くのコマンドが用意されています。ただ、オプション-h, -f, -b, -tは共通した用途になっています。

  • -f ファイル名
    物理メモリイメージのファイル名を指定します。
  • -b オフセット
    DTB(Directory Table Base)のオフセットを16進数で指定します。
  • -t タイプ
    イメージのタイプをpae, nopae, autoのいずれかで指定します。デフォルトでは"auto"に設定されています。

NISTで公開されているサンプルイメージに対してコマンドidentを実行した例が以下です。

# python volatility ident -f xp-laptop-2005-06-25.img 
              Image Name: xp-laptop-2005-06-25.img
              Image Type: XP SP2
                 VM Type: nopae
                     DTB: 0x39000
                Datetime: Sat Jun 25 12:58:47 2005

対象イメージのタイプ、時刻など基礎情報が表示されます。

なお、The Volatility Frameworkは以下のFATKitというフレームワークが元になっています。

FATKit: The Forensic Analysis ToolKit
http://www.4tphi.net/fatkit/

フレームワークと名付けているように、仮想<->物理アドレス変換やデータ構造体などの処理単位でモジュール化していて、拡張しやすい作りにしています。このあとにVolatoolsというツールとしてしばらく開発されていましたが、オープンソース化とともにVolatilityになったようです。