
自動化されたDLLハイジャック脆弱性発見ツールで、APIフッキングを介してロード時および実行時にPEバイナリを解析し、不足しているDLLを列挙し、悪意のあるなりすましをテストします。
aDLLは、DLL Hijackingの脆弱性を自動的に発見することに特化したバイナリ解析ツールです。このツールは、メモリにロードされたバイナリのイメージを解析し、ロード時に読み込まれるDLLを検索します。また、Microsoft Detoursライブラリを使用してLoadLibrary/LoadLibraryEx関数の呼び出しをフックし、実行時に読み込まれるDLLを解析します。目的は、実行可能ファイルが検索されるフォルダ内で見つからないDLLのリストを取得することです。
aDLLを使用するには、Binariesフォルダにコンパイル済みの実行可能ファイルが用意されています。解析する実行可能ファイルのアーキテクチャ(32ビットまたは64ビット)に合ったバージョンを使用することを推奨します。
ツールを正しく動作させるには、DLL「hook32」「hook64」「informer32」「informer64」がaDLL.exeと同じディレクトリに配置されている必要があります。
aDLLはWindows 10システム上で開発およびテストされています。 古いシステムやVisual Studioがインストールされていない場合、ツールが「VCRUNTIME140.dll not found」のようなエラーを出力する可能性があります。その場合は、Visual C++ Redistributableの更新プログラムをインストールする必要があります。 更新プログラムはこちらから入手できます: https://www.microsoft.com/es-ES/download/details.aspx?id=49984。
ツールを修正/再コンパイルするには、Visual Studio 2015以降の使用を推奨します。 Visual Studioソリューションは、aDLL、Hook、Informerの3つのプロジェクトで構成されています。 _ -aDLL: 実行可能ファイルとしてコンパイルする必要があります。リンクエラーが発生する場合は、Visual Studioリンカを使用してshlwapi.libライブラリを追加の依存関係として追加してください。_ _ -Hook: 解析対象の実行可能ファイルと同じアーキテクチャのDLLとしてコンパイルする必要があります。生成されたHookファイルは、適宜hook32.dllまたはhook64.dllに名前を変更します。両方のアーキテクチャの実行可能ファイルを解析する場合は、両方のDLLをaDLL.exeと同じディレクトリに配置する必要があります。_ _ -Informer: Hookと同様です。DLLとしてコンパイルし、informer32.dllまたはinformer64.dllに名前を変更します。_
ツールには、利用可能なオプションの簡単な説明を画面に表示する-hオプションがあります。
.\aDLL -h
一般的な使用例として、aDLLは少なくとも解析する実行可能ファイルへのパスを受け取る必要があります。
.\aDLL -e "C:\System32\notepad.exe"
オプション:
-h 各オプションの簡単な説明とともにツールのヘルプを表示します。
-e aDLLで解析する実行可能ファイルへのパスを指定します。
-t 実行可能ファイルのパスのリストが記述されたテキストファイルへのパスを指定します。
-o スキャンした実行可能ファイルごとにレポートを保存するディレクトリへのパスを指定します。
-m 実行可能ファイルのマニフェストを検索し、画面に表示します。aDLLはバイナリに埋め込まれたマニフェストを検索します。マニフェストが外部ファイルとして存在する場合は見つかりません。
-w 実行時に読み込まれるDLLを検索している間、実行可能ファイルのプロセスを開いたままにする秒数を指定します。デフォルトは20秒です。
-a 候補DLLが見つかった場合、aDLLは検索順序で正当なDLLを偽装して悪意のあるDLLが実行されるかどうかを自動的にテストします。
-d -aオプションと組み合わせて使用し、悪意のあるDLLとして使用されるDLLへのパスを選択できるようにします。
-r 実行可能ファイルがインポートする各DLLは、さらに他のDLLを依存関係としてインポートする場合があります。aDLLが見つけたDLLのうち、リダイレクトされておらず(ApiSetSchemaまたはWinSxS)、システムの既知のDLLリストに含まれていないすべてのDLLに対して、「n」回の再帰的な検索が行われます。
Hook DLLは、ctxisのDLLHSCのアイデアに基づいています: https://github.com/ctxis/DLLHSC
ライセンスの詳細については、licenses.txtを参照してください。
本ソフトウェアは「現状のまま」提供され、明示的または黙示的な一切の保証を伴いません。商品性、特定目的への適合性、および権利非侵害に関する黙示的な保証も含まれますが、これに限定されません。いかなる場合においても、著作者または著作権保持者は、契約行為、不法行為、またはその他の行為に基づくかどうかにかかわらず、本ソフトウェアに関連して生じたいかなる請求、損害、その他の責任も負わないものとします。 ライセンスの通知を含むリポジトリに貢献を行う場合、その貢献は同一の条件でライセンスされるものとし、その貢献をそれらの条件でライセンスする権限を有することに同意するものとします。 別の条件で貢献をライセンスする個別の契約(コントリビューターライセンス契約など)がある場合、その契約が優先されます。