拾い物のコンパス

まともに書いたメモ

volatilityにプロファイルを追加する方法

メモリダンプ解析用ツールvolatilityはデフォルトではWindowsのメモリダンプのみが解析できる.LinuxOSXで作成されたメモリダンプを解析するためにはプロファイルを追加してやれば良い.公式から用意されているものを使うこともできるし,自作することもできる.

概要

プロファイルの追加は定義ファイルを追加すればよい.いくつかは公式から用意されており,基本的にはGithubからcloneするだけで使える.

$ git clone https://github.com/volatilityfoundation/profiles
$ cd profiles
$ find -type d -maxdepth 2
... snip ...
./Mac
./Mac/10.10
./Mac/10.5
./Mac/10.8
./Mac/10.9
./Mac/10.6
./Mac/10.12
./Mac/10.7
./Mac/10.11
./Linux
./Linux/Fedora
./Linux/Ubuntu
./Linux/Debian
./Linux/CentOS
./Linux/RedHat
./Linux/OpenSUSE
... snip ...

以上のように複数のディストリのプロファイルが用意されている.各ファイルにはx86x64がある.

使い方

使い方はvol.pyまたはvolatiltyが参照しているpluginsというディレクトリにZIPのままコピーする.
以下はUbuntu14043x64版のプロファイルを使えるようにする場合.

$ pwd
profiles
# ローカルなvolatilityを使っている場合
$ cp Linux/Ubuntu/x64/Ubuntu14043.zip volatility/plugins/Linux
# apt/pacmanなどでインストールしたvolatilityを使っている場合
$ cp Linux/Ubuntu/x64/Ubuntu14043.zip /usr/lib/python2.7/site-packages/volatility/plugins/linux/

確認

以下は,/usr/lib/python2.7/site-packages/volatility/plugins/linux/にコピーした場合のコマンド.

$ volatility --info
Profiles                                                                                                         
--------                                                                                                         
LinuxUbuntu14043x64 - A Profile for Linux Ubuntu14043 x64
VistaSP0x64         - A Profile for Windows Vista SP0 x64                                    
VistaSP0x86         - A Profile for Windows Vista SP0 x86                                    
VistaSP1x64         - A Profile for Windows Vista SP1 x64                             
VistaSP1x86         - A Profile for Windows Vista SP1 x86                                                                         
... snip ...

後は通常通り
$ volatility -f <dump_file> --profile=LinuxUbuntu14043x64 linux_lsof
といった感じで解析できる.

プロファイルを自作する

IIJがいい感じでまとめていた.自作したい人はこちらを参照.ツールがvolatilityに用意されているから,作成したいディストリ上でmakeしてzipするだけのようだ.特定のバージョンを作りたいときはカーネルrpmで持ってくる必要あり.

Internet Infrastructure Review(IIR)Vol.32 | IIJの技術/セキュリティレポート | IIJ

おまけ

ZIPファイルはplugins以下に置けば認識してくれるから,

$ cp profile.zip /usr/lib/python2.7/site-packages/volatility/plugins/self_made

といった目的別に分けることもできる.便利.