このリポジトリには、FireEye Labs Advanced Reverse Engineering (FLARE) チームが使用する IDA Pro スクリプトとプラグインのコレクションが含まれています。
インストールするには、このリポジトリのプラグイン ディレクトリの内容を %PROGRAMFILES%IDAplugins フォルダにコピーします。
ここの Python ディレクトリを %PROGRAMFILES%IDApython フォルダーにコピーすることも、このディレクトリを含めるように PYTHONPATH 環境変数を変更することもできます。
Shellcode_hashes_search_plugin.py IDA プラグインは、https://www.mandiant.com/blog/precalculated-string-hashes-reverse-engineering-shellcode/ で説明されているハッシュ検索を実装します。
shellcode_hashes ディレクトリには、提供されたデータベースとともに、shellcode_hash_search.py スクリプトのデータベースの作成に使用されるスクリプトが含まれています。
struct_typer_plugin.py プラグインは、ここで説明されている構造体の型指定を実装します: https://www.mandiant.com/blog/applying-function-types-structor-fields-ida/
stackstrings_plugin.py は、ここで説明されている手動で構築された文字列のリカバリを実装します: http://www.fireeye.com/blog/threat-research/2014/08/flare-ida-pro-script-series-automatic-recovery-of-マルウェア内の構築された文字列.html
IDA Pro 用のこのスクリプトは、MSDN 情報を XML ファイルからデータベースに追加します。このプラグインに関する情報は、https://www.fireeye.com/blog/threat-research/2014/09/flare-ida-pro-script-series-msdn-annotations-ida-pro-for-malware でご覧いただけます。 -分析.html
次の機能が含まれています。
注意: IDA でannotate_IDB_MSDN.pyを実行します。
すべてのファイル (IDAPython スクリプト、XML パーサー、MSDN 情報 XML ファイルなど) は、IDA Pro からアクセスできる同じディレクトリに配置する必要があります。 IDA では、 [ファイル] - [スクリプト ファイル...] (ALT + F7) を使用してannotate_IDB_MSDN.pyを開きます。 [OK] をクリックした後、フォームを使用して設定を変更し、IDB ファイルに注釈を付けることができます。
スクリプトを一度実行すると、 [表示] - [最近のスクリプト] (ALT + F9) も使用できるようになります。
このプラグインを使用すると、https://www.fireeye.com/blog/threat-research/2015/04/flare_ida_pro_script.html で説明されているように、間接呼び出しの関数タイプを指定または選択できます。
このスクリプトを使用すると、既存の IDB データベースから関数パターンを簡単に生成でき、それを FLIRT シグネチャに変換して、新しいファイル内の同様の関数を識別するのに役立ちます。詳細については、https://www.fireeye.com/blog/threat-research/2015/01/flare_ida_pro_script.html を参照してください。
このユーティリティは、プログラム内で使用される関数の静的引数を識別するのに役立ちます。これは、文字列デコーダ関数の引数を抽出するために最も一般的に使用されます。使用例は次の場所で入手できます。
詳細については、次のブログ投稿を参照してください。
https://www.fireeye.com/blog/threat-research/2015/11/flare_ida_pro_script.html
このスクリプトは、ターゲットの Mach-O 実行可能ファイルの Objective-C ランタイム関連セクションで定義されているセレクター参照とその実装の間の相互参照を作成します。また、代わりに実装関数を指すようにセレクター参照ポインターにパッチを適用します。これにより、実装とそのセレクターがコード全体で参照される場所との間のスムーズな移行が可能になり、Objective-C コードの分析が容易になります。 objc_msgSend バリアントの各呼び出しに役立つ Objective-C コード コメントが追加され、どのメソッドがどのクラスで呼び出されているかを明確に示します。
ironstrings.py
は、コード エミュレーションを使用してマルウェアから構築された文字列 (スタック文字列) を回復する IDAPython スクリプトです。詳細については、スクリプトの README を参照してください。
code_grafter.py
は、IDA データベースにコードを移植して、インポートされたさまざまな関数を実装し、Bochs (またはこれらの特別な処理を実装していない他のエミュレーション ツール) で完全にアンパッカーまたはデコーダーを実行できる可能性を高める IDAPython スクリプトです。機能)。これにより、エミュレートされた実行がVirtualAlloc
やlstrlenA
などの関数に到達したときの障害が防止されます。