この Ghidra ツールキットは、ヘッドレス モードでの Ghidra の実行に関連するさまざまなタスクを合理化し、自動化するように設計された包括的なツール スイートです。このツールキットは、Ghidra 内および Ghidra と並行して実行できる幅広いスクリプトを提供し、ユーザーが分析されたコードベースで脆弱性ハンティング、ChatGPT を使用した疑似コードのコメント、データ視覚化を使用したレポートなどのタスクを実行できるようにします。これにより、ユーザーは独自のスクリプトをロードおよび保存し、スクリプトの組み込み API と対話できるようになります。
ヘッドレス モードの自動化: このツールキットを使用すると、ユーザーは Ghidra をヘッドレス モードでシームレスに起動して実行できるようになり、コード分析タスクの自動化およびバッチ処理が可能になります。
スクリプト リポジトリ/管理: ツールキットには、Ghidra 内で実行できる事前構築されたスクリプトのリポジトリが含まれています。これらのスクリプトはさまざまな機能をカバーしており、ユーザーがさまざまな分析および操作タスクを実行できるようにします。これにより、ユーザーは独自のスクリプトをロードおよび保存できるため、特定の分析要件に合わせた柔軟性とカスタマイズ オプションが提供されます。ユーザーは、スクリプト コレクションを簡単に管理および整理できます。
柔軟な入力オプション: ユーザーはツールキットを利用して、個々のファイルまたは複数のファイルを含むフォルダー全体を分析できます。この柔軟性により、小規模と大規模の両方のコードベースの効率的な分析が可能になります。
パターン認識による脆弱性ハンティング: ツールキットのスクリプトを活用して、分析対象のコードベース内の潜在的な脆弱性を特定します。これは、セキュリティ研究者や開発者がセキュリティの弱点を発見し、積極的に対処するのに役立ちます。
SemGrep による脆弱性ハンティング: セキュリティ研究者 0xdea と彼らが作成したルールセットのおかげで、単純なルールと SemGrep を使用して C/C++ 疑似コードの脆弱性を検出できます (彼らの github: https://github.com/0xdea/semgrep) -ルール)
擬似コードの自動生成: Ghidra のヘッドレス モード内で擬似コードを自動的に生成します。この機能は、手動介入なしでコード ロジックを理解し、文書化するのに役立ちます。
ChatGPT を使用した擬似コードのコメント: ChatGPT を利用して擬似コード スニペットに対して人間のようなコメントを生成することで、コードベースの読みやすさと理解を強化します。この機能は、コード ロジックの文書化と説明に役立ちます。
レポート作成とデータの視覚化: 視覚化を含む包括的なレポートを生成し、分析結果を効果的に要約して表示します。このツールキットは、コードベース内のパターン、依存関係、異常の特定に役立つデータ視覚化機能を提供します。
このプロジェクトを使用する前に、次のソフトウェアがインストールされていることを確認してください。
Ghidra: Ghidra は国家安全保障局の GitHub リポジトリ @ https://github.com/NationalSecurityAgency/ghidra からダウンロードできます。
Java: Java Development Kit (JDK) バージョン 17 以降がインストールされていることを確認してください。 OpenJDK Web サイト @ https://openjdk.org/projects/jdk/17/ からダウンロードできます。
BinExport (オプション) Ghidra 拡張機能のインストール手順に従います https://github.com/google/binexport
SemGrep (オプション) 詳細な手順に従ってください https://semgrep.dev/docs/getting-started/
上記の前提条件をインストールします。
sekiyu リリースを Github から直接ダウンロードするか、 pip install sekiryu
を使用します。
スクリプトを使用するには、実行したいオプションを指定してバイナリに対してスクリプトを実行するだけです。
sekiryu [-F FILE][OPTIONS]
Ghidra (またはその他の製品) を使用してバイナリ分析を実行すると、比較的時間がかかるプロセスであることに注意してください。したがって、ホストのパフォーマンスに応じて、バイナリ分析には数分かかることが予想されます。非常に大規模なアプリケーションまたは大量のバイナリ ファイルに対してsekiyuを実行する場合は、待機する準備をしてください。
www.bushido-sec.com でデモを検索
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
これを使用するには、ユーザーはスクリプトに xmlrpc をインポートし、たとえばproxy.send_data
のような関数を呼び出す必要があります。
send_data() - ユーザーがサーバーにデータを送信できるようにします。 (「データ」は辞書です)
recv_data() - ユーザーがサーバーからデータを受信できるようにします。 (「データ」は辞書です)
request_GPT() - ユーザーが ChatGPT API 経由で文字列データを送信できるようにします。
スクリプトは /modules/scripts/ フォルダーに保存されており、そこにスクリプトをコピーするだけです。 ghidra_pilot.py
ファイルには、ヘッドレス ghidra スクリプトを実行する次の関数があります。
def exec_headless(file, script): """ ghidra のヘッドレス解析を実行 """path = ghidra_path + 'analyzeHeadless'# 変数stmp_folder の設定 = "/tmp/out"os.mkdir(tmp_folder) cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ ファイル + ' '+ "-postscript "+ script +" -deleteProject"# 指定されたファイルとスクリプトを使用して ghidra を実行します。 p = subprocess.run([str(path + cmd)]、shell=True、capture_output=True) os.rmdir(tmp_folder) KeyError を除く e: print(e) os.rmdir(tmp_folder)
使用方法は非常に簡単で、独自のスクリプトを作成して、次のような関数をghidra_pilot.py
に追加するだけです。
def yourfunction(file): try: # scriptscript = "modules/scripts/your_script.py" を設定します。 # 新しいスレッドで exec_headless 関数を開始しますthread = threading.Thread(target=exec_headless, args=(file, script)) thread.start () thread.join() e: print(str(e)) としての例外を除く
ファイルcli.py
はコマンド ライン インターフェイスを担当し、次のように関連付けられた引数とコマンドを追加できます。
Analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="ヘルプ メッセージ", action="store_true")
Scripts/SCRIPTS/SCRIIIIIPTS : このツールは、ユーザーが独自のスクリプトを簡単に保存して実行できるようにするツールキットとして設計されています。もちろん、何らかの種類のスクリプトに貢献できれば (興味深いものはすべて承認されます!)
最適化: どのような種類の最適化も歓迎され、リリースごとにほぼ自動的に承認およびデプロイされます。並列タスクの改善、コードのクリーニング、および全体的な改善など、いくつかの優れた効果が考えられます。
マルウェア分析: これは大きな部分ですが、私には詳しくありません。貢献したいマルウェア アナリストは誰でも、アイデアやスクリプトを提案したり、プロジェクトに直接コードをコミットしたりすることができます。
レポート: 私はデータ視覚化エンジニアではありませんが、誰かがこの部分を改善/貢献する意欲があれば、それは非常に素晴らしいことです。
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
Bushido Security の詳細については、弊社 Web サイト https://www.bushido-sec.com/ をご覧ください。