| name | detecting-process-hollowing-technique |
| description | 通过分析内存映射节区、进程镂空指标以及 EDR 遥测中的父子进程异常,检测进程镂空技术(T1055.012)。 |
| domain | cybersecurity |
| subdomain | threat-hunting |
| tags | ["threat-hunting","mitre-attack","process-hollowing","process-injection","edr","t1055","proactive-detection"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
检测进程镂空技术
适用场景
- 调查疑似无文件恶意软件或内存驻留威胁时
- EDR 告警进程注入或可疑内存操作后
- 在已遭入侵的环境中狩猎防御规避技术时
- 威胁情报显示活跃攻击活动中使用进程镂空技术时
- 紫队演练验证 T1055.012 检测覆盖范围期间
前置条件
- 具备内存保护监控能力的 EDR(CrowdStrike、MDE、SentinelOne)
- 配置了事件 ID 1(进程创建)、8(CreateRemoteThread)、25(ProcessTampering)的 Sysmon v13+
- 进程镂空的 Windows ETW 提供程序(Microsoft-Windows-Kernel-Process)
- 内存取证能力(Volatility、WinDbg)
- 进程完整性监控工具
工作流程
- 了解镂空机制:进程镂空(Process Hollowing)包括以挂起状态创建合法进程、取消映射其内存、写入恶意代码,然后恢复执行。
- 监控挂起进程创建:狩猎以 CREATE_SUSPENDED 标志创建的进程,随后跟随内存写入和线程恢复操作。
- 检测内存节区异常:识别内存中映像与磁盘上二进制文件不一致的进程(镜像不匹配)。
- 分析父子进程树:标记行为与其二进制名称不符的进程(例如,svchost.exe 发起异常网络连接)。
- 检查进程完整性:将进程内存节区与磁盘上的合法二进制文件进行比对。
- 与网络活动关联:被镂空的进程通常会建立 C2 连接,将可疑进程行为与网络日志相关联。
- 记录并遏制:报告发现结果,隔离受影响的终端,并更新检测规则。
核心概念
| 概念 | 描述 |
|---|
| T1055.012 | 进程注入:进程镂空(Process Hollowing) |
| T1055 | 进程注入(父技术) |
| T1055.001 | DLL 注入 |
| T1055.003 | 线程执行劫持 |
| T1055.004 | 异步过程调用 |
| CREATE_SUSPENDED | 以挂起状态创建进程的 Windows 标志 |
| NtUnmapViewOfSection | 取消映射进程内存节区的 API |
| WriteProcessMemory | 向其他进程内存写入数据的 API |
| ResumeThread | 恢复挂起线程的 API |
| 镜像不匹配 | 进程内存内容与磁盘上的二进制文件不同 |
| 进程替身(Process Doppelganging) | 使用 NTFS 事务的相关技术(T1055.013) |
工具与系统
| 工具 | 用途 |
|---|
| CrowdStrike Falcon | 内存保护和镂空检测 |
| Microsoft Defender for Endpoint | ProcessTampering 告警 |
| Sysmon v13+ | 事件 ID 25 ProcessTampering 检测 |
| Volatility | 内存取证——malfind 插件 |
| pe-sieve | 扫描被镂空进程的内存 |
| Hollows Hunter | 自动化被镂空进程检测 |
| Process Hacker | 实时进程内存检查 |
| API Monitor | 监控 NtUnmapViewOfSection 调用 |
常见场景
- 场景 1:Svchost.exe 镂空——恶意软件以挂起状态创建 svchost.exe,对其镂空并注入后门代码,进程看起来合法但行为恶意。
- 场景 2:Explorer.exe 镂空——攻击者镂空 explorer.exe 以继承其网络权限和受信进程上下文。
- 场景 3:Rundll32 镂空——恶意加载程序创建 rundll32.exe,用植入代码替换其内存以进行 C2 信标通信。
- 场景 4:多阶段镂空——加载程序将进程镂空作为第一阶段,随后对服务执行额外注入。
输出格式
Hunt ID: TH-HOLLOW-[DATE]-[SEQ]
Technique: T1055.012
Hollowed Process: [进程名和 PID]
Original Binary: [磁盘上的预期路径]
Parent Process: [父进程名和 PID]
Memory Mismatch: [是/否]
Suspicious APIs: [NtUnmapViewOfSection、WriteProcessMemory 等]
Network Activity: [C2 连接(如有)]
Host: [主机名]
User: [账户上下文]
Risk Level: [Critical/High/Medium/Low]