
この IDA Python プラグインを使用して、バイナリを YARA ルールでスキャンします。一致した YARA ルールはすべてオフセットとともに一覧表示され、素早くジャンプできます!
🍻 このプラグインとコードのすべての功績は David Berard (@p0ly) にあります 🍻
このプラグインは David の優れた findcrypt-yara プラグイン をコピーしたものです。このプラグインは、任意の YARA ルールを使用できるように拡張したものです。
プラグインは、メニューの Edit->Plugins->FindYara から、またはホットキー Ctrl-Alt-Y で起動できます。起動すると、ファイル選択ダイアログが開き、YARA ルールファイルを選択できます。ルールファイルを選択すると、FindYara は読み込まれたバイナリをスキャンしてルールの一致を探します。
すべてのルール一致は選択ボックスに表示され、一致をダブルクリックしてバイナリ内の位置にジャンプできます。
FindYara は IDA 内で読み込まれた PE セクションをスキャンします。つまり、PE ヘッダーに対する一致を含む YARA ルールは IDA 内では一致しません。IDA は PE ヘッダーをスキャン可能なセクションとして読み込みません。また、IDA でバイナリを読み込む際に Load resources を選択していない場合、リソースセクションはスキャンできなくなります。
これにより、YARA ルールが IDA 外では一致するのに、FindYara を使用すると一致しないというイライラする状況が発生する可能性があります。このような場合は、YARA ルールを編集して PE ヘッダーやリソースセクションに対する一致を削除してみてください。
プラグインを使用する前に、IDA 環境に Python 用 YARA モジュールをインストールする必要があります。最も簡単な方法は、IDA 外のシェルから pip を使用することです。
pip install yara-python
yara モジュールを誤ってインストールしないでください。 yara という Python モジュールは yara-python モジュールを混乱させるため、誤ってインストールした場合はアンインストールする必要があります。
YARA モジュールがインストールされたら、最新の findyara.py リリースを IDA のプラグインディレクトリにコピーするだけで、YARA スキャンを開始できます。
FindYara は IDA 7+ および Python 3 向けに開発されており、下位互換性はありません。
FindYara は、バージョン 4+ の Python YARA モジュールが必要です。それより前のバージョンの YARA はプラグインと互換性がなく、YARA の一致形式の破壊的な変更により問題が発生する可能性があります。
David Berard (@p0ly) に心から感謝します - GitHub でフォロー!これはほとんど彼のコードであり、オリジナルのプラグインフレームワークの功績はすべて彼にあります。
また、Alex Hanel @nullandnull にも敬意を表します - GitHub でフォロー。Alex は IDC メソッドの使用方法を整理するのを手伝ってくれました。彼の IDA Python ブック は素晴らしい参考書です!