进程镂空注入(傀儡进程)

简介

进程镂空(Process Hollowing),又称为“傀儡进程”,是一种恶意软件(malware)利用的代码注入技术。它主要用于将恶意代码注入到合法进程中,以规避安全检测、提高恶意代码执行的隐蔽性和稳定性

实现思路

1.创建挂起进程

创建一个新的目标进程(这里是cmd.exe),并将其创建为挂起状态,这样它的主线程不会立即执行

BOOL bRet = CreateProcessA(
    NULL,
    (LPSTR)"cmd",
    NULL,
    NULL,
    FALSE,
    CREATE_SUSPENDED,
    NULL,
    NULL,
    &si,
    &pi);

2.读取恶意程序的内容

3.获取挂起进程的线程上下文和映像基址

在挂起创建的进程中,EBX(在x86架构下)和RDX(在x64架构下)寄存器通常用于存储指向PEB(进程环境块)的指针。PEB是一个包含进程相关信息的数据结构,例如映像基地址、操作系统版本等。

4.卸载挂起进程的内存

如果挂起进程的映像基址和恶意程序的映像基址相同,则调用NtUnmapViewOfSection卸载原始进程映像

5.将恶意程序内容写入目标进程

先将恶意程序的头部信息写入目标进程,随后逐节将恶意程序的各个节写入

6.更新目标进程的线程上下文

将程序计数器(EAX/RAX 或 ECX/RCX 寄存器)设置为替换映像的入口点地址,并更新目标进程PEB中的映像基地址

设置目标进程的线程上下文,使其使用新的上下文信息

7.恢复目标进程的主线程

完整代码

最后更新于