WMI定时脚本病毒检测与清除指南

1. WMI定时脚本病毒特征解析

WMI(Windows Management Instrumentation)定时脚本病毒是一种利用Windows系统内置管理框架实现持久化驻留的恶意程序。这类病毒通常会创建名为"__EventFilter"、"CommandLineEventConsumer"和"__FilterToConsumerBinding"的三类WMI永久事件订阅,实现开机自启、定时执行等隐蔽行为。与普通病毒相比,其特殊之处在于:

  • 无文件实体:恶意代码存储在WMI仓库中(root\subscription命名空间)
  • 高隐蔽性:常规杀毒软件可能无法检测WMI存储的脚本
  • 高持久性:即使删除病毒文件,WMI订阅仍会重新生成

典型症状包括:

  • 系统无故执行powershell或cmd进程
  • 计划任务中出现不明wscript/jscript调用
  • 网络流量中出现异常外联请求
  • 安全日志出现事件ID 5861的WMI活动记录

2. 手工清除操作指南

2.1 WMI存储检测

以管理员身份运行PowerShell,执行以下命令检测可疑订阅:

Get-WmiObject -Namespace root\subscription -Class __EventFilter Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding

重点关注:

  • 名称含随机字符的条目
  • 执行内容为powershell/cscript的消费者
  • 触发条件为"SELECT * FROM __InstanceModificationEvent"的过滤器

2.2 恶意订阅清除

确认恶意条目后,逐条执行删除(以EventFilter为例):

$filter = Get-WmiObject -Namespace root\subscription -Class __EventFilter -Filter "Name='恶意过滤器名'" $filter.Delete()

需同步删除对应的Consumer和Binding:

Remove-WmiObject -Path "\\localhost\root\subscription:CommandLineEventConsumer.Name='恶意消费者名'" Remove-WmiObject -Path "\\localhost\root\subscription:__FilterToConsumerBinding.Consumer='\\\\localhost\\root\\subscription:CommandLineEventConsumer.Name=\"恶意消费者名\"',Filter='\\\\localhost\\root\\subscription:__EventFilter.Name=\"恶意过滤器名\"'"

2.3 注册表清理

检查以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

删除所有指向异常脚本(.vbs/.js/.ps1)的键值

3. 专业工具辅助方案

3.1 WMI Explorer可视化分析

微软官方工具WMI Explorer(wmiexplorer.codeplex.com)可图形化查看:

  1. 连接后展开root\subscription
  2. 检查右侧Instance列的LastModified时间戳
  3. 对比正常系统的默认订阅列表

3.2 Autoruns深度扫描

Sysinternals套件中的Autoruns需特别关注:

  • WMI选项卡下的异常Provider
  • Scheduled Tasks中的恶意计划项
  • 使用"Verify"功能检查数字签名

3.3 日志追踪技巧

事件查看器中筛选:

  • 应用程序和服务日志/Microsoft/Windows/WMI-Activity/Operational
  • 安全日志中的4688事件(进程创建) 关键字段:
  • ClientProcessId对应父进程
  • EventNamespace包含root\subscription
  • Operation="Instance creation"

4. 防御加固措施

4.1 WMI访问控制

配置组策略(gpedit.msc):

计算机配置 > 管理模板 > Windows组件 > Windows Management Instrumentation 启用"拒绝未经身份验证的用户对WMI命名空间的访问"

4.2 系统权限限制

通过本地安全策略(secpol.msc):

  • 用户权限分配 > 拒绝从网络访问此计算机:添加Guest账户
  • 安全选项 > 网络访问:限制匿名访问命名管道和共享

4.3 实时监控方案

创建自定义PS脚本定期检查:

$baseline = @{ EventFilters = @(Get-WmiObject -Namespace root\subscription -Class __EventFilter | Select Name) Consumers = @(Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | Select Name) } # 保存为基准文件 $baseline | Export-Clixml -Path C:\WMI_Baseline.xml # 后续比对命令 Compare-Object -ReferenceObject (Import-Clixml C:\WMI_Baseline.xml).EventFilters -DifferenceObject (Get-WmiObject -Namespace root\subscription -Class __EventFilter | Select Name)

5. 疑难问题处理

5.1 删除后自动再生

可能原因:

  • 存在残留的触发机制(如计划任务)
  • 注册表Run键值未清理干净 解决方案:
  1. 使用Process Monitor监控WMI提供程序宿主进程(wmiprvse.exe)
  2. 筛选"CreateKey"操作定位持久化入口
  3. 检查HKCR\CLSID下可疑的InprocServer32键值

5.2 系统命令被劫持

典型现象:

  • where wmic返回异常路径
  • 命令输出内容被篡改 修复步骤:
  1. 从干净系统复制%SystemRoot%\System32\wbem目录
  2. 运行winmgmt /resetrepository
  3. 执行DISM /Online /Cleanup-Image /RestoreHealth

5.3 杀软误报处理

当安全软件阻止正常WMI操作时:

  1. 在杀毒软件中排除以下路径:
    • C:\Windows\System32\wbem
    • C:\Windows\SysWOW64\wbem
  2. 添加进程白名单:
    • wmiprvse.exe
    • scrcons.exe
  3. 临时禁用行为监控功能执行清理操作