文章揭示一种名为“进程参数投毒”的 Windows 进程注入技术,能够绕过四大主流 EDR 产品的检测。
📝 详细摘要
文章详细介绍了名为“进程参数投毒”(Process Parameter Poisoning)的 Windows 概念验证(PoC)技术。该技术利用 Windows 进程创建时传入的命令行、环境变量或 lpReserved 等启动数据,将 shellcode 隐藏在目标进程的进程环境块(PEB)中,随后通过修改主线程上下文(NtSetContextThread)而非创建远程线程来执行恶意代码,从而规避了基于 VirtualAllocEx、WriteProcessMemory、CreateRemoteThread 等常见 API 的 EDR 检测。作者在四款主流 EDR 产品上的测试中验证了该方法的有效性,并指出其局限性(如需避免空字节的 shellcode),同时提供了防御建议,包括监控异常的 CreateProcessW 输入、跟踪 PEB 读取和内存保护变化以及加强进程启动数据的遥测。全文结构清晰,技术细节详实,具有一定的参考价值。
💡 主要观点
- 进程参数投毒利用进程启动数据而非常规内存写入来隐藏载荷。 技术将 shellcode 放置于目标进程的命令行、环境变量或 lpReserved 字段(映射为 ShellInfo),这些数据在 CreateProcessW 时被复制到 PEB,避免触发 VirtualAllocEx、WriteProcessMemory 等常见内存分配与写入告警。
💬 文章金句
- 进程参数投毒可借启动参数注入 shellcode,绕过四大主流 EDR 检测。
- 该方法被称为'进程参数投毒’(Process Parameter Poisoning),它利用 Windows 启动程序时通常传入的信息,而非直接将载荷写入其他进程。
- 该加载器在针对四款主流端点检测与响应(EDR)产品的测试中,成功绕过了其检测机制。
- 它可以利用命令行、环境块或 lpReserved 启动字段(Windows 将其映射为 ShellInfo)来隐藏载荷。
- 随后,该技术修改已存储内存的权限,使载荷能够运行。它不创建远程线程,而是通过 NtSetContextThread 更改新进程主线程的指令指针,将正常程序执行流导向注入代码,从而规避与经典注入相关的多个常规检测指标。
📊 文章信息
AI 初评:84
来源:FreeBuf
作者:FreeBuf
分类:软件编程
语言:中文
阅读时间:7 分钟
字数:1718
标签: Windows安全, 进程注入, EDR绕过, 安全研究, PoC