サイト内の現在位置

メモリフォレンジックツール Volatility Explorer

NECセキュリティブログ

2021年10月22日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの松本です。本記事では、メモリフォレンジックツールVolatility Framework new window[1](以下、volatility)のプラグインであるVolatility Explorer new window[2] new window[3](以下、VolExp)についてご紹介します。volatilityは主にフォレンジック new window[4]において、メモリ解析をするオープンソースのCLIツールです。VolExpはvolatilityをGUIで操作することのできる拡張機能を提供します。類似のツールとしてはKanivola new window[5]がありますが、VolExpはよりリッチなGUIであり、Process Explorer/Hacker new window[6]を意識したGUIになっています。VolExpはAviel Zohar氏が開発し、GPLv3ライセンスを適用しています。

Volatility Explorerの画面

本記事の対象読者として、volatilityを業務やCTFで触ったことがある方を想定しています。volatilityについて馴染みの無い方については、NECセキュリティブログにて別の紹介記事がありますので、先にご確認いただくとよりお楽しみいただけるかと思います。「メモリフォレンジックCTF「MemLabs」Lab1のWriteUp)[7]

本記事では主に、Python2系のvolatility 2 に対応したVolExpについて解説していきます。なお、Python3系のvolatility 3に対応したVol3xpは、筆者の環境ではプラグインを正常に読みこむことができませんでした。他のWebサイトでも導入失敗の記事がありましたので、ご参考にしていただければと思います。

セットアップ方法

ここからはセットアップ方法を説明します。動作確認を行った環境は以下の通りです。

  • VMware Workstation
  • Tsurugi Linux(tsurugi_linux_2021.1_vm.ova)
  • pyenv v2.1.0-12-g5963dc4f
  • python v2.7.16
  • Volatility Framework v2.6.1

本記事は、volatility2のセットアップ、およびPythonパッケージのインストール方法については主旨から外れるため、省略します。以下をご確認いただいた上で、以降の作業を実施してください。

  • Volatility Framework 2が動作すること
  • Pythonパッケージのtkinterが動作すること

次に、VolExpのソースコードをダウンロードします。Gitコマンドを使ってリポジトリをクローンし中身のvolexp.pyを、volatility2のプラグインのディレクトリにコピーしてください。以下は一例ですので、ご自身の環境に合わせて読み替えてください。

$ git clone https://github.com/memoryforensics1/VolExp.git
$ git clone https://github.com/volatilityfoundation/volatility.git
$ cp ./VolExp/volexp.py ./volatility/volatility/plugins/

以降は、volatility2で解析する対象のメモリイメージが必要になります。お手元にイメージファイルがない場合には、例えば以下を活用することができます。ご自身でライセンスを確認したうえで、制約の範囲でご利用ください。

本記事で利用したファイルは以下です。

  • http://webdiis.unizar.es/~ricardo/sbc-2021/adicional/volcados/alina1G.elf.tar.gz

VolExpを実行するには以下のコマンドを使います。--profileオプションにはメモリイメージに合わせて適切なプロファイルを指定してください。プロファイルを調べるためにはkdbgscan new window[5]というプラグインを使います。

$ python --version
Python 2.7.16
$ cd ./volatility
$ python vol.py -f ./image/alina1G.elf --profile=Win7SP1x86 volexp

上記コマンドを実行すると、--DUMP-DIRが指定されていないという警告が表示されます。これはダンプ用のデフォルトのパスが指定されていませんという意味です。表示されるGUI上で指示に従って、任意のパスを指定して先に進むと、以下のようなGUI画面が表示されます。

なお、ターミナルには以下のような表示があり、ところどころエラーが出力されていました。機会があれば、コードにも目を通して修正してみると良いかもしれません。

お疲れ様です。セットアップは以上です。「GoodLuck & Have Fun!」

GUI操作

それでは、GUI画面の操作方法について概要を説明していきます。本記事では以下を説明します。

  1. 表示調整
  2. 検索
  3. 詳細表示
  4. オプション設定
  5. プラグイン実行
  6. ジョブ一覧確認
  7. 保存
  8. ダンプ

