GptHidra

この記事をシェア

概要

GptHidra は、リバースエンジニアリングソフトウェアであるGhidraのプラグインです。デコンパイルした関数の説明をOpenAI社のChatGPTに問い合わせることが可能です。

使い方

①GhidraのScript Managerを開き、「Create New Script」->「Python」を選択し、スクリプト名を入力

スクリーンショット画像

②エディタにGptHidra.pyの内容をコピーして貼り付け、必要に応じてAPI_KEYの変数を更新して保存

スクリーンショット画像

実行方法

説明を表示したい関数を選択し、GptHidraを実行します。関数の説明はGhidraコンソール上に表示されます。[Tools]のメニューや[@keybinding]で設定されているショートカットキー(Ctrl + Alt + G)による実行も可能です。

マルウェア解析における利用方法

マルウェア解析では、外部環境と接続していない専用の環境で行っている場合もあることが想定されます。そのため、ここではローカル環境で大規模言語モデル(LLM)を実行することが可能なOllamaを利用します。利用にあたり一部コードを修正し、ローカル環境のOllamaサーバーに接続先を変更して利用する方法を紹介します。

Ollamaサーバーに接続させるため、通信先やリクエスト、レスポンス部分のコードを一部書き換えます。主要な部分のみ変更したコード例を以下に示します。モデル部分には、Ollamaで利用可能な任意のモデルを選択し保存します。

スクリーンショット画像

以下は、ランサムウェアGandCrabの暗号アルゴリズムの関数で実行した結果です。関数の説明は、コンソール画面(画像の下側)に表示されます。

スクリーンショット画像

出力された説明には、暗号アルゴリズムの可能性が示唆されています。説明の内容はモデルの性能により左右されるため、今後のLLMモデルの発展が期待されます。また、プロンプトを書き換えることで出力内容を調整することも可能です。ただし、生成AIを用いているため不正確な内容が出力される場合があることに注意する必要があります。
また、1つの関数のみから説明を作成するため、難読化やパックが行われていると十分な説明を得られない可能性もあります。以前紹介したPE-seiveやhollows_hunterなどを用いて事前にアンパックすることや関数名や変数名を変更しておくことで、よりわかりやすい説明が生成されやすくなります。

以下は、すべての関数に対して関数名と簡単な説明をリクエストした例です。事前にまとめて処理しておくことで、解析に役立つ情報が得られる可能性があります。

スクリーンショット画像
この記事をシェア
サイバーセキュリティ
情報局の最新情報を
チェック!