# Detecting T1055 Process Injection With Sysmon

> 通过分析 Sysmon 事件中的跨进程内存操作、远程线程创建和异常 DLL 加载模式，检测进程注入技术（T1055），包括经典 DLL 注入、进程镂空和 APC 注入。

- Skill: `killvxk/detecting-t1055-process-injection-with-sysmon` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/detecting-t1055-process-injection-with-sysmon`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/detecting-t1055-process-injection-with-sysmon/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/detecting-t1055-process-injection-with-sysmon

---


# 使用 Sysmon 检测 T1055 进程注入

## 适用场景

- 狩猎将恶意代码隐藏在合法进程中的防御规避技术时
- EDR 告警可疑的跨进程内存访问或远程线程创建后
- 调查向 svchost.exe、explorer.exe 或其他系统进程注入的恶意软件时
- 紫队演练测试进程注入变体检测时
- 验证 Sysmon 配置的注入检测覆盖范围时

## 前置条件

- 部署了捕获事件 1、7、8、10、25 的完整配置 Sysmon
- 已启用事件 ID 8（CreateRemoteThread）用于远程线程检测
- 已配置适当访问掩码过滤器的事件 ID 10（ProcessAccess）
- 事件 ID 7（ImageLoaded）用于 DLL 注入检测
- Sysmon 13+ 的事件 ID 25（ProcessTampering）用于进程镂空检测
- 用于关联和告警的 SIEM 平台

## 工作流程

1. **监控 CreateRemoteThread（事件 8）**：检测进程在另一个进程地址空间中创建线程的行为。这是经典 DLL 注入和 shellcode 注入的主要指标。
2. **分析 ProcessAccess（事件 10）**：追踪带有 PROCESS_VM_WRITE（0x0020）、PROCESS_VM_OPERATION（0x0008）和 PROCESS_CREATE_THREAD（0x0002）访问权限的跨进程句柄请求。合法进程很少需要对其他进程使用这些权限。
3. **检测异常 DLL 加载（事件 7）**：识别从非常规路径（用户临时目录、下载文件夹）加载到系统进程的 DLL。
4. **狩猎进程镂空（事件 25）**：Sysmon 13+ 在内存中的可执行映像与磁盘映射文件不一致时生成 ProcessTampering 事件——这是进程镂空（T1055.012）的标志性特征。
5. **与进程创建关联**：将注入事件与原始进程创建（事件 1）相连接，构建从初始执行到注入的完整攻击链。
6. **过滤已知合法的跨进程活动**：排除执行跨进程操作的合法软件（调试器、AV 产品、辅助功能工具、RMM agent）。
7. **映射到 ATT&CK 子技术**：将检测到的注入分类为经典注入（T1055.001）、PE 注入（T1055.002）、线程执行劫持（T1055.003）、APC 注入（T1055.004）、线程本地存储（T1055.005）、进程镂空（T1055.012）或进程替身（T1055.013）。

## 核心概念

| 概念 | 描述 |
|------|------|
| T1055.001 | 动态链接库注入（DLL 注入） |
| T1055.002 | 可移植可执行文件注入（PE 注入） |
| T1055.003 | 线程执行劫持 |
| T1055.004 | 异步过程调用（APC）注入 |
| T1055.005 | 线程本地存储 |
| T1055.012 | 进程镂空（Process Hollowing） |
| T1055.013 | 进程替身（Process Doppelganging） |
| T1055.015 | ListPlanting |
| Sysmon 事件 8 | 检测到 CreateRemoteThread |
| Sysmon 事件 10 | 带内存写权限的 ProcessAccess |
| Sysmon 事件 25 | ProcessTampering（镜像不匹配） |
| 访问掩码 0x1FFFFF | PROCESS_ALL_ACCESS——完全跨进程控制 |

## 工具与系统

| 工具 | 用途 |
|------|------|
| Sysmon | 注入检测的主要遥测来源 |
| Process Hacker | 手动检查进程内存区域 |
| PE-sieve | 扫描运行中进程中的镂空/注入代码 |
| Moneta | 检测进程中的异常内存区域 |
| Splunk / Elastic | SIEM 关联 Sysmon 事件 |
| Volatility | 注入工件的内存取证 |
| Hollows Hunter | 自动扫描被镂空的进程 |

## 检测查询

### Splunk——远程线程创建
```spl
index=sysmon EventCode=8
| where SourceImage!=TargetImage
| where NOT match(SourceImage, "(?i)(csrss|lsass|services|svchost|MsMpEng|SecurityHealthService|vmtoolsd)\.exe$")
| eval suspicious=if(match(TargetImage, "(?i)(svchost|explorer|lsass|winlogon|csrss|services)\.exe$"), "high_value_target", "normal_target")
| where suspicious="high_value_target"
| table _time Computer SourceImage SourceProcessId TargetImage TargetProcessId StartFunction NewThreadId
```

### Splunk——可疑的 ProcessAccess 模式
```spl
index=sysmon EventCode=10
| where SourceImage!=TargetImage
| where match(GrantedAccess, "(0x1FFFFF|0x1F3FFF|0x143A|0x0040)")
| where match(TargetImage, "(?i)(lsass|svchost|explorer|winlogon)\.exe$")
| where NOT match(SourceImage, "(?i)(MsMpEng|csrss|services|svchost|taskmgr|procexp)\.exe$")
| table _time Computer SourceImage TargetImage GrantedAccess CallTrace
```

### KQL——通过远程线程进行进程注入
```kql
DeviceEvents
| where Timestamp > ago(7d)
| where ActionType == "CreateRemoteThreadApiCall"
| where InitiatingProcessFileName !in~ ("csrss.exe", "lsass.exe", "services.exe", "svchost.exe")
| where FileName in~ ("svchost.exe", "explorer.exe", "lsass.exe", "winlogon.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
    FileName, ProcessCommandLine
```

### Sigma 规则——进程注入检测
```yaml
title: Process Injection via CreateRemoteThread into System Process
status: stable
logsource:
    product: windows
    category: create_remote_thread
detection:
    selection:
        TargetImage|endswith:
            - '\svchost.exe'
            - '\explorer.exe'
            - '\lsass.exe'
            - '\winlogon.exe'
    filter_legitimate:
        SourceImage|endswith:
            - '\csrss.exe'
            - '\lsass.exe'
            - '\services.exe'
            - '\MsMpEng.exe'
    condition: selection and not filter_legitimate
level: high
tags:
    - attack.defense_evasion
    - attack.t1055
```

## 常见场景

1. **经典 DLL 注入**：恶意软件使用 VirtualAllocEx + WriteProcessMemory + CreateRemoteThread 将恶意 DLL 加载到目标进程。通过 Sysmon 事件 8 检测。
2. **进程镂空（RunPE）**：攻击者创建挂起进程，取消映射其镜像，写入恶意 PE 文件并恢复执行。通过 Sysmon 事件 25 检测。
3. **APC 注入**：恶意软件使用 QueueUserAPC 向目标进程的线程排队异步过程调用。较难检测，需要事件 10 监控。
4. **反射式 DLL 注入**：DLL 直接从内存加载而不接触磁盘，绕过 ImageLoaded 检测。需要内存级分析。
5. **进程替身（Process Doppelganging）**：利用 NTFS 事务替换合法进程映像。通过进程完整性检查检测。

## 输出格式

```
Hunt ID: TH-INJECT-[DATE]-[SEQ]
Host: [主机名]
Source Process: [注入进程路径]
Source PID: [进程 ID]
Target Process: [目标进程路径]
Target PID: [进程 ID]
Injection Type: [DLL/Shellcode/Hollowing/APC]
Sysmon Events: [触发的事件 ID]
Access Mask: [授予的访问值]
Risk Level: [Critical/High/Medium/Low]
ATT&CK Sub-Technique: [T1055.xxx]
```

