EA付きのペイロードが svchost.exe にコードインジェクションをしている疑惑を解明していく。
IDA Pro でインポートテーブルを見ると、CreateProcessW, WriteProcessMemory, VirtualAllocEX, CreateRemoteThread とプロセスインジェクションに必要な関数が使用されていることが分かる。プロセスインジェクションの理解は下記の記事が参考になる。
この記事の Case3 ではプロセスをサスペンド状態で起動し、メモリに領域を確保して 不正なコードを書き込み、ResumeThread でプロセス実行を開始することでインジェクションを行う、とある。EA 付きペイロードはどうだろうか?
似たような流れのコードがあることが分かる。API Monitor を使ってもう少し裏をとってみる。
API Monitor で Remote Thread (Extended) で API コールをキャプチャし、API 呼び出し内容を確認する。
1つ目の CreateProcessW からの流れを見ると、推測通り VirtualAllocEx → WriteProcessMemory → CreateRemoteThread(NtResumeThreadの呼び出し) を行っているのが分かる。また、VirtualAllocEx 以降はプロセスハンドルがすべて 0x0108 となっている。
CreateProcessWは予想通りサスペンドモードで起動している。
また、CreateProcessWからの呼び出しの NtCreateUserProcess を見ると、プロセスハンドルが 0x0108 でプロセスが作られたことが分かる。
2つ目の CreateProcessW も同様で、こちらはプロセスハンドルが 0x0104 で同様にインジェクションが行われているのが分かる。
次はインジェクションしたプロセスにアタッチしてデバッグしてみたい。