
著者: Matt Hillman ([email protected] - @sp1nl0ck)
会社: Countercept (@countercept)
ウェブサイト: https://countercept.com
DOUBLEPULSARペイロードのユーザーモードシェルコードを利用して、任意のDLLを別のプロセスにリフレクティブにロードするユーティリティです。検知技術のテストやその他のセキュリティ研究を目的としています。
Shadow Brokersによって公開されたDOUBLEPULSARペイロードは、最初にカーネルモードで実行され、非同期プロシージャコール(APC)を使用してユーザーモードプロセスにDLLをリフレクティブにロードします。実際のDLLのロードはユーザーモードで行われ、このユーティリティはそのユーザーモードシェルコードを利用して、指定されたプロセスにDLLをロードし、指定された序数を実行します。これは、攻撃検知やデジタルフォレンジックインシデントレスポンス技術をペイロードに対してテストするのに役立ちます。
このローダーは、標準のLoadLibrary呼び出しを使用せずに任意のDLLで動作するため、注目に値します。LoadLibraryを回避することで、DLLをディスクに書き込む必要がなくなり、LoadLibrary呼び出しを監視するものを回避でき、通常ロード済みモジュールのリストを取得する方法であるプロセス環境ブロック(PEB)へのエントリも回避できるため、ロードをよりステルスにすることができます。このような技術は現在ではかなり一般的ですが、これまでこの方法で任意のDLLをロードできる公開コードは知られていませんでした。既存のコードでは、ロードをサポートするためにDLLをカスタムビルドする必要があります。DOUBLEPULSARは、ほぼすべてのDLLをロードできる、より完全なローダーを実装している点で異なります。このローダーは、ほぼすべてのバージョンのWindowsでそのまま動作します。
DOUBLEPULSAR自体はカーネルモードからユーザーモードプロセスに対してキューされたAPC呼び出しを使用しますが、このユーティリティはユーザーモードからAPCをキューします。これは実用上の違いはほとんどありません。さらに、このユーティリティは代わりにCreateRemoteThreadを使用してシェルコードをトリガーすることもできます。
C:\>DOUBLEPULSAR-usermode-injector.exe
USAGE: <pid> <shellcode_file> <dll_to_inject> <ordinal_to_execute> [use_CreateRemoteProcess]
The last argument is optional, if specified 'true' then CreateRemoteProcess will be used instead of using an APC
call which is the default way Doublepulsar works. This is to allow people to test it out in different ways.
The default is using APC. This will inject into ALL threads in the target, which makes it more likely one of them
will trigger quickly. This is only suitable for testing as it may be undesirable to call the payload more than
once.
例えば、非同期プロシージャコール(APC)を使用してsomelibrary.dllをプロセス1234に注入し、序数1を呼び出す場合:
C:\>dopu-usermode-injector.exe 1234 dopu-64bit-usermode-shellcode.bin somelibrary.dll 1
Using thread: 2456
Using thread: 2032
Using thread: 3876
または上記と同様ですが、APCの代わりにCreateRemoteThreadを使用する場合:
C:\>dopu-usermode-injector.exe 1234 dopu-64bit-usermode-shellcode.bin somelibrary.dll 1 true
DOUBLEPULSARのユーザーモードシェルコードの完全な分析:
DOUBLEPULSARのカーネルコンポーネントに関する先行研究:
https://www.countercept.com/our-thinking/analyzing-the-doublepulsar-kernel-dll-injection-technique/
https://zerosum0x0.blogspot.co.uk/2017/04/doublepulsar-initial-smb-backdoor-ring.html