
エクスプロイト開発のためのAFL++ファジング、クロスアーキテクチャQEMUエミュレーション、ハーネス開発、Ghidraヘッドレス解析、カスタムミューテーター、パッチ比較を行うデスクトップワークベンチ。
Rogue Framework は、AFL++、クロスアーキテクチャ QEMU ファジング、ハーネス開発、軽量な Ghidra ヘッドレス解析、カスタムミューテータ、パッチ比較のためのデスクトップワークベンチです。 これは意図的に、ボタンだけのラッパーではなく監査可能なワークベンチとして設計されています。生成されるすべての AFL++ コマンドは実行前に確認でき、生成されるハーネスは研究者が編集できる通常のソースファイルです。 これは「エクスプロイト開発者向けの BurpSuite」を目指しています。
Rogue Framework は現在、Linux と Python 3.11+、PyQt6 を対象としています。
Kali Linux では、インストーラが Python 環境をセットアップし、公式の
AFL++ stable ブランチをクローンしてその完全なディストリビューションと計装された QEMU
バックエンドをビルドし、その後 Ghidra ヘッドレス、ネイティブ/マルチアーキテクチャ GDB、GDB サーバー、QEMU
ユーザー/システムエミュレーション、コンパイラ/ビルド依存関係、ユーザーランチャー、そして
永続的なシェル PATH エントリをインストールします。AFL++ は無視対象のローカル
AFLplusplus/ ディレクトリにダウンロードされ、Rogue Framework の一部として配布されるものではありません:
chmod +x install.sh
./install.sh
rogue-framework
一般的なクロスコンパイラとそのゲスト sysroot も同様にインストールします(これははるかに大きなダウンロードになります):
./install.sh --with-cross-toolchains
インストーラーは冪等です。既存のインストールを監査するには ./install.sh --check を使用するか、AFL++/QEMU の再ビルドを強制するには ./install.sh --rebuild-afl を使用してください。ダウンロードしたチェックアウトを最新の公式安定リビジョンへ明示的に fast-forward するには、./install.sh --update-afl を使用してください。
デスクトップユーザーとして実行してください。sudo を要求するのは apt パッケージのみです。新しく書き込まれた PATH は既に実行中の親シェルを変更できないため、新しいターミナルを開くか、~/.zshrc/~/.bashrc を source するか、インストーラーが表示する絶対パス ~/.local/bin/rogue-framework 経由で Rogue を起動してください。
チェックアウトからの手動起動も引き続き利用可能です:
python3 run.py
編集可能な環境の場合:
python3 -m pip install -e .
rogue-framework
クロスアーキテクチャの動的バイナリには、QEMU_LD_PREFIX で選択した対応するゲスト sysroot が必要です。これは本質的にターゲット/ディストリビューション固有です。Ghidra の analyzeHeadless パスは Tools → External tools で上書きできます。
.rgp プロジェクトは、ポータブルなプロジェクト定義を含む、可読でバージョン管理された JSON です。大規模で可変的なアーティファクトは、管理されたコンパニオンワークスペースに格納されます:
example.rgp
example.rgp-work/
workspace.json
project.sqlite3
corpus/
output/
harnesses/
mutators/
analysis/
logs/
runs/
staging/
recovery/
backups/
objects/sha256/
この分割により、プロジェクトファイルはレビュー可能な状態に保たれ、クラッシュコーパス、検出事項、分析インデックス、Ghidraの状態をJSONに埋め込むことを避けられます。workspace.jsonはマニフェストを正しいワークスペースIDに紐付け、project.sqlite3は運用/インデックス状態を保存します。管理対象の参照はworkspace://を使用し、明示的な外部リソースはexternal://を使用します。マシンローカルのツールパスとUI状態は、ポータブルプロジェクトの外部に保存されます。
Save Asは、新しいプロジェクトIDとワークスペースIDを持つ独立したクローンを作成します。Rogueは開いているドキュメントを切り替える前に宛先をステージングして検証するため、クローンに失敗してもソースプロジェクトは変更されません。正規の保存では、アドバイザリライターリースとリビジョン/SHA-256の競合チェックを使用し、直前の正常なマニフェストを保持し、fsyncを用いてファイルをアトミックに公開し、アクティブなエディタの下書きを含むクラッシュリカバリスナップショットを維持します。生成されたハーネス、ミューテータ、Ghidra JSON、パッチ差分結果、最小化された検出事項もトランザクション的に公開されるため、置換に失敗しても以前の有効な成果物が削除されることはありません。
.fuzz プロジェクトRogueは、レガシースキーマ0〜2の.fuzzマニフェストとその.fuzz-workコンパニオンをインポートできます。レガシーソースが正規の宛先になることは決してありません。最初の保存時に、元のレガシーファイルを保持したまま、隣接する.rgpプロジェクトと.rgp-workワークスペースにアップグレードされます。新規プロジェクトとSave Asの宛先は常に.rgpを使用します。