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` 应用配置后,规则配置已验证: 01_sysmon_wmi_config_verified ## 🏴‍☠️ 阶段 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 持久化链已确认注册: 02_wmi_persistence_registered ## 🔍 阶段 3:Sysmon 检测 — Event ID 19, 20, 21 攻击执行后,**Sysmon 在 Windows 事件日志中捕获了持久化链的全部三个阶段**: ### Event ID 19 — WmiEventFilter 活动检测 04_sysmon_event19_filter ### Event ID 20 — WmiEventConsumer 活动检测 05_sysmon_event20_consumer ### Event ID 21 — WmiEventConsumerToFilter 绑定检测 03_sysmon_event21_binding_detected ## 🧠 阶段 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 仪表板中部署并验证了自定义规则: 08_wazuh_custom_rules ## 🚨 阶段 5:SIEM 分类与告警结果 自定义检测逻辑在实时环境中成功运行。攻击执行后,**Rule 100201 立即触发**: 09_wazuh_custom_rule_100201_triggered 10_wazuh_custom_rule_100201_triggered **确认的告警字段:** | 字段 | 值 | |-------|-------| | `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 上下文: 06a_wazuh_discover_overview 06b_wazuh_discover_payload ## 🟣 阶段 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, 隐私保护, 隐蔽后门, 高保真告警, 高危漏洞