Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
JOP_ROCKET — このフレームワークにより、ユーザーはJOPガジェットを発見でき、DEPをバイパスするための完全なJOPチェーン構築を自動化できます。JOP ROCKETは、Windowsジャンプ指向プログラミングの究極のソリューションです。JOP ROCKETはまた、JOPで可能なことを大幅に拡張する、斬新な2ガジェットディスパッチャーも発見します。 | Kitploit
ツール/GitHubGitHub/bw3ll/jop_rocket
エクスプロイトリバースエンジニアリング論文と研究学習と教育ペイロード開発バイナリエクスプロイトラボと実践
GitHubbw3ll/jop_rocket

JOP_ROCKET

このフレームワークにより、ユーザーはJOPガジェットを発見でき、DEPをバイパスするための完全なJOPチェーン構築を自動化できます。JOP ROCKETは、Windowsジャンプ指向プログラミングの究極のソリューションです。JOP ROCKETはまた、JOPで可能なことを大幅に拡張する、斬新な2ガジェットディスパッチャーも発見します。

リポジトリを見る
11620102年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

alt text

JOP ROCKET

注記: 2.15 では、ツーガジェットディスパッチャを導入しました。これにより、ディスパッチャガジェットの可能性が大幅に広がります。2021年5月26日の2.15では、多くの最適化と追加の新機能が加えられています。

更新: 2021年11月29日: @Hack in Ryadh のスライドと、Shellcodeless JOP に関するホワイトペーパーをアップロードしました。講演で使用されたサイレントデモ動画は、こちらからご覧いただけます: https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV

更新: 2022年12月1日: この GitHub の最後に Q&A を追加しました。リソース(講演や論文)へのリンクが含まれています。

現在のバージョン: 2.15

Jump-oriented Programming Reversing Open Cyber Knowledge Expert Tool(略称 JOP ROCKET)は、x86 Windows 環境での JOP ガジェットの発見を支援するために設計されたツールです。このツールは DEF CON 27 で公開され、Dr. Bramwell Brizendine と Dr. Josh Stroschein による講演の題材となりました。2020年9月に、開発中だった大規模なアップデートがリリースされ、近い将来にマイナーアップデートが計画されています。

このツールをダウンロードするには、https://github.com/Bw3ll/JOP_ROCKET にアクセスしてください。

これまでに多数の主要なアップデートが行われています。多くのアップデートを活用するために、2.15 より前のバージョンは更新することをお勧めします。これらには、自動 JOP チェーン生成、新しいタイプのガジェットの発見、新しいタイプのディスパッチャガジェット、ツーガジェットディスパッチャが含まれます。JOP ROCKET は、そのパフォーマンスと速度を強化・最適化するための、その他の重要な変更も多数行われています。

JOP ROCKET は、Capstone 逆アセンブルエンジンやその他の依存関係を利用する Python プログラムです。このソフトウェアエクスプロイトツールは、ジャンプ指向プログラミング(Jump-oriented Programming)を支援するために設計された、フル機能を備えたツールです。Windows 上で実行することを想定しています。

現時点では、ヘルプメニューに記載されている以上の使用情報はありません。JOP エクスプロイトの構築は簡単ではなく、非常にニュアンスに富んでおり、ROP と共通する部分もありますが、多くの違いがあります。簡単なデモについては DEF CON の講演を参照してください。 https://www.youtube.com/watch?v=PMihX693mPE

このツールは、ダコタ州立大学(Dakota State University)の博士課程プログラムにおいて、CSC 848: Advanced Software Exploitation(プログラムで最も難しいコース)の一部として教えられてきました。学生たちは、DEP と ASLR のバイパスを含むエクスプロイトを完成させました。

JOP ROCKET に関するさまざまな問題への支援、そしてインストール手順について、Austin Babcock に感謝します。彼は JOP の達人です。

ここにアーカイブ、JOP ROCKET challenge - toy binaries.zip をアップロードしました。これにより、関心のある方は JOP ROCKET を使って、いくつかのサンプルトイバイナリで JOP をテストおよび練習できます。データ実行防止(DEP)をバイパスできますか? これは、脆弱であることが保証され、適切なガジェットが存在することがわかっているバイナリで JOP を練習したい場合に適しています。同じバイナリには、簡単なバージョンと難しいバージョンがあります。ただし、JOP は慣れるまでは最初はおそらく難しいでしょう。これらのバイナリで JOP をマスターしたら、十分なガジェットがあると仮定して、実際のガジェットでも試すことができます。ディスパッチャガジェットパラダイムを使用する場合は、ディスパッチャガジェットが必要であることに注意してください。JOP は ROP と混在させることも可能で、JOP ガジェットを使って RET を指すようにすることができます。たとえば、JMP EDX で EDX が RET を指すようにできます。これは、ROP を機能させるために 1 つか 2 つの JOP ガジェットだけが必要な場合にさらに役立ちます。アーカイブ内のバイナリを使用すると、ディスパッチャガジェットパラダイムをいくつかの異なる方法で使用できるはずです。

