《Cybersecurity》:Real-Time Detection of Windows Shellcode Injection via the Cross-Process W^X Principle
编辑推荐:
Shellcode注入可使攻击者在目标进程内执行任意代码且不留磁盘痕迹,仍是现代恶意软件与高级持续性威胁中的典型手段。现有防护中,数据执行保护(DEP,Data Execution Prevention)仅阻止进程执行自身数据页,任意代码防护(ACG,Arbi
Shellcode注入可使攻击者在目标进程内执行任意代码且不留磁盘痕迹,仍是现代恶意软件与高级持续性威胁中的典型手段。现有防护中,数据执行保护(DEP,Data Execution Prevention)仅阻止进程执行自身数据页,任意代码防护(ACG,Arbitrary Code Guard)仅约束受保护进程内的动态代码操作,均无法阻止远程进程通过跨进程系统调用在目标进程中获取可执行内存。研究人员提出 XMemGuard,一种内核态检测框架,用于强制执行跨进程写异或执行(W^X,Write-XOR-Execute)原则:跨进程系统调用不得为目标进程创建攻击者可控的可执行内存。该框架基于 Windows 事件跟踪(ETW,Event Tracing for Windows)构建预分发系统调用拦截机制,拦截三类用于跨进程获取可执行内存的系统调用,在获取阶段剥离执行权限位,再通过进程内监控组件捕获后续执行尝试产生的运行时异常。与三种现有检测方法相比,XMemGuard 可检出全部 33 个手工构造的概念验证变体,最强基线仅检出 30 个;在真实样本上取得最高准确率、召回率与 F1 值,精确率达 99.79%。性能评估表明,其开销主要集中于跨进程内存操作密集负载,对整体系统性能影响有限。
研究背景与问题提出
Shellcode注入作为无文件攻击与高级持续性威胁的核心环节,常将位置无关、可自解密的有效载荷写入合法进程地址空间,借信任进程身份规避基于磁盘特征的静态检测。完整注入链可分解为三个阶段:获取可执行内存、写入载荷、触发执行。现有 Windows 平台执行权限缓解机制存在明显边界缺口:数据执行保护(DEP,Data Execution Prevention)依托 NX 位使数据页不可执行,但不约束远程进程通过跨进程系统调用在另一进程内申请可执行页;任意代码防护(ACG,Arbitrary Code Guard)仅限制受保护进程自身动态生成代码,属应用层按需开启策略,无法系统级管控跨进程可执行内存获取;控制流防护(CFG,Control Flow Guard)与控制流强制技术(CET,Control-flow Enforcement Technology)关注间接调用目标合法性与控制流完整性,不约束内存如何被获取。因此,跨进程边界“由 A 进程为 B 进程申请可执行内存”这一行为处于防护盲区。
研究人员开展的研究与结论
研究人员提出跨进程 W^X 原则,将传统单地址空间内的写异或执行约束扩展至进程边界:跨进程系统调用不可创建攻击者可控可执行内存。基于此原则实现 XMemGuard 内核态框架,采用“前置干预、延迟确认”策略——在获取阶段静默剥离执行位,使区域降为普通数据页;若攻击者后续真执行,CPU 因 NX 位触发页错误,由进程内组件在用户态异常分发边界捕获并回传内核匹配受控区域,从而把隐蔽触发行为转化为确定性硬件异常信号。该方法无需修改系统服务调度表(SSDT,System Service Dispatch Table)或补丁内核代码,在 33 个概念验证样本中达到 100% 检出,真实样本精确率 99.79%,证明从“获取阶段”发力可泛化覆盖不断演化的触发技术。
主要关键技术方法
研究人员采用基于 ETW 收集路径的预分发系统调用拦截,替换 HalPrivateDispatchTable 中 HalCollectPmcCounters 指针以实现分发前接管;筛选五类跨进程内存获取系统调用并静默降级保护属性;通过内核态手动映射部署进程内监控动态库;在 KiUserExceptionDispatcher 入口改写以捕获执行异常。评估使用 Windows 10 22H2 虚拟机与物理机,对比 FalconEye、Starink’23、Di Pietro’25;样本含 33 个自建与公开概念验证变体、1146 个真实恶意样本、1144 个良性样本。
研究结果
RQ1 概念验证样本检测:在 33 个覆盖远程线程、APC、反射加载、进程镂空、线程劫持、PoolParty 及 2022—2025 年新兴注入技术的样本中,XMemGuard 检出全部 33 个;Di Pietro’25 检出 30 个,其余基线各 15 个。结论:获取阶段约束不依赖触发方式枚举,对新型触发机制具鲁棒性。
RQ2 真实样本检测:在 1143 个恶意与 1091 个良性样本上,XMemGuard 精确率 99.79%、召回率 81.54%,准确与 F1 均优于基线。仅 2 个良性误报来自多进程引导与任务栏注入样式。部分恶意样本已拦截但观察窗内未产生执行确认信号,属可观测性边界而非获取漏检。
RQ3 系统调用分布:NtAllocateVirtualMemory 覆盖 90.03% 恶意样本且独占覆盖 76.99%;NtProtectVirtualMemory 占 17.59%;NtMapViewOfSection 占 1.40% 但缺之即漏检特定样本。结论:三类拦截点覆盖当前所有真实获取调用。
RQ4 运行时开销:逐调用开销仅作用于跨进程可执行内存获取路径;并发与任务负载下主要集中于跨进程内存密集场景;框架自身内存随受控区域增长线性占用,长时运行稳定,整体系统体验影响有限。
讨论与结论翻译
讨论指出,XMemGuard 将防御焦点从“无穷尽的触发行为规则”收敛为“唯一不变量——跨进程执行权限获取”,补上了 DEP/ACG/CFG/CET 共同遗漏的边界。对已进入目标进程后的同进程内操作、代码复用(ROP)、以及复用既有 RWX 节区的 Mockingjay 类手法不在本框架主范围,需与 CFI 类机制互补。
研究结论如下:研究人员提出并验证了跨进程 W^X 原则及其内核态实现 XMemGuard;该框架在获取阶段以静默降级将攻击者可控可执行内存转化为受控数据区,并以硬件异常延迟确认执行意图,从而在不修改 SSDT、不破坏合法系统调用流的前提下,实现实时、高精确、抗变种的 Shellcode 注入检测,具备线上部署可行性。
论文解读已完成,接下来可以选择一个方向继续深化: