Bulk Extractor with Record Carving

Bulk Extractorのレコードカービング用のスキャナプラグインを開発し、追加したスキャナを搭載したバイナリ/インストーラをこのページで公開しています。

2017年12月時点のBulk Extractor本家の開発版バージョンは、2015年4月にリリースされた1.6.0-devであり、このバージョンをベースにプラグインを追加しています。

バージョン体系はbulk_extractor-rec番号としており、最新バージョンはbulk_extractor-rec02です。

 

追加スキャナ

  • evtx - EVTXファイルとEVTXチャンクをカービング (EVTXチャンクはヘッダを生成)
  • ntfsindx - $INDEX_ALLOCATION属性のINDXレコードをカービング
  • ntfslogfile - $LogFileのRSTR/RCRDレコードをカービング
  • ntfsmft - $MFTのFILEレコードをカービング
  • ntfsusn - $UsnJrnl $JストリームのUSN_RECORD構造をカービング
  • utmp - utmp構造をカービング

 

Bulk Extractor with Record Carving実行画面

コマンドライン版、GUI版それぞれで追加スキャナの指定が可能です。

Bulk Extractor Record Carving Command

Bulk Extractor Record Carving BEViewer

 

ダウンロード

Windows 64bit版バイナリ(コマンド)

bulk_extractor-rec03_x64.zip
(SHA-256: d907a5cb6d8f3309705096b53790ce96e6277373c49e1ac714ea4cd7ae2f19fe)

Windows 64bit版インストーラ

bulk_extractor-1.6.0-dev-rec03-windowsinstaller_x64.exe
(SHA-256: a219eeb4184a8cf23f5645b0c79c0cf7eab457c978ad91a362c0f7624c87925a)

Linux環境ではソースコードからビルドすることができます。ソースコードおよびビルド手順は以下を参照してください。
https://github.com/4n6ist/bulk_extractor-rec

旧バージョン

Windows 64bit版バイナリ(コマンド)

bulk_extractor-rec02_x64.zip
(SHA-256: 62f1c091474a7c1ddcb891e2abfcfcfa7741e3cc4984f6316df94154b533348b)​​​​​​​

bulk_extractor-rec01_x64.zip
(SHA-256: 0c3a0ef45f701317572e67b520d284e6210be3514e234da426528f3456d334ad)

 

Windows 64bit版インストーラ

bulk_extractor-1.6.0-dev-rec02-windowsinstaller_x64.exe
(SHA-256: f0151e3c2ccd9b4f232ca2ac06a8f2ed23b67b89fcc4c8f316396c2bc3ceafd1)

bulk_extractor-1.6.0-dev-rec01-windowsinstaller_x64.exe
(SHA-256: b2c1f3916c1df803fbb9b6c699ebf5a70f365bd37b8fe5bb71512e3d157c8064)

 

ライセンス

本家のライセンスに準じます。

 

背景

データ復元手法の1つであるカービングは、各種データのヘッダやフッタのパターンを検索して抽出、復元する手法であり、foremostscalpelPhotoRecなどのツールが知られています。これらは原則として、ファイル単位のカービングをするツールです。

一方、Bulk Extractorも入力データに対して様々なパターン(シグネチャ)で検索して意味のある情報を抽出するツールであり、ファイルカービングのツールと似ていますが、ファイル単位に限らない幅広いデータパターンを抽出することが可能です。

また、Bulk Extractorは個々のパターン(シグネチャ)を処理するスキャナをプラグインとして開発できるようになっていることから、ファイル単位ではなくレコード単位でのカービングを目的としたプラグインを開発してみました。

 

実行方法

使い方は本家のBulk Extractorと同様であり、GUI版の場合はScanner欄に追加されているスキャナのチェックボックスをオン/オフすることにより指定します。

コマンドラインの一般的な使い方は以下の通りです。

  1. bulk_extractor -E スキャナ名 -o 出力先ディレクトリ 入力ファイル 
  2. bulk_extractor -x all -e スキャナ名 -e スキャナ名 ... -o 出力先ディレクトリ 入力ファイル

