Virtual Ripper — ルールベースのディスクイメージ復旧ツール
概要
Virtual Ripperは、ルールベースで仮想ディスクイメージを解析し、ファイルや興味あるデータを抽出するためのPythonスクリプト群です。基盤としてskelsecのadiskreaderを利用しており、イメージ上の読み取り機能を流用しながら、ユーザが定義するルールセット(rulesディレクトリ)に従ってパターン検索や領域抽出を行います。フォレンジック調査、マルウェア解析、インシデント対応のプリプロセッシングに適しており、ハッシュ算出や豊富な正規表現・シグネチャ照合による検出が可能です。軽量で拡張しやすく、既存のadiskreader環境にアドオンとして組み込めます。
リポジトリの統計情報
- スター数: 6
- フォーク数: 0
- ウォッチャー数: 6
- コミット数: 3
- ファイル数: 5
- メインの言語: Python
主な特徴
- ルールベースの検出エンジン:rulesディレクトリに定義した条件でイメージを走査。
- adiskreader上の拡張:既存の仮想ディスク読み取り機能を活用して抽出処理を行う設計。
- シンプルな依存関係:rich、impacket、hashlibなど主要ライブラリで動作。
- 抽出後のハッシュ検証やログ出力に対応し、フォレンジックワークフローに適合。
技術的なポイント
Virtual Ripperは、ディスクイメージの低レベル読み取り部分をadiskreaderに委譲し、その上でルールに基づくスキャンと抽出処理を実行する「薄い」レイヤとして機能します。ルールはrulesディレクトリに置かれ、ファイルシグネチャ・バイトパターン・オフセット指定・正規表現など複数の指標を組み合わせて定義できる想定です。これにより、既知のファイルヘッダ(PNG/JPEG/ZIPなど)やカスタムバイナリパターンを検出し、該当領域を切り出してファイルとして保存、同時にhashlibでSHA系のハッシュを算出して一貫性を担保できます。
実装面ではPythonのargparseでCLI入力を受け取り、richで結果や進行状況を見やすく表示します。impacketは主機能の直接的な要素ではない可能性が高いですが、adiskreaderと組み合わせたネットワーク関連ツール群への接続や追加機能で使われることがあります。ルール実行時はイメージ全体をシーケンシャルに走査する方式が基本で、ファイルカービング的なオフセット抽出や、ヘッダ/フッタ検出による可変長抽出にも対応できる設計です。
注意点としては、仮想ディスクのフォーマット(VMDK, VDI, VHD, QCOW2等)やスナップショット、論理ボリューム上のファイルシステム認識にはadiskreader側のサポート状況に依存する点、また大容量イメージでは単純走査が時間・メモリ面でコスト高になる点が挙げられます。将来的な改善としては並列処理、ルールのプリコンパイル、より豊富な出力フォーマット(CSV/JSON/DB連携)、ルール記述のメタデータ拡張(優先度・危険度)等が有効です。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- readme.md: file
- requirements.txt: file
- rules: dir
- ルール定義ファイルを格納(シグネチャや抽出仕様を記述)
- virtual-ripper.py: file
- メインの実行スクリプト。CLI入力、ルールロード、adiskreader呼び出し、抽出処理を実行
requirements.txtに示された依存は、rich(視覚表示)、impacket(ネットワーク/プロトコル補助)、hashlib(ハッシュ算出、標準ライブラリ)、argparse/json(CLIとルール読み込み)などです。導入手順はadiskreaderのインストールを前提にリポジトリをクローンし、pipでrequirementsを入れる流れがREADMEに記載されています。
使い方(想定例)
- adiskreaderでサポートされるイメージを用意
- virtual-ripper.pyにイメージパスと使用するルールセットを指定して実行
- 検出されたエントリは出力ディレクトリに保存され、ハッシュとログが生成される
CLI例(仮想的): python virtual-ripper.py —image disk.vmdk —rules rules/webhooks.json —out results/
拡張と改善案
- ルール言語をより表現力豊かに(条件式、アクションの組み合わせ)
- 並列処理や範囲分割による大容量イメージの高速化
- 出力の標準化(JSONL/SQLite)とメタ情報の付与(タイムスタンプ、検出ルールID)
- テストスイートとサンプルルールの追加、ドキュメント強化
まとめ
軽量で拡張しやすいルールベースのディスクイメージ抽出ツール。フォレンジック用途に有用。
リポジトリ情報:
- 名前: virtual-ripper
- 説明: A rules based disk image recovery tool
- スター数: 6
- 言語: Python
- URL: https://github.com/evildaemond/virtual-ripper
- オーナー: evildaemond
- アバター: https://avatars.githubusercontent.com/u/16937804?v=4
READMEの抜粋:
Virtual Ripper
Virtual Ripper is a rules based virtual disk scanner, that uses the base of adiskreader to run a set of rules against a virtual disk file and read or extract contents.
Requirements
The script is written in Python and is meant to be an add-on for the original, there are some additonal python requirements.
rich
impacket
hashlib
argparse
json
Installation
git clone https://github.com/skelse...