JOP のディスパッチャガジェットパラダイムを使用すると、ROP を 100% 排除できます。ただし、ディスパッチテーブルとディスパッチャガジェットをロードするために、2 つの ROP ガジェットから開始するのが最も簡単です。プリビルドの JOP チェーンは、それらが存在すれば、これを自動的に実行します。そこから先は、間接ジャンプと間接コール(JMP EBX、CALL EDX など)の両方を使用した純粋な JOP にできます。

JOP ROCKET の基本的なインストール手順

ステップ 1:

Python 2.7 をインストールします。最も簡単な方法は、Web サイトから行うことです: https://www.python.org/download/releases/2.7/

すでに Python 3 をお持ちの場合でも、Python 2.7 が必要です。このツールは Python 3 では正常に動作しません。

両方をお持ちの場合は、特別なコメントを追加する必要があります:

#!python2

これを rocket.py の先頭に追加します。その後、"python rocket.py" ではなく "py rocket.py" で実行します。これにより、プログラムが Python 2.7 を使用して実行されることが保証されます。または、単に py -2 rocket.py を実行することもできます。

alt text

ステップ 2:

pip が Python にまだ含まれていない場合は、pip をインストールします。

  • https://pip.pypa.io/en/stable/installing/

リンク先の指示に従って、提供されているスクリプトを保存して実行する必要があります。エラーが発生した場合は、「代替」スクリプトを試してください。

それでも pip が機能しない場合は、Path システム環境変数に "C:\python27\Scripts"(または対応するディレクトリ)を追加してみてください:

  • スタート
  • コンピューターを右クリック
  • プロパティ
  • システムの詳細設定
  • 詳細設定タブ
  • 環境変数

alt text

ステップ 3:

pip で依存関係のインストールを開始します!

注記: pip を使用したインストールは Windows ターミナルでは機能するはずですが、Cygwin 環境では機能しない場合があります。Cygwin を使用する場合は、代わりにソースコードからインストールする必要があるかもしれません。これはより時間のかかる作業になる可能性があり、各依存関係の製作者による最新のドキュメントを参照することをお勧めします。

  • pip install capstone

  • pip install pefile2

    • おそらく、Python 2.7 には pefile がすでにインストールされているでしょうが、そのバージョンは古いものです。

    • 必要なのは Pefile2 です。

    • プログラムに pefile2 を使用させるには、pip uninstall pefile を実行する必要があるかもしれません。

  • その他... 依存関係の一覧は、このドキュメントの下部にあります。まだインストールされていない場合は、それぞれをインストールする必要があります。

  • 上記の 2 つが、おそらく自分でインストールする必要がある唯一のものです。

依存関係の多くは Python にすでに含まれています。利用可能なモジュールを一覧表示するには、プロンプトを開きます:

alt text

一覧を確認して、すべての依存関係があるかどうかを確認してください。ないものについては、pip またはソースコードからインストールしてください。

依存関係:

  • Capstone
  • pywin32
  • Pefile2
  • Ctypes

注記: pywin32 は Win32file と Win32api に使用されます。

必要なファイル:

1 つのディレクトリに 5 つのファイルすべて(rocket.py、lists,py、checkIt.py、ui.py、stackpivot.py)を置いてください。ツールの使用を開始するには、コマンドラインで python rocket.py filename.exe を実行します。ここで filename.exe は、JOP ガジェットまたは JOP チェーンを取得したいプログラムです。

エラー:

"SyntaxError: Missing parentheses in call to 'print'" のようなエラーが発生する場合、おそらく Python 3 で実行されています。プログラムが Python 2 を使用するように、ステップ 1 で説明した修正を試してください。

「lists」または「ui」に関連するエラーは、lists.py と ui.py ファイルの場所が原因である可能性が高いです。これらのファイルが rocket.py と同じディレクトリにあることを確認してください。

より高度なインストール手順

Cygwin 環境でこれを使用するには、おそらく Capstone をソースコードからインストールする必要があります。これにはさまざまな方法があり、Capstone のドキュメントが支援を提供します。Cygwin は元々このツールの開発中に使用されていましたが、現在はそうではありません。JOP ROCKET v2.0 は Cygwin では未テストであり、コマンドプロンプトが推奨される使用方法です。注記: Cygwin の使用は明示的にはサポートされなくなりました。また、このプログラムでの使用は推奨されなくなりました。

