過去数年間で、マルウェア(およびMetasploitのmeterpreterペイロードなどの一部の侵入テストツール)は、リフレクティブDLLインジェクション(PDF)を使用してDLLをプロセスのメモリにロードし始めました。利点は、ファイルがディスクに書き込まれることがなく、検出が難しいことです。私が見た多くの例は、JoachimBauchの作品に基づいています。
ただし、DEF CON 20で、Andrew Kingは、リフレクティブDLLインジェクションを使用してDLLインジェクションを検出できることを実証しました。彼のプレゼンテーションは「反射注入の検出」と呼ばれていました。残念ながら、彼はソースコードをリリースしていません(彼は確かにそれを行う義務はありません)。
更新:どうやら私はそれを見逃したようですが、アンドリューは数年前にこの作業をオープンソース化しました:https ://github.com/aking1012/dc20
さらに、「Antimeter」と呼ばれるツールは、反射型dllインジェクションを使用してロードされたときにmeterpreterエンジンを検出できます。繰り返しますが、クローズドソースです。
Andrew KingのツールとAntimeterはどちらもPythonで記述されており、実行中の実行可能ファイルのメモリを列挙するためにpydbg/pydasmを使用していることを理解しています。
リフレクティブDLLインジェクションを検出する方法を示す一般的なソースコード(Python、C、Delphiなど)を共有しても構わないと思っている人はいますか?メモリダンプを分析してこれを見つけることができるメモリフォレンジックツールがありますが、実行中のシステムでアプリケーションを実行し(antimeterのように)、反射的に挿入されたDLLを持つプロセスを見つけようとしています。
リフレクティブDLLインジェクションがどのように機能するかを理解することに興味がある場合は、これを行う方法を示すDelphiで記述されたオープンソースコードがいくつかあります。
更新:テストしたところ、管理者権限なしで(そして通常のユーザーとして)DLLをリフレクティブに挿入できますが、もちろんユーザーとしては、同じ整合性レベルで(そして私のセッションで)実行されているプロセスにのみ挿入できます...しかし、 Officeスイート、InternetExplorerなどのアプリケーションも引き続き対象です。