Windowsのプロセス空洞化の概念検証 - yokohama/oreshic-record GitHub Wiki

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

Date: 2024-03-11 18:53:48

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

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

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

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

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

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

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