Windowsのプロセス空洞化の概念検証

プロセスフォローイング(空洞化)とは、正当なプロセスの内部を空洞化し、その部分に悪意あるプログラムのイメージヘッダー及びPEセクションヘッダーで上書きをして、悪意あるプログラムを正当なプロセスの中で実行させる手法です。

これにより、Process Explorerやタスクマネージャーで見ても、正当なプロセスが動いているように見えるわけです。

  • 手順
    • 指定されたターゲットプログラム(svchost.exeとか)を起動してすぐに一時停止する
    • 実行させたい悪意あるコンテンツのファイルをローカルプロセスのメモリにロード
    • 一時停止しているターゲットプロセスを空洞化する
    • ターゲットプロセスの空洞化部分に、悪意あるコンテンツのイメージヘッダを書き込む
    • ターゲットプロセスの空洞化部分に、悪意あるコンテンツの各PEセクションヘッダを書き込む(悪意あるコードも書き込まれる)
    • ターゲットプロセスのRAX(プログラムの開始アドレス)を、悪意あるコンテンツの開始位置に書き換える
    • ターゲットプログラムの停止を解除する。
    • ターゲットプログラムは悪意あるコードを実行する。

POCのコードはこちらです。

https://github.com/yokohama/winlab/tree/main/processHollowing

また、それぞれのファイルの説明になります。各ファイルはコンパイルして、exe形式で使用してください。

ファイル名説明
sample.cppsvchost.exeなどに変わり正当なプログラムを実行するためのやられ(のっとられるための)プログラムです。このプログラムはただのメッセージボックを表示します。
malware.cpp最終的に実行したい悪意あるコードです。今回はPOCなので、ただのメッセージボックスを表示するだけのコードになっています。
processHollowing.cpp正当なプロセス(今回はsample.exe)を実行し空洞化して、悪意あるコード(malware.cpp)を実行するプログラムです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です