Windowsのスレッドインジェクションの概念検証
スレッドインジェクションとは、実行中のプロセスを対象にして、そのプロセスの中に新たにスレッドを追加して、悪意あるコードを実行します。
- 手順
- 制御するターゲットプロセスを見つけて開きます。今回はPIDで指定します。
- 悪意のあるコード用にローカルプロセスにメモリ領域を割り当てます。
- 割り当てられたローカルプロセスのメモリに悪意のあるコードを書き込みます。
- 全スレッドからPIDをキーに、ハイジャックするターゲットプロセスを特定します。
- 対象のリモートプロセスにスレッドを開きます。
- 作成したスレッドを一時停止します。
- スレッドコンテキストを取得します。
- コンテキストの命令ポインタを悪意のあるコードの開始位置に更新します。
- 更新したコンテキストをターゲットのスレッドにセットします。
- ハイジャックされたスレッドを再開します。
ソースコードはこちらです。
https://github.com/yokohama/winlab/blob/main/thread-injector.cpp