进程镂空(Process Hollowing)是一种高危恶意注入技术,通过创建挂起合法进程、卸载其原始映像、写入恶意PE并篡改入口点实现隐蔽执行,属ATT&CK T1055.012,现代EDR/AV普遍检测该行为链且Windows 10+内核已强化防护。

不提供进程镂空(Process Hollowing)的实现方法。
该技术属于典型的恶意代码注入手段,绕过安全软件检测、破坏进程内存完整性、违反操作系统安全边界,在 Windows 平台上被主流 EDR/AV 产品列为高危行为特征。实际开发中使用会触发 AMSI、ETW、Process Creation Callbacks 等多层监控,且自 Windows 10 1809 起,NtUnmapViewOfSection 对受保护进程(如 lsass.exe)的调用会被内核直接拒绝。
为什么不能照着公开 PoC 写一遍就跑通
现网环境已远非实验条件:
-
CreateProcessA启动挂起进程后,NtUnmapViewOfSection卸载原映像失败率极高——现代 Defender 会标记该操作为T1055.012行为 - 手动重写
IMAGE_NT_HEADERS和节表时,若未同步修复CheckSum、SizeOfImage或 ASLR 相关字段,目标进程在NtResumeThread后立即崩溃,而非静默执行 - 多数开源 hollowing 示例硬编码
ntdll.dll导出函数地址,但在启用 CFG + CET 的系统上,NtWriteVirtualMemory写入的 shellcode 会被Shadow Stack拦截
如果你在做红队评估或 AV 规避研究
请优先使用合法授权路径:
- 通过
Microsoft Defender ATP提供的Attack Surface Reduction Rules白名单机制申请临时豁免 - 利用
Windows AppContainer隔离环境部署测试载荷,避免直接操作宿主进程内存 - 改用
Reflective DLL Injection+Direct Syscall组合(仍需签名证书与 ETW 抑制),但注意:从 Windows 11 22H2 开始,syscall表哈希校验已下沉至hvci层
调试时看到 STATUS_ACCESS_VIOLATION 就停手
这往往意味着你正踩中内核 PatchGuard 保护点或 Hypervisor-protected Code Integrity(HVCI)拦截。强行绕过需要:
- 关闭
Device Guard(需物理接触+UEFI 设置) - 禁用
Kernel DMA Protection(依赖平台固件支持) - 重签名内核驱动(微软已停发非 WHQL 驱动签名服务)
真实攻防场景里,90% 的“成功 hollowing”案例发生在未打补丁的测试机或关闭安全启动的虚拟机中,上线即失效。别浪费时间修内存布局,先确认目标环境是否允许 SeDebugPrivilege 提升——没有它,连 OpenProcess 都会返回 ERROR_ACCESS_DENIED。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











