V3nG4mxV1p3r/WMI-Persistence-Detection-Lab
GitHub: V3nG4mxV1p3r/WMI-Persistence-Detection-Lab
面向WMI事件订阅无文件持久化攻击(MITRE T1546.003)的紫队检测实验室,提供从攻击模拟到Sysmon遥测采集、Wazuh自定义规则及Sigma可移植规则的端到端检测方案。
Stars: 0 | Forks: 0
# 🛡️ WMI 事件订阅持久化检测 (MITRE T1546.003)
## 📌 概述
本仓库记录了一个**紫队检测实验室**,重点在于为 Windows 上最隐蔽的持久化机制之一 —— **WMI 事件订阅**,设计定制化、高保真的 Wazuh SIEM 告警。
该技术被记录在 **MITRE ATT&CK 技术 [T1546.003](https://attack.mitre.org/techniques/T1546/003/)** 下,并被归类于 **Persistence** 和 **Privilege Escalation** 战术。
与注册表 Run 键或计划任务不同,WMI 订阅:
- ✅ **不会**在磁盘上写入任何新文件
- ✅ **不会**创建任何注册表 Run 键
- ✅ 自动在重启后**存活**
- ✅ 会被大多数仅监控基于文件指标的传统 AV/EDR 解决方案**遗漏**
## 🎯 目标与盲区
大多数 SIEM 实施方案和 SOC 团队将 **注册表持久化** (Run 键) 和 **计划任务** 作为其主要的持久化检测面。这就造成了一个巨大的盲区:
本实验室演示了如何结合 **Sysmon Event ID 19/20/21**、**自定义 Wazuh 检测规则** 以及 **Sigma 规则** (以确保可移植性) 来填补这一空白。
## 🏗️ 实验环境
| 组件 | 角色 |
|-----------|------|
| Windows 10 (VirtualBox) | 目标机 — Wazuh Agent + Sysmon v15.15 |
| Wazuh Server (Ubuntu) | SIEM — 日志摄取,规则引擎,告警 |
## ⚔️ 阶段 1:启用 WMI 遥测 (Sysmon 配置)
默认情况下,Sysmon 不会记录 WMI 活动。第一步是在 Sysmon 配置中启用 **Event ID 19, 20, 21**。
我更新了当前活动的 Sysmon 配置 (`shell_config.xml`),包含以下内容:
```
Created
```
在使用 `sysmon64 -c shell_config.xml` 应用配置后,规则配置已验证:
## 🏴☠️ 阶段 2:攻击模拟 — 构建 WMI 持久化链
该攻击完全通过 Windows 10 目标机上的 **PowerShell** 执行,模拟了一个后渗透持久化场景。
一个 WMI 持久化链由三个组件构成:
| 组件 | 类 | 用途 |
|-----------|-------|---------|
| EventFilter | `__EventFilter` | 定义 WQL 触发查询 |
| EventConsumer | `CommandLineEventConsumer` | 定义要执行的 payload |
| FilterToConsumerBinding | `__FilterToConsumerBinding` | 将 filter 绑定到 consumer |
**攻击脚本 (简化版):**
```
# EventFilter — 触发器
$filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{
Name = "AltaSecPersist"
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
QueryLanguage = "WQL"
EventNameSpace = "root\cimv2"
}
# EventConsumer — payload
$consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{
Name = "AltaSecConsumer"
CommandLineTemplate = "cmd.exe /c echo WMIPersistTest >> C:\wmi_test.txt"
}
# Binding — 完成链
Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{
Filter = $filter
Consumer = $consumer
}
```
WMI 持久化链已确认注册:
## 🔍 阶段 3:Sysmon 检测 — Event ID 19, 20, 21
攻击执行后,**Sysmon 在 Windows 事件日志中捕获了持久化链的全部三个阶段**:
### Event ID 19 — WmiEventFilter 活动检测
### Event ID 20 — WmiEventConsumer 活动检测
### Event ID 21 — WmiEventConsumerToFilter 绑定检测
## 🧠 阶段 4:自定义检测规则架构 (Wazuh)
因为我想在 Wazuh 内置规则的基础上使用 **AltaySec 签名的检测**,所以我设计了三条自定义规则,分别映射 WMI 持久化链的每个阶段:
```
sysmon_eid19_detections
AltaySec: WMI EventFilter registered - T1546.003 Persistence
T1546.003
sysmon_eid20_detections
AltaySec: WMI EventConsumer registered - T1546.003 Persistence
T1546.003
sysmon_eid21_detections
AltaySec: WMI FilterToConsumerBinding - Full persistence chain complete T1546.003
T1546.003
```
已在 Wazuh 仪表板中部署并验证了自定义规则:
## 🚨 阶段 5:SIEM 分类与告警结果
自定义检测逻辑在实时环境中成功运行。攻击执行后,**Rule 100201 立即触发**:
**确认的告警字段:**
| 字段 | 值 |
|-------|-------|
| `rule.id` | 100201 |
| `rule.level` | 12 |
| `rule.description` | AltaySec: WMI EventConsumer registered - T1546.003 Persistence |
| `rule.mitre.id` | T1546.003 |
| `rule.mitre.tactic` | Privilege Escalation, Persistence |
| `agent.name` | Windows10 |
| `data.win.eventdata.name` | AltaSecConsumer |
| `data.win.eventdata.destination` | cmd.exe /c echo WMIPersistTest >> C:\wmi_test.txt |
### 深度日志分析
触发的告警捕获了完整的 payload 和 IOC 上下文:
## 🟣 阶段 6:Sigma 规则 — 可移植检测
为了使此检测能够跨任何 SIEM 移植,我编写了一个覆盖所有三个 WMI Event ID 的 **Sigma 规则**:
```
title: WMI Event Subscription Persistence Detection
id: a1b2c3d4-0001-0001-0001-000000000001
status: experimental
description: Detects WMI Event Subscription persistence via Sysmon Event ID 19/20/21
author: Emir Rasit Gokce (@V3nG4mxV1p3r) - AltaySec Labs
date: 2026/05/05
tags:
- attack.persistence
- attack.privilege_escalation
- attack.t1546.003
logsource:
product: windows
category: wmi_event
detection:
selection:
EventID:
- 19
- 20
- 21
condition: selection
falsepositives:
- Legitimate software using WMI subscriptions (e.g. SCCM, monitoring agents)
level: high
```
## 💡 核心要点
- **WMI 持久化是无文件的** — 磁盘上没有文件遗留,也没有注册表键
- **Sysmon Event ID 19/20/21 是此技术唯一可靠的遥测来源**
- **行为检测胜于签名检测** — payload 的内容并不重要,WMI 订阅的创建本身就是 IOC
- 仅依赖文件/注册表监控的防御者对此攻击向量**完全盲目**
## 📁 仓库结构
```
WMI-Persistence-Detection-Lab/
├── attack/
│ ├── wmi_persistence.ps1 # Full attack simulation script
│ └── wmi_cleanup.ps1 # Lab cleanup — removes all artifacts
├── detection/
│ ├── wazuh_rules.xml # Custom Wazuh rules (100200-100202)
│ └── sigma_wmi_persistence.yml # Sigma rule — SIEM-agnostic
├── sysmon/
│ └── shell_config.xml # Sysmon config with WMI logging enabled
└── screenshots/ # Lab evidence
```
## 🔗 参考
- [MITRE ATT&CK T1546.003](https://attack.mitre.org/techniques/T1546/003/)
- [Sysmon WMI 事件文档](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)
- [Wazuh 文档](https://documentation.wazuh.com)
- [SigmaHQ](https://github.com/SigmaHQ/sigma)
## 🏴☠️ 阶段 2:攻击模拟 — 构建 WMI 持久化链
该攻击完全通过 Windows 10 目标机上的 **PowerShell** 执行,模拟了一个后渗透持久化场景。
一个 WMI 持久化链由三个组件构成:
| 组件 | 类 | 用途 |
|-----------|-------|---------|
| EventFilter | `__EventFilter` | 定义 WQL 触发查询 |
| EventConsumer | `CommandLineEventConsumer` | 定义要执行的 payload |
| FilterToConsumerBinding | `__FilterToConsumerBinding` | 将 filter 绑定到 consumer |
**攻击脚本 (简化版):**
```
# EventFilter — 触发器
$filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{
Name = "AltaSecPersist"
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
QueryLanguage = "WQL"
EventNameSpace = "root\cimv2"
}
# EventConsumer — payload
$consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{
Name = "AltaSecConsumer"
CommandLineTemplate = "cmd.exe /c echo WMIPersistTest >> C:\wmi_test.txt"
}
# Binding — 完成链
Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{
Filter = $filter
Consumer = $consumer
}
```
WMI 持久化链已确认注册:
## 🔍 阶段 3:Sysmon 检测 — Event ID 19, 20, 21
攻击执行后,**Sysmon 在 Windows 事件日志中捕获了持久化链的全部三个阶段**:
### Event ID 19 — WmiEventFilter 活动检测
### Event ID 20 — WmiEventConsumer 活动检测
### Event ID 21 — WmiEventConsumerToFilter 绑定检测
## 🧠 阶段 4:自定义检测规则架构 (Wazuh)
因为我想在 Wazuh 内置规则的基础上使用 **AltaySec 签名的检测**,所以我设计了三条自定义规则,分别映射 WMI 持久化链的每个阶段:
```
## 🚨 阶段 5:SIEM 分类与告警结果
自定义检测逻辑在实时环境中成功运行。攻击执行后,**Rule 100201 立即触发**:
**确认的告警字段:**
| 字段 | 值 |
|-------|-------|
| `rule.id` | 100201 |
| `rule.level` | 12 |
| `rule.description` | AltaySec: WMI EventConsumer registered - T1546.003 Persistence |
| `rule.mitre.id` | T1546.003 |
| `rule.mitre.tactic` | Privilege Escalation, Persistence |
| `agent.name` | Windows10 |
| `data.win.eventdata.name` | AltaSecConsumer |
| `data.win.eventdata.destination` | cmd.exe /c echo WMIPersistTest >> C:\wmi_test.txt |
### 深度日志分析
触发的告警捕获了完整的 payload 和 IOC 上下文:
## 🟣 阶段 6:Sigma 规则 — 可移植检测
为了使此检测能够跨任何 SIEM 移植,我编写了一个覆盖所有三个 WMI Event ID 的 **Sigma 规则**:
```
title: WMI Event Subscription Persistence Detection
id: a1b2c3d4-0001-0001-0001-000000000001
status: experimental
description: Detects WMI Event Subscription persistence via Sysmon Event ID 19/20/21
author: Emir Rasit Gokce (@V3nG4mxV1p3r) - AltaySec Labs
date: 2026/05/05
tags:
- attack.persistence
- attack.privilege_escalation
- attack.t1546.003
logsource:
product: windows
category: wmi_event
detection:
selection:
EventID:
- 19
- 20
- 21
condition: selection
falsepositives:
- Legitimate software using WMI subscriptions (e.g. SCCM, monitoring agents)
level: high
```
## 💡 核心要点
- **WMI 持久化是无文件的** — 磁盘上没有文件遗留,也没有注册表键
- **Sysmon Event ID 19/20/21 是此技术唯一可靠的遥测来源**
- **行为检测胜于签名检测** — payload 的内容并不重要,WMI 订阅的创建本身就是 IOC
- 仅依赖文件/注册表监控的防御者对此攻击向量**完全盲目**
## 📁 仓库结构
```
WMI-Persistence-Detection-Lab/
├── attack/
│ ├── wmi_persistence.ps1 # Full attack simulation script
│ └── wmi_cleanup.ps1 # Lab cleanup — removes all artifacts
├── detection/
│ ├── wazuh_rules.xml # Custom Wazuh rules (100200-100202)
│ └── sigma_wmi_persistence.yml # Sigma rule — SIEM-agnostic
├── sysmon/
│ └── shell_config.xml # Sysmon config with WMI logging enabled
└── screenshots/ # Lab evidence
```
## 🔗 参考
- [MITRE ATT&CK T1546.003](https://attack.mitre.org/techniques/T1546/003/)
- [Sysmon WMI 事件文档](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)
- [Wazuh 文档](https://documentation.wazuh.com)
- [SigmaHQ](https://github.com/SigmaHQ/sigma)标签:AI合规, AMSI绕过, Conpot, EDR, PB级数据处理, Purple Team, Sigma规则, Sysmon, T1546.003, TGT, VirtualBox, Wazuh, Windows安全, WMI事件订阅, 事件ID 19/20/21, 代理, 协议分析, 威胁检测, 安全实验室, 安全运维, 攻防技术, 攻防演练, 数字取证, 无文件攻击, 权限提升, 生成式AI安全, 目标导入, 端点检测与响应, 紫队, 红军, 网络安全, 脆弱性评估, 脱壳工具, 自动化脚本, 蓝军, 虚拟机, 防御 evasion, 隐私保护, 隐蔽后门, 高保真告警, 高危漏洞