FCNS_PEはPEフォーマット(EXE, DLL, SYS)のカービングおよびパースをするEnScriptです。
使い方
Caseを作成もしくはオープン後、調査対象を追加してから実行します。メニュー/オプションの内容は以下の通りです。
- Target: カービング対象のファイル/オブジェクトの選択
- Selected: ブルーチェックしたファイル/オブジェクト
- Other - $LogFile, pagefile.sys, Unallocated Clusters, VSS (experimental): チェックボックスで選択
- Filtering Option: カービング時の挙動調節
- Min Size/Max Size: カービングするファイルの最小/最大サイズをKB単位で指定
- Search only the starting position of each sector: 各セクタの先頭からはじまるPEパターンのみを探索(注意: 通常、処理が遅くなります)
- Carve out overwritten data: 有効にすると上書きされたと判断したデータであってもカービング
- Export: カービングしたデータや結果の出力場所を指定
- LEF File: カービングしたファイルをLEFとして出力する場所/ファイル名を指定
- TSV File: カービングしたファイルに関するメタデータの出力場所/ファイル名を指定
ダウンロード
FCNS_PE_1.0.1.EnPack (SHA1: e77b59f9d7c94f084732ae7d1ea58e2cc32f23ed)
ライセンス
個人、商用を問わず自由に利用することができますが、本ツールの利用により生じた問題については責任を負いかねます。EnPack形式で公開していますがEnScript形式をご希望の方はお問合せください。
動作環境
EnCase 7.x
背景
EnCase v7にはFile Carver (EnCase v6ではFile Finder)と呼ばれるファイルカービングのための機能が用意されています。
File CarverはFile Typesテーブルに定義されているデータフォーマット固有のヘッダ、フッタのパターンを使いファイルとして抽出します。フッタが定義されていないデータフォーマットの場合は、設定しておいたサイズ値(デフォルトは4096バイト)に依存するため、正確にファイルとして抽出することが困難であるという問題があります。ただし、File Carverの設定画面のSelect Carving TypeのOptimizedに登録されているデータフォーマットについては、中に定義されている情報も参照して適切なサイズのファイルとして取り出します。
PE形式(exe, dll, sys)についてはOptimizedに登録されておらず、File Typesテーブルには以下の通りヘッダのMZのみを頼りにしていることがわかります。
従ってDefault Lengthの設定に依存したサイズで抽出することになり、正確なカービングが困難な状況です。PE形式の仕様についてはMicrosoft社により公開されており、PEの構成情報(ヘッダ、セクション)を解釈することにより(上書きされていなければ)正確にカービングできることからEnScriptとして実装しました。
EnCase v6用については既に公開されているPFDCforPEを使うことをおすすめします。
特徴
処理内容としてはPFDCforPEに似ており、pagefile.sysやUnallocated Clustersなどの指定したファイル、オブジェクトからexe, dll, sysファイルを正しいサイズで抽出することを目的としています。PFDCforPEでは独自ともいえるエントロピー算出やパック有無の検出等の機能がありますが、それらは省いています。そのかわりにカービング結果が重複していた場合の除外処理やPEフォーマット内に格納されるVersion Information Structures構造のパース処理を加えています。
以下はサンプルデータに対してUnallocated Clustersにブルーチェックを入れてからFCNS_PEを実行した後の画面です。
Consoleの画面に所要時間やカービングできた数に関する結果が表示されます。生成されたLEFにはカービング結果を拡張子別のフォルダで分類しています。
TSV Fileとして生成されたファイルをExcel等で開くとカービングしたファイルに関する各種情報が参照できます。
補足
オープンソースのツールではPhotoRecでもPEフォーマットのカービングが可能です。正確なカービングができるという点では同じですが、対象を全領域/未割当領域の2択しか選べないなどの部分で違いがあります。
参考情報
Some Old Stuffs - CCI (PFDCforPE parse/filter/detect/carve PE files)
http://takahiroharuyama.github.io/blog/2014/01/05/some-old-stuffs/
Microsoft PE and COFF Specification
http://msdn.microsoft.com/en-US/windows/hardware/gg463119
Version Information Structures
http://msdn.microsoft.com/en-us/library/windows/desktop/ff468916(v=vs.85).aspx
更新履歴
2015/04/19
Target - Otherの対象にVSSを追加しました。ただし、VSSの構造をパースしていないためカービング結果は不完全になる可能性が高いです。VSS内でカービングできたPEが見つかった場合は、再度VSSをパースした状態でPEを確認することをお勧めします。