上記以外については、以下のPDF資料を参考にすることができます。より詳しく知りたいという方は、ご確認ください。

1. 表示調整

Process, Pidなどが表示されているカラム部分を右クリックして、「Select Columns」をクリックすると、表示するカラムを増減させることができます。また、同じ場所で右クリックすると、デフォルトのカラム選択に戻したり、表示しているものをCSVにエクスポートしたりすることができます。

2. 検索

適当な位置を選択して、画面上で検索したい文字列をキーボード入力すると、ヒットするアイテムが選択されます。下の画像では、serと入力すると、service.exeが選択状態になり、ALIと入力するとALINA_CJLXYJ.eが選択状態になっています。大量の表示がある場合には、目的のものを見つけやすくなりそうです。

3. 詳細表示

プロセス毎のDlls,Handles,Networkを一覧表示することができます。一度表示した後、消す方法は分かりませんでした。(表示されていて困るものではないので、よしとします。)

右クリックには、他にもダンプ機能やVirus Total連携機能がありました。Properties情報には、他にも有用な情報が確認できそうです。

4. オプション設定

「Options > Options[Ctrl+o]」でオプションの選択画面に移動できます。

5. プラグイン実行

Plugins からインストール済みの任意のプラグインを起動することができます。

6. ジョブ一覧確認

プログレスバーを押すことで、実行中および完了したジョブの一覧を確認することができます。VolExpはマルチスレッド、マルチプロセスで動作すると説明があり、複数のプラグイン実行を並列で処理することができるようになっています。

7. 保存

「File > Save/Save As」で現在の状態をファイルに出力することができます。出力先は任意に設定することができます。

8. ダンプ

怪しい実行ファイルが見つかった場合には、ダンプすることができます。

補足:
volatility3のプラグインであるVol3xpには、他にも複数のプラグインが用意されており、GUI操作補強するものになっているようです。Vol3xpのセットアップが正常に動くようになれば、試してみたいと思います。

まとめ

本記事では、Volatility Explorerについてセットアップ方法と基本的な操作のイメージを解説しました。本プラグインはVolatility Plugin Contest new window[8]というWEBサイトで見つけました。同サイトは2013年から毎年開催されており、VolExp(その他のプラグインも含め)は2020年に3位入賞しており、750米ドルを獲得していました。内容は面白そうなのに、プラグインの名前で検索しても、ほとんど解説記事が見当たらなかったため、ブログ執筆の機会を使って調査してみました。並列でプラグインを処理できる点、情報をリッチなGUIで表示でき、検索やCSV出力、ダンプが直感的にできることは非常にメリットがありそうです。一方で、利用者へのセットアップ方法などについての説明が若干不足しているところ(実際に動かせるようになるまで時間がかかった。volatility3の方は最後まで動かせなかった。)や、開発が継続しているのかが不明な点などが、話題に上がらない原因なのかなと感じました。

以上、この記事を通してメモリフォレンジックやセキュリティ全般に少しでも興味を持っていただけたら幸いです。あわよくば、このプラグインを改善やメンテナンスしてくれる人が現れればと祈っております。最後までお読みいただきありがとうございました。

[参考文献]

執筆者プロフィール

松本 康平(まつもと こうへい)
セキュリティ技術センター リスクハンティングチーム

所属:
サイバーセキュリティ戦略本部
セキュリティ技術センター リスクハンティングチーム
経歴:
2017年に新卒入社、セキュア開発運用に関するドキュメント整備、リスクアセスメントに従事
2018年にIPA 中核人材育成プログラムにて制御システムセキュリティについて知見を獲得
2019年から現在まで、ペネトレーションテスト、脆弱性診断、インシデントレスポンス対応、セキュリティ関連のツール調査に従事
その他:
趣味は、キャンプ・アニメ・Vtuber

執筆者の他の記事を読む

アクセスランキング