
IDA Pro用のHashDB APIハッシュルックアッププラグイン
IDA Pro向けのマルウェア文字列ハッシュ検索プラグインです。このプラグインはOALABS HashDB参照サービスに接続します。
ハッシュアルゴリズムデータベースはオープンソースであり、新しいアルゴリズムはGitHub こちらから追加できます。プルリクエストはほとんど自動化されており、自動テストが合格すれば、数分以内に新しいアルゴリズムがHashDBで使用可能になります。
HashDBは、IDA逆アセンブリビューでハッシュ定数を右クリックし、HashDB Lookupクライアントを起動することで、マルウェア内でハッシュ化された文字列を検索するために使用できます。
プラグインを使用してハッシュを検索する前に、HashDBの設定を構成する必要があります。設定ウィンドウはプラグインメニュー Edit->Plugins->HashDB から起動できます。
Refresh Algorithms をクリックして、HashDB APIからサポートされているハッシュアルゴリズムのリストを取得し、解析中のマルウェアで使用されているアルゴリズムを選択します。
各ハッシュ値に対してXORを有効にするオプションもあります。これはマルウェア作成者がハッシュをさらに難読化するために使用する一般的な手法です。
HashDB参照サービスのデフォルトAPI URLは https://hashdb.openanalysis.net/ です。自身の内部サーバーを使用している場合、このURLを変更してサーバーを指定できます。
HashDBによって新しいハッシュが識別されると、ハッシュとそれに関連する文字列がIDAの列挙型に追加されます。この列挙型は、IDA内のハッシュ定数を対応する列挙名に変換するために使用できます。列挙名は、既存の列挙型との競合がある場合に備えて、設定から構成可能です。
プラグイン設定が構成されたら、IDA逆アセンブリまたは擬似コード(Hex-Rays)ウィンドウ内の任意の定数を右クリックし、その定数をハッシュとして検索できます。右クリックでは、必要に応じてXOR値を設定する簡単な方法も提供されます。
ハッシュがモジュールの一部である場合、そのモジュールからすべてのハッシュをインポートするかどうかを尋ねるプロンプトが表示されます。これはハッシュを一括で取得する簡単な方法です。例えば、識別されたハッシュの1つが kernel32 モジュールの Sleep である場合、HashDBは kernel32 のすべてのハッシュ化されたエクスポートを取得できます。
ハッシュが解決された後(またはモジュールが一括インポートされた後)、HashDBは現在の関数をスキャンし、一致するすべての定数をその列挙名に変換します — オペランド0~2にわたり、符号拡張された値には32ビットマスクのフォールバックが使用されます。逆アセンブリビューとHex-Raysビューは自動的に更新されます。既にインポートしたモジュールはセッション中キャッシュされるため、新しいハッシュのたびに kernel32 などのインポートを再度求められることはありません。
HashDBには、ハッシュ値に基づいてハッシュアルゴリズムを識別しようとする基本的なアルゴリズム検索も含まれています。検索は、そのハッシュ値を含むすべてのアルゴリズムを返します。どのアルゴリズムが正しいか(あるいはどれも正しくないか)は分析者が判断する必要があります。 この機能を使用するには、ハッシュ定数を右クリックして HashDB Hunt Algorithm を選択します。
このハッシュを含むすべてのアルゴリズムが選択ボックスに表示されます。選択ボックスを使用して、HashDBで使用するアルゴリズムを直接選択できます。Cancel を選択すると、アルゴリズムは選択されません。
APIハッシュを個別に(コード内でインラインで)解決する代わりに、一部のマルウェア開発者はメモリ内にインポートハッシュのブロックを作成します。これらのハッシュはすべて単一の関数内で解決され、動的インポートアドレステーブルを作成し、後でコード内で参照されます。このようなシナリオでは、HashDB Scan IAT 機能を使用できます。
インポートハッシュブロックを選択し、右クリックして HashDB Scan IAT を選択するだけです。HashDBは選択範囲内の各整数型(DWORD/QWORD)を解決しようとします。
HashDBにはPythonの requests モジュールが必要です。IDAの外部のシェルから pip install requests でインストールしてください。
その後、次の2つの方法のいずれかでプラグインをインストールできます。
hashdb.py をIDAの plugins ディレクトリにコピーします。HashDBプラグインは、Python 3 を使用する IDA 7.5以上 (IDA 9.0を含む) を対象としており、下位互換性はありません。