CERT Kaiju は、Ghidra 用のバイナリ解析ツールのコレクションです。
これは、CERT Pharos バイナリ分析フレームワークの一部の機能、特に関数ハッシュとマルウェア分析ツールの Ghidra/Java 実装ですが、時間の経過とともに新しいツールや機能が拡張されることが予想されます。
これは新しい取り組みであるため、この実装は ROSE に基づく元の C++ 実装と完全な機能同等性をまだ持っていません。ただし、Java と Ghidra への移行により、実際には、元のフレームワークでは利用できなかったいくつかの新機能が有効になりました。特に、非 x86 アーキテクチャの処理が改善されました。フレームワークとツールの大幅な再構築が行われており、Java と Ghidra への移行により C++ 実装とは異なる機能が有効になったため、議論する際に実装間の混乱が少なくなるように、新しいブランドを利用することが決定されました。さまざまなツールと機能。
近い将来の私たちの意図は、オリジナルの Pharos フレームワークと Kaiju の両方を並行して維持することです。なぜなら、どちらも独自の機能を提供できるからです。
注意: プロトタイプとして、このプラグインによって作成された関数ハッシュを評価すると、多くの問題が発生する可能性があります。たとえば、Pharos の実装とは異なり、Kaiju の関数ハッシュ モジュールは非常に小さな関数 (たとえば、より多くの意図しない衝突を引き起こす RET のような単一命令を持つ関数) のハッシュを作成します。そのため、このプラグインと Pharos fn2hash の間では分析結果が異なる場合があります。
事前に構築された Kaiju パッケージが利用可能です。 Ghidra のバージョンに対応する ZIP ファイルをダウンロードし、以下の手順に従ってインストールしてください。 Ghidra のグラフィカル インターフェイスを介してインストールすることをお勧めしますが、適切なディレクトリに手動で解凍してインストールすることもできます。
CERT Kaiju には次のランタイム依存関係が必要です。
Z3 は、事前に構築されたパッケージの一部として事前にコンパイルされた状態で提供されます。または、Z3 を独自に構築することも、Linux ディストリビューションのパッケージを使用することもできます。
Ghidra を起動し、開いたウィンドウからメニューからFile > Install Extension
を選択します。拡張機能ウィンドウの上部にあるプラス記号をクリックし、ファイル ブラウザで .zip ファイルに移動して選択し、[OK] をクリックします。拡張機能がインストールされ、ウィンドウ内の拡張機能の名前の横にチェックボックスがマークされ、インストールされて準備ができていることがわかります。
インターフェイスでは、拡張機能の使用を開始するために Ghidra を再起動するように求められます。再起動するだけで、Kaiju の追加機能が対話型またはスクリプトで使用できるようになります。
一部の機能では、Kaiju プラグインを有効にする必要がある場合があります。これを行うには、コード ブラウザを開き、メニューのFile > Configure
に移動します。表示されたウィンドウで、「CERT Kaiju」カテゴリ アイコンの下にあるConfigure
リンクをクリックします。ポップアップには、公開されている利用可能な Kaiju プラグインがすべて表示されます。有効化したいプラグインにチェックを入れて、「OK」をクリックします。これで、インタラクティブなプラグイン機能にアクセスできるようになります。
プラグインを有効にしてもすぐに表示されない場合は、コード ブラウザーの [ Window
メニューの下でプラグインを見つけることができます。
将来のツールの実験的な「アルファ」バージョンをテストしたい場合は、「実験的」カテゴリから入手できる場合があります。ただし、これらのプラグインは明らかに実験的なものでサポートされておらず、運用環境での使用はお勧めできません。ただし、早期のフィードバックは大歓迎です。
Kaiju などの Ghidra 拡張機能は、拡張機能の内容を Ghidra インストールの適切なディレクトリに解凍することで手動でインストールすることもできます。詳細については、「Ghidra インストール ガイド」を参照してください。
Kaiju 拡張機能をソース コードから直接ビルドすることもできます。最上位の Kaiju ソース ディレクトリに含まれるINSTALL.md
ファイルを参照してください。
Kaiju のツールは、対話型のグラフィカルな方法で、またはバッチ ジョブにより適した「ヘッドレス」モード経由で使用できます。一部のツールは、ツールの性質上、グラフィカルまたはヘッドレスでのみ使用できる場合があります。
Kaiju は、Java Swing と Ghidra のプラグイン アーキテクチャを利用して、Ghidra 内にインタラクティブなグラフィカル インターフェイス (GUI) を作成します。
Kaiju のツールのほとんどは実際には分析プラグインであり、「自動分析」オプションが選択されている場合、逆アセンブルする新しい実行可能ファイルをインポートするか、コード ブラウザ ウィンドウから直接Analysis > Auto Analyze...
を選択することによって自動的に実行されます。自動分析ツールではデフォルトで選択されたいくつかの CERT 分析プラグインが表示されますが、必要に応じて有効/無効にすることができます。
ただし、さまざまな GUI ツールが機能する前に、分析ツールを実行する必要があります。まれなケースでは、自動分析を 2 回実行して、すべてのメタデータが確実に生成されて正しいパーティショニングおよび逆アセンブリ情報が作成されていることを確認すると役立つ場合もあります。これにより、ハッシュ結果に影響を与える可能性があります。
アナライザーは Ghidra の分析フェーズ中に自動的に実行され、次のものが含まれます。
GUI ツールには次のものが含まれます。
Kaiju > GhiHorn
選択して、Ghidra の CodeBrowser からこのツールにアクセスします。 CTRL-G
を押してプラグインを起動することもできます。Window > CERT Function Hash Viewer
を選択して、このツールの使用を開始します。新しいウィンドウが開き、ハッシュとその他のデータのテーブルが表示されます。ウィンドウの上部にあるボタンを使用して、テーブルを更新したり、データをファイルまたは YARA 署名にエクスポートしたりできます。このウィンドウは、他のプラグインと一緒に使いやすくするために、メインの Ghidra CodeBrowser にドッキングすることもできます。このツールを使用する場合、Ghidra のHelp > Contents
メニューで、より広範な使用方法のドキュメントを参照できます。Kaiju > OOAnalyzer Importer
選択します。シンプルなダイアログ ポップアップが表示され、インポートする JSON ファイルを見つけるように求められます。このツールを使用する場合、Ghidra のHelp > Contents
メニューで、より広範な使用方法のドキュメントを参照できます。Ghidra は「ヘッドレス」モードもサポートしており、状況によっては対話型 GUI を使用せずにツールを実行できます。したがって、これらのコマンドは、スクリプト作成や多数のファイルの「バッチ モード」ジョブに利用できます。
ヘッドレス ツールは主に Ghidra の GhidraScript 機能に依存しています。
ヘッドレス ツールには次のものが含まれます。
単一の実行可能ファイル内のすべての関数の関数ハッシュを出力するなど、単純なシナリオでこれらのヘッドレス コマンドを実行するために、 kaijuRun
という名前の単純なシェル起動スクリプトが組み込まれています。 GHIDRA_INSTALL_DIR
変数が設定されていると仮定すると、たとえば次のように単一の実行可能ファイルに対して起動スクリプトを実行できます。
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
このコマンドは、結果をexample.exe.Hashes.csv
という自動的に名前が付けられたファイルに出力します。
kaijuRun
スクリプトの基本的なヘルプは、以下を実行することで利用できます。
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
このモードとkaijuRun
ランチャー スクリプトの使用方法の詳細については、リポジトリのdocs/HeadlessKaiju.md
ファイルを参照してください。
より包括的なドキュメントとヘルプは、2 つの形式のいずれかで利用できます。
すべての Kaiju ツールとコンポーネントの Markdown 形式のドキュメントとヘルプについてはdocs/
ディレクトリを参照してください。これらのドキュメントは、コマンド ラインからでも保守、編集、読み取りが簡単です。
あるいは、Ghidra の組み込みヘルプ システムでも同じドキュメントを見つけることができます。これらのヘルプ ドキュメントにアクセスするには、Ghidra メニューからHelp > Contents
に移動し、ヘルプ ウィンドウの左側にあるツリー ナビゲーションからCERT Kaiju
を選択します。
Ghidra ヘルプ ドキュメントは、 docs/
ディレクトリ内の Markdown ファイルとまったく同じ内容であることに注意してください。インツリー Gradle プラグインのおかげで、Gradle はビルド プロセス中に自動的に Markdown を解析し、Ghidra HTML にエクスポートします。これにより、メンテナンスがさらに簡単になり (ドキュメントを 2 か所ではなく 1 か所で更新)、2 つの場所の同期が維持されます。
新しいドキュメントはすべてdocs/
ディレクトリに追加する必要があります。
このソフトウェアは、カーネギー メロン大学のソフトウェア エンジニアリング研究所によって、簡易 BSD スタイルのライセンスに基づいてライセンス供与されています。このライセンスの完全な詳細と、このプロジェクトで使用される依存関係のライセンス条項は、このリポジトリのルートにあるLICENSE.md
ファイルで確認してください。
CERT Kaiju ロゴは、Cameron Spahn によって作成されたアートに基づいており、当初はクリエイティブ コモンズ表示 - 継承 4.0 国際ライセンスの条件に基づいてリリースされました。