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)可图形化查看:
- 连接后展开root\subscription
- 检查右侧Instance列的LastModified时间戳
- 对比正常系统的默认订阅列表
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键值未清理干净 解决方案:
- 使用Process Monitor监控WMI提供程序宿主进程(wmiprvse.exe)
- 筛选"CreateKey"操作定位持久化入口
- 检查HKCR\CLSID下可疑的InprocServer32键值
5.2 系统命令被劫持
典型现象:
- where wmic返回异常路径
- 命令输出内容被篡改 修复步骤:
- 从干净系统复制%SystemRoot%\System32\wbem目录
- 运行
winmgmt /resetrepository - 执行
DISM /Online /Cleanup-Image /RestoreHealth
5.3 杀软误报处理
当安全软件阻止正常WMI操作时:
- 在杀毒软件中排除以下路径:
- C:\Windows\System32\wbem
- C:\Windows\SysWOW64\wbem
- 添加进程白名单:
- wmiprvse.exe
- scrcons.exe
- 临时禁用行为监控功能执行清理操作