Virtual Ripper — ルールベースのディスクイメージ復旧ツール

Security

概要

Virtual Ripperは、ルールベースで仮想ディスクイメージを解析し、ファイルや興味あるデータを抽出するためのPythonスクリプト群です。基盤としてskelsecのadiskreaderを利用しており、イメージ上の読み取り機能を流用しながら、ユーザが定義するルールセット(rulesディレクトリ)に従ってパターン検索や領域抽出を行います。フォレンジック調査、マルウェア解析、インシデント対応のプリプロセッシングに適しており、ハッシュ算出や豊富な正規表現・シグネチャ照合による検出が可能です。軽量で拡張しやすく、既存のadiskreader環境にアドオンとして組み込めます。

GitHub

リポジトリの統計情報

  • スター数: 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)
  • テストスイートとサンプルルールの追加、ドキュメント強化

まとめ

軽量で拡張しやすいルールベースのディスクイメージ抽出ツール。フォレンジック用途に有用。

リポジトリ情報:

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...