我如何分析 svchost 高 CPU 利用率问题

我如何分析 svchost 高 CPU 利用率问题

我的机器被一个木马攻击了,该木马表现为 netsvcs svchost 进程中的一项服务。可以使用 Process Explorer 识别此进程,即“svchost -k netsvcs”。

我的机器被感染的症状有:

    1. 使用 ethereal,我可以看到从我的机器到不同网站(例如 ESPN 和在线音乐流媒体)的不间断 HTTP 流量。
    2. 通常在 10 到 15 分钟内,Dr. Watson 会弹出一个对话框,表明通用主机进程已失败。
    3. Process Explorer 显示进程“svchost -k netsvcs”占用了 100% 的 CPU。
    4. C:\Documents and Settings\NetworkService\Local Settings\Temporary Internet Files\Content.IE5 中的文件已被进程“svchost -k netsvcs”锁定。

这是我为查明哪个服务才是罪魁祸首所采取的措施。

可以从以下注册表位置获取 Windows 将在 netsvcs svchost 容器中启动时运行的服务列表:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost\netsvcs。MULTI_REG_SZ 值中的每个字符串都是位于以下位置的服务的名称:HKLM\SYSTEM\CurrentControlSet\服务

对于 netsvcs 中列出的每个服务,我在 SvcHost 中创建了一个不同的条目,然后更新了服务的 ImagePath 以指示该服务现在应该在哪个 svchost 下运行。

举个例子,为了在它自己的 svchost 下运行服务 AppMgmt,我们可以执行以下操作:

    1. 在 SvcHost 下创建一个名为“appmgmt”且值为“AppMgmt”的新多字符串值。
    2. 在 SvcHost 下创建一个名为“appmgmt”的新项,其值与“netsvcs”下的值相同(通常为 REG_DWORD:AuthenticationCapabilities=12320 和 REG_DWORD:CoInitializeSecurityParam=1)。
    3. 在 CurrentControl\Services\AppMgmt 下将 ImagePath 修改为 %SystemRoot%\system32\svchost.exe -k appmgmt。

我对在 netsvcs 下运行的所有三十多个服务执行了上述过程。这使我能够准确查明哪个服务导致了上述症状。了解服务后,使用 Process Explorer 可以轻松确定服务锁定和加载了哪些文件以及使用了哪些注册表项。有了所有这些数据,从我的机器中删除该服务就很简单了。

我希望这篇文章对受到感染的 svchost 进程影响的其他人有所帮助。

相关内容