1.は指定したスキャナだけを実行したい場合、2.はスキャナを複数個指定する場合の形式です。実行例をいくつか示します(Windows 10環境で動作確認済)。

  • Windows 7のE01イメージ(Win7.E01)に対して各種レコードをカービング

bulk_extractor -x all -e ntfsindx -e ntfslogfile -e ntfsmft -e ntfsusn -o output Win7.E01

  • ハイバネーションファイルの圧縮データ内に含まれる各種レコードも含めてカービング
bulk_extractor -x all -e hiberfile -e ntfsindx -e ntfslogfile -e ntfsmft -e ntfsusn -o output Win7.E01
  • Eドライブでマウントされているボリュームに対してMFT FILEレコードをカービング

bulk_extractor -E ntfsmft -o output \\.\E:

  • ボリュームシャドウコピー1に対して$LogFileレコードをカービング

bulk_extractor -E ntfslogfile -o output \\.\HarddiskVolumeShadowCopy1
(ボリュームシャドウコピーの番号はvssadmin list shadows等で確認)

  • 物理ディスク0に対してINDXレコードをカービング

bulk_extractor -E ntfsindx -o output \\.\PhysicalDrive0

  • Linuxを含むE01イメージ(Linux.E01)に対してutmpレコードをカービング

bulk_extractor -E utmp -o output Linux.E01

  • gz圧縮されたutmpレコードも含めてカービング

bulk_extractor -x all -e gzip -e utmp -o output Linux.E01

 

実行結果

-oオプションで指定したフォルダ配下にカービングした結果とレポートが出力されます。

Bulk Extractor Record Carving Output

個々のレコードは種別ごとに1ファイルにまとめており、末尾にcorruptedと名前が付いているファイルには、パターンに一致するもののfixupなどのデータ整合性の検証を満たさなかったレコードを集約しています。$INDEX_ALLOCATION属性のINDXレコードは、一般的にはフォルダのコンテンツデータとして表現されていますが、$ObjIdファイルや$Secureなどのファイル内では別の形式で表現されているため、それらは別のファイルに分けて出力しています。

スキャナ名_carved.txtにはカービングした際のオフセット、サイズの情報が記録されています。

 

特徴

  • Bulk Extractorはマルチスレッド処理をするように設計されているため、高速なカービングが可能です。自環境では常時100MBytes/secの速度が出ており、高速なストレージや高スペックPCでは300MBytes/secの速度が出ることを確認しています。
  • Bulk Extractorは圧縮データの展開用スキャナと併用することにより、カービング対象のレコードが圧縮されている場合でも展開して適切にカービングすることができます。現状のスキャナではWindows 7までであればハイバネーションファイルの展開に対応したhiberfileスキャナ、Linux環境であればgzipの展開に対応したgzipスキャナとの併用により、カービング精度の向上が見込めます。
  • Bulk Extractorは任意のデータを入力に扱うことができるため、ディスク/ファイルシステムだけでなくメモリダンプに対しても実行することができます。

 

留意点

  • 追加スキャナはカービングするだけであり、パースしていません。パースは別のツールを使う必要があります。
  • Bulk Extractorは指定した入力ファイルをそのまま扱っており、ファイルシステムなどの構造を解釈せずにカービングしています。したがって、結果ファイル内のレコードの順番は正規のファイルの順番とは異なっている可能性があります。
  • 入力ファイルのイメージが複数ボリュームを構成している場合、カービング後のファイルには複数のボリュームのレコードが混在した状態になります。

 

更新履歴

2018/10/17

bulk_extractor-rec03をリリースしました。イベントログ形式のファイルおよびチャンクをカービングするevtxスキャナを追加しました。チャンクカービング時にヘッダを付加してファイルとして出力します。

2018/01/21

bulk_extractor-rec02をリリースしました。ハイバネーションファイル(hiberfileスキャナ)処理の改善、USNレコード(ntfsusnスキャナ)で不完全なレコードを発見した場合は別ファイル(UsnJrnl-J_corruptedに書き出すようにしました。

2017/12/12

bulk_extractor-rec01をリリースしました。