
ROP ROCKET は高度なコード再利用攻撃フレームワークであり、新しいWindows Syscalls攻撃、新しいHeaven's Gate、そして "shellcodeless" ROP を含む、広範なROPチェーン生成機能を備えています。このフレームワークは、エミュレーションと難読化を利用して攻撃対象領域を拡大するのに役立ちます。
この新しい高度なROPフレームワークは、DEF CON 31で前例のない機能を備えてデビューしました。ROCKETは複数のタイプのチェーンを生成し、新しいパターンやテクニックを提供します。
これはまだ開発中であり、いくつかの更新および強化された機能が追加される予定です。更新は定期的に行われるはずです。問題が発生した場合は、issuesに投稿するか、メールでお知らせください。対応いたします。また、特定のタイプのガジェットを生成するための代替方法も追加される予定です。
現在、新しい機能が定期的に追加されており、作業は進行中です。定期的にチェックしてください。

ROP ROCKETは非常に強力で、ユニークな機能を備えています。その内容は以下のとおりです。
2025年8月:ROP ROCKET は ASLR バイパスミニツールをリリースしました(2025年8月10日、DEFCON にて)。これは 64 ビットの高エントロピー ASLR に対する 9 つの ASLR バイパスを生成します。


これはローカルパッケージとしてインストールする必要があります。setup.py ファイルがあります。これを行うには、ディレクトリに移動して次のコマンドを入力します。
py -m pip install -e ./ Python のインストール環境によっては、少し変更が必要になる場合があります。インストール済みパッケージを表示すると、ROP-ROCKET が表示されるはずです:py -m pip list 必要な依存関係はすべて含まれていると考えられますが、問題が発生した場合(このリリースの新しさによるもの)は、issue を開いてください。調査します。
単にコマンドラインから実行します:py rop2.py rop_tester_syscall.exe 完全に悪用可能な rop_tester_syscall.exe が zip ファイルとしても含まれています。これは、すべてのガジェットが確実に見つかり、見逃されないようにするために開発されました。
このツールは、私が博士論文の一部として作成し、2019 年の DEF CON 27 でリリースした、はるかに古い JOP ROCKET に触発されました。これにより、JOP に関するさらなる開発と多くの新しい JOP 機能が生まれ、さまざまな論文で JOP のメカニズムと使用法に関する広範な文書が提供されました。そのツールは現在少し時代遅れです – 古いスタイルの Python です。この新しい研究により、そのインスピレーションの一部は、ROP の分野で斬新で異なる何かをしようとすることです。これまでのところ、その使命を果たしています。つまり、このツールは JOP ツールに触発されているため、通常の ROP では考えられないような、型にはまらない方法で考えることができます。ROP ROCKET には JOP 機能はありません – ROP 専用です。JOP 専用のツールは JOP ROCKET だけで、他のツールは単に将来の JOP 作業のためのプレースホルダーにすぎません。ともあれ、この歴史的な情報を明確にしておきたかったのです。名前の類似性で混乱しないように、これらは非常に異なる無関係なツールです。

ROCKET は Heaven's Gate x86-to-x64 アタック を生成し、画面に出力して保存しています。

ROCKET は Win 10/11 向けの NtProtectVirtualMemory の Windows システムコール を生成し、画面に出力して保存しています。

内部エミュレーション機能のおかげで、ROCKET はガジェットの多くの異常な組み合わせを考慮できます。上記はスタックポインタ (ESP) を取得して ECX に移動することを目的としています。利用できない可能性のある単一の ROP ガジェットを使用するだけでなく、代替手段を見つけることができます。最初に esp を edi に移動し、次に edi を ebx に移動し、次に ebx を esi に移動します。ECX は整数オーバーフローを介してゼロに設定され、その後 esi の値(スタックポインタを含む)が ecx に加算されます。結果として、スタックポインタが ecx に格納されます。同等の短いガジェットは mov ecx, esp # ret ですが、それが常に可能とは限りません。ROCKET は余分な pop 命令も正しく処理し、正しいフィラーを生成します。ROP ROCKET は保護する必要があるレジスタ(「除外レジスタ」)を注意深く考慮し、これはガジェットごとに変わる可能性があることに注意してください。上記の例では、保護しようとしているレジスタは「破壊」されていません。

