首页/安全/应急响应速查/WMI 事件订阅持久化排查

WMI 事件订阅持久化排查

攻击者用 __EventFilter、__EventConsumer、__FilterToConsumerBinding 三件套,让系统在指定事件(如开机后周期)执行任意命令,无文件、无计划任务痕迹。

应急响应速查安全更新于 2026-10-13

三件套的结构

WMI 事件订阅由三部分组成:__EventFilter 定义触发条件(WQL 查询),__EventConsumer 定义要执行的动作,__FilterToConsumerBinding 把两者绑定起来。攻击者配一个开机后按间隔轮询的过滤器加命令行消费者,就得到无文件、无计划任务痕迹的持久化。

排查与误删风险

入口是 root\subscription 命名空间,直接枚举三个类的实例即可。要注意管理软件(SCCM、监控代理)也会留下合法订阅,清除前必须逐个核对名称与命令行指向,避免把监控组件删掉。

基本信息

命名空间root\subscription
三要素__EventFilter、__EventConsumer、__FilterToConsumerBinding
常见触发开机后按 TIMER_INTERVAL 周期执行
常见消费类CommandLineEventConsumer、ActiveScriptEventConsumer
查询方式Get-WmiObject 或 Get-CimInstance 指定命名空间
权限要求查询需管理员,删除需最高权限

典型使用场景

  • 排查无计划任务、无 Run 键却有周期执行的场景
  • 确认是否存在无文件持久化后门
  • 核对管理软件订阅是否被冒名替换
  • 清除后验证三件套是否彻底移除
  • 与其他自启项一起集中清点

枚举订阅三件套

枚举订阅三件套
Get-WmiObject -Namespace root\subscription -Class __EventFilter | Select-Object Name, Query
Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | Select-Object Name, CommandLineTemplate
Get-WmiObject -Namespace root\subscription -Class ActiveScriptEventConsumer | Select-Object Name, ScriptText
Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding | Select-Object Filter, Consumer
Get-CimInstance -Namespace root\subscription -ClassName __EventFilter | Format-List *

输出逐列读法

字段含义正常/异常
QueryWQL 触发条件出现周期轮询或实例变更触发需重点看
CommandLineTemplate实际执行的命令行指向临时目录、脚本宿主或编码命令即高可疑
Filter 与 Consumer绑定关系两端只删一侧会留下孤立对象并持续报错
名称订阅对象名与已知管理软件命名风格不符需逐个解释
SCCM、监控代理等管理软件会留下合法订阅:先对照名称与命令行指向,确认用途后再删除,避免告警与补丁分发失效。
清理顺序是 Binding → Consumer → Filter:只删消费者不删绑定会留下悬空引用,WMI 反复报错且持久化并不彻底。

留档后按顺序清理

留档后按顺序清理
Get-WmiObject -Namespace root\subscription -Class __EventFilter | Select-Object * | Format-List > C:\evidence\wmi_filter.txt
Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | Select-Object Name, CommandLineTemplate
$b = Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding | Where-Object { $_.Consumer -match 'Evil' }
$b | Remove-WmiObject                                                        # 先删绑定
Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | Where-Object { $_.Name -match 'Evil' } | Remove-WmiObject
Get-WmiObject -Namespace root\subscription -Class __EventFilter | Where-Object { $_.Name -match 'Evil' } | Remove-WmiObject

清除后要复验的内容

  • 重新枚举三个类,确认无残留对象
  • 检查 System 与 WMI-Activity 日志中的订阅创建时间
  • 确认启动后不再出现异常命令行进程
  • 把订阅的完整属性导出留档并可追溯

易错点

  • 只删消费者不删绑定:残留绑定持续报错,清理不彻底
  • 只做文件监控:订阅执行不落地文件,常规文件审计看不到
  • 误删管理软件订阅:监控与补丁分发失效,影响面反而更大
  • 只查 __EventFilter:看不到真正执行的命令内容,需同时看消费者
  • 清完不复验:残留过滤器仍会在条件满足时拉起消费者

数据来源与参考

  • Microsoft Learn:WMI 永久事件订阅
  • MITRE ATT&CK T1546.003 WMI Event Subscription

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