Step 4 プロセス A (悪) プロセス B (正) WriteProcessMemory() プロセス A (悪) CreateRemoteThread() プロセス B (正) Shellcode Shellcode 電卓 スレッドの実⾏開始点として、シェルコードを書き込んだバッファを指定する
• Early Bird APC Injection • Atom Bombing • Process Hollowing • Process Doppelgänging • Process Herpaderping • Process Ghosting 講義では基礎的な⼿法を取り上げたが、他にも⼿法はごまんとある
• MEM_IMAGE and Win32StartAddress is on a private (modified) page • MEM_IMAGE and x64 dll and Win32StartAddress is CFG violation or suppressed export • MEM_IMAGE and Win32StartAddress is in a suspicious module (補⾜: 例えばLoadLibraryAとか) • MEM_IMAGE and x64 and Win32StartAddress is unexpected prolog • MEM_IMAGE and Win32StartAddress is preceded by unexpected bytes • MEM_IMAGE and x64 and Win32StartAddress wraps non-MEM_IMAGE start address 以下のいずれかの条件に該当する時に不審なスレッド候補として検出する※ ※https://github.com/jdu2600/Get-InjectedThreadEx/blob/main/Get-InjectedThreadEx.cppから抜粋 主に新規スレッド作成の際に指定されたスレッド開始アドレス(Win32StartAddress)と その周辺のコード内容や、仮想アドレス領域の属性をチェック