基本的な使い方

より詳細な使用情報は今後公開される予定です。サポートが必要な場合は、DEF CON 27 の講演とヘルプサブメニューを参照してください。

ただし、開始するには、5 つの Python ファイル(rocket.py、ui.py、stackpivot.py、checkIt.py、lists.py)を同じディレクトリに置く必要があります。その後、コマンドラインから実行します。インストールディレクトリ内のローカルファイルを指定することもできますが、モジュール/DLL は見つかりません。これらを見つけるには、プログラムをインストールし、アプリケーションへの絶対パスをテキストファイル内の入力として指定し、それをコマンドラインの引数として提供します。例:

python rocket.py input.txt

input.txt 内には絶対パス、例: C:\rocket2\sample_binary.exe を記述します。絶対パスを指定することで、必要に応じてスキャンするモジュールも抽出できます。ローカルディレクトリ内のプログラムのみで JOP ROCKET を使用したい場合は、イメージ実行ファイル自体、つまり DLL なしのガジェットのみが見つかります。その方法で使用するには、次の構文を使用します:

python rocket.py sample_binary.exe

実行ファイルが同じディレクトリにある場合は、上記の方法で JOP ROCKET を使用できます。

バイナリのすべてのモジュール/DLL を確実に取得する

分析する実行ファイルまたは DLL をロードする場合、2 つのアプローチがあります。1 つ目は、実行ファイルを同じディレクトリに置き、それを引数としてプログラムを実行する方法です(例: python rocket.py binary.exe)。これにより、ユーザーは多くのシステムモジュールを識別して抽出できます。ただし、一部の非システムバイナリは見つかりません。包括的なカバレッジを得るには、ユーザーはアプリケーションへの絶対パスをテキストファイルに指定し、それを ROCKET への入力として使用する必要があります(例: python rocket.py input.txt)。これにより、ROCKET は対象アプリケーションに関連する非システム DLL を特定、抽出、検索できます。したがって、一部の DLL が除外される可能性があるため、通常はテキストファイルを介してバイナリを入力として指定することをお勧めします。例: python rocket.py binaryToScan.txt。binaryToScan.txt にはバイナリのパス、C:\Users\CoolPerson\Desktop\Instructions\targetBinary.exe を含める必要があります。

非常に大きなバイナリでのメモリ問題

32 ビット版の Python は、非常に大きなバイナリでは動作しなくなります。これらを処理するには、64 ビット版の Python を使用する必要があります。

32 ビット版から 64 ビット版の Python への移行に関する Austin の手順は次のとおりです: 64 ビット版の python2.7 をインストールするには、まず古いインストールがアンインストールされていることを確認してください。64 ビット版をインストールした後、"DLL load failed: %1 is not a valid Win32 application" のようなライブラリのインポート時にエラーが発生する場合があります。これは、Python が以前にインストールされた 32 ビット版をロードしようとするために発生します。この問題を修正するには、pip を使用してライブラリをアンインストールします。Python 2 と 3 の両方がインストールされている場合は、"py -2 -m pip " のように使用して、正しいバージョンの pip が使用されていることを確認してください。

capstone の問題の修正は簡単です:

py -2 -m pip uninstall capstone

py -2 -m pip install capstone

win32api インポートに関するエラーは pywin32 に関連しています。pip がプロセスを自動化しない可能性があるため、これをアンインストールするのはより困難です。...\Python27\Lib\site-packages 内の PyWin32 ファイルを削除して手動でアンインストールする必要があるかもしれません。

次に、次を実行します:

py -2 -m pip install pywin32

その後、...\Python27\Scripts\pywin32_postinstall.py -install を実行してインストールを完了します。

Q & A

Q: JOP ROCKET の何が特別なのですか?

A: JOP ROCKET は、ディスパッチャガジェットを含む必要なすべてのガジェットを見つけます。ディスパッチャガジェットを検索する他のツールは知りません。さらに、新しいタイプのガジェットと JOP への革新を導入しています。JOP ROCKET は、複数のスタックピボットの連続を伴うディスパッチャガジェットパラダイムの新しい変種を使用して、DEP をバイパスする完全な JOP チェーンを生成することもできます。現実的には、JOP ROCKET を使用せずにディスパッチャガジェットアプローチで JOP エクスプロイトを行うことは非常に困難です。より限定的な JOP ガジェットを提供する他の ROP ツールもありますが、それらはほとんど将来の作業のためのプレースホルダーであり、JOP ROCKET で見つかる一部のガジェットなしでは JOP エクスプロイトを完了できません。

Q: 以前どこかの講演で JOP ROCKET を見たと思いますが、どこでしたか?

ツールをダウンロード