ROCKET は、ガジェットをキャプチャする対象と方法について多くのオプションを提供します。もちろん、デフォルトは config.cfg ファイルで設定できます。ここでは、ユーザーは最大 0xa (15) バイトのメモリチャンクのみを調べることにしました。

個々の ROP チェインだけでなく、見つかったすべてのガジェットをカテゴリ別に整理して印刷できます(例:mov edx)。数百の可能性があります。また、ガジェットあたりの行数を変更して結果を絞り込むこともできます。

結果を印刷する際には、ASLR、CFG、Windows システム DLL、または単純な不良バイトなど、ガジェットを除外するためのさまざまな種類のフィルターを適用する多くのオプションがあります。これはすべて 高度にカスタマイズ可能 です。

特定のガジェットを 難読化 する必要がある場合があります。ガジェットアドレスに不良バイトがあるために利用できない場合などです。これには多くのオプションがあり、使用するレジスタや不良バイトに基づいて除外することもできます。
ここでは、ユーザーは難読化を使用して、仮に使用できなかった xor eax, edi # ret のアドレスを実行時に動的にデコードしています。デコード後、push r32 / ret により即座に実行されます。これは、不良バイトのために他の方法では利用できないガジェットを使用する優れた方法です。ROCKET はこれを数秒で完了します。整数オーバーフローを使用したこの方法は、不良バイトや利用可能なレジスタの不足(つまり、ユーザーが除外したレジスタが多すぎる)の問題がなければ、ほぼ確実に機能します。
このツールは、Bramwell Brizendine 博士 によって作成および記述されました(2023 年初頭開始)。
Shiva Shashank Kusuma は、Bramwell Brizendine 博士の大学院生として、ROP ROCKET のパターン開発に取り組みました。彼は非常に貴重な仕事をし、DEFCON や Black Hat Arsenal での共同講演者でもあります。2025 年には、Shiva は ROP ROCKET のプログラミングにも貢献し始めました。
09/18/2023 - さまざまな機能強化。Windows システムコールに至る far jump をリークするためのバリアント方法のさらなるサポート。
2024年3月 - 重要な更新をほぼ定期的に行っています。ROP ROCKET を積極的に使用する場合は、可能な限り最新のコピーを保持するようにしてください。個々の変更はリストされません。小さな変更と更新は継続的に行われる可能性があります。主要な新機能のみが説明されます。(いくつかのマイナーな新機能はすでに追加されています。) 2024年3月下旬~4月3日 - エミュレーションの広範な更新により効率を向上および強化。個々のガジェットを生成するための多くの可能性オプションをサポート。バグの修正。pushad を介した VirtualAlloc および VirtualProtect の新しいリリース。他のツールが以前に VirtualProtect と VirtualAlloc をサポートしていたため、私たちはあえて含めていませんでしたが、ツールの機能によって強化できるため、これらを含めないのは怠慢であると感じています。pushad を介した VirtualAlloc および VirtualProtect の完全なテンプレートを作成しました。これにはシェルコード(電卓をポップアップ)も含まれています。
2024年5月 - Windows システムコールの大規模なリファクタリングにより、実際のバイナリで見つかるものを大幅に拡大。SysWow64(つまり 32 ビット)で Windows システムコールを実行するために必要な FS レジスタをリークする、長くて望ましくないガジェットでも自動的に処理できます。その他の多数のマイナーな機能強化。
2025年6月28日 - 大規模な更新。ROP ROCKET に以前含まれていなかった 17 の新しい WinAPI をサポート。初期オーバーフロー量を定義する機能を追加。これは、エミュレーション時に文字列やポインタへの計算に影響を与える可能性があるため重要です。