租号玩代理申请
A-A+

[教程] 追踪 WmiPrvSE.exe 进程的 CPU 利用率过高的问题 原作者:维护大师技术A

2020年11月24日 问题教程 暂无评论 阅读 166 次

前言
最近出现很多人反馈 WmiPrvSE.exe 进程的 CPU 利用率过高的问题,达到5%至30%,很多人一头雾水,不知从何查起,只能靠挨个停用软件来排查。
本文介绍一种更加科学的方法来找出导致 WmiPrvSE.exe 进程的 CPU 利用率过高的罪魁祸首。

引用

WmiPrvSE.exe 是微软Windows操作系统的一部分,用于通过WinMgmt.exe程序处理WMI操作,该程序对计算机系统的正常运行是非常重要的。----百度百科

通俗的来讲,WmiPrvSE.exe 就是系统服务“Winmgmt ”对应的具体执行进程,系统服务“Winmgmt ”的显示名称为“Windows Management Instrumentation”,服务描述:“提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止,多数基于 Windows 的软件将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。”

注意:WmiPrvSE.exe 的路径在 C:\Windows\System32\wbem\WmiPrvSE.exe ,如果不是,则是后门程序或某软件投放的增值相关的软件。

原理 & 操作方法
通常情况下,应用程序通过执行类似SQL语句的WMI语句来进行查询系统信息(ExecQuery)或注册监视事件(ExecNotificationQuery),具体的执行由 WmiPrvSE.exe 进程来完成。查询系统信息(ExecQuery)并不容易导致 WmiPrvSE.exe CPU 利用率过高,而注册监视事件(ExecNotificationQuery)就很容易导致这个问题。那么我们追踪注册监视事件(ExecNotificationQuery)即可找到导致 WmiPrvSE.exe 进程的 CPU 利用率过高的罪魁祸首。
在win10上,操作系统默认会将WMI的语句执行记录到系统日志,我们只需要在 WmiPrvSE.exe 进程的CPU利用率很高的时候,在系统日志中寻找注册监视事件(ExecNotificationQuery)即可。
win7及win7以下的系统默认不记录WMI的语句执行,需要我们手动开启日志记录。开启方法很简单,客户机在超管状态下,执行此批处理:

@echo off
set Logfile=C:\Windows\System32\Winevt\Logs\Microsoft-Windows-WMI-ActivityTrace.evtx
Wevtutil sl Microsoft-Windows-WMI-Activity/Trace /e:true /q:true /logfilename:%Logfile% /maxsize:2147483648
ping 127.0.0.1 -n 3
eventvwr.msc /l:"%Logfile%"

然后保存还原点。
当客户机开机,玩过一段时间后,发现 WmiPrvSE.exe 进程的 CPU 利用率过高,此时我们找到日志文件 “C:\Windows\System32\Winevt\Logs\Microsoft-Windows-WMI-ActivityTrace.evtx”,将此日志文件复制到文件夹 “C:\wmilog” (文件夹需要自己手动建立),然后使用 FullEventLogView 来查看此日志文件。

FullEventLogView.rar

下载:https://wws.lanzoui.com/iVlkUipmflg 密码:hrgr

链接:https://pan.baidu.com/s/1HoIVIcRFiOz9Mv9sJCFfxA 提取码:vh8a
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V1的分享

当FullEventLogView完全显示wmi日志后,我们按下Ctrl+F,来搜索注册监视事件的关键字“ExecNotificationQuery”,下面这个日志是我在万象OL环境下找到的.

GroupOperationId = 506; OperationId = 507; Operation = Start IWbemServices::ExecNotificationQuery - SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'; ClientMachine = MSG023; User = MSG023\Administrator; ClientProcessId = 6248; NamespaceName = \\.\ROOT\CIMV2

该WMI语句用于注册一个进程创建事件监视器,当有新进程创建时,通知注册该事件的进程。我们可以看到表示进程ID的 ClientProcessId 的值为 6248,那么我们去找PID为 6248 的进程,很可能就是他导致 WmiPrvSE.exe 进程的 CPU 利用率过高,我找到的进程名称为“WxCSafe.exe”
在后来的日志中,我又发现了网维大师环境下特有的“TenNetbarProtect.exe”也执行过“ExecNotificationQuery”。还有易乐游环境下进程“eyoorun.exe”在开机的时候往C盘随机目录写出随机名称的exe文件并执行,该随机名称的进程,也会监视事件(ExecNotificationQuery)。那么此时问题范围就缩到很小了,我们只需要使用维护大师的安全中心的进程拦截或文件拦截规则暂时屏蔽他们来观察问题是否解决。
规则实例:
FileCheck[Self(Path=".*\\TenNetbarProtect.exe")][Process(null)][AccessMode(Create)]=Deny

原文地址:

http://www.clxp.net.cn/thread-14741-1-1.html

京东空调大促销