DLL インジェクション
DLL インジェクション とは何ですか?
DLL インジェクション対象の Windows プロセスに攻撃者提供の DLL を強制的にロード・実行させるコードインジェクション手法。
DLL インジェクションは、実行中のプロセスに悪意のある DLL を自身のアドレス空間にマップさせ、その DllMain やエクスポート関数をホストプロセスの権限と信頼属性で実行させます。古典的な手法では、OpenProcess、VirtualAllocEx、WriteProcessMemory で DLL のパスを書き込み、LoadLibraryA を呼び出す CreateRemoteThread を発行します。亜種にはリフレクティブ DLL ロード(ディスク上に DLL を残さない)、SetWindowsHookEx、AppInit_DLLs レジストリの悪用などがあります。MITRE ATT&CK では Process Injection 配下の T1055.001 に分類されます。対策には、プロセス越しの API トレーシングが可能な EDR、カーネルコールバック(PsSetCreateProcessNotifyRoutineEx)、Protected Process、コード署名、重要プロセスへのリモートスレッド生成のブロック、Sysmon Event 8 の監視などが挙げられます。
● 例
- 01
Cobalt Strike ビーコンが CreateRemoteThread を用いて svchost.exe に DLL をインジェクトし、プロセス移行する。
- 02
マルウェアが AppInit_DLLs を悪用し、すべての対話プロセスに認証情報窃取 DLL をロードさせる。
● よくある質問
DLL インジェクション とは何ですか?
対象の Windows プロセスに攻撃者提供の DLL を強制的にロード・実行させるコードインジェクション手法。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
DLL インジェクション とはどういう意味ですか?
対象の Windows プロセスに攻撃者提供の DLL を強制的にロード・実行させるコードインジェクション手法。
DLL インジェクション からどのように防御しますか?
DLL インジェクション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。