排错实战 | 一次简单的服务器 cpu 占用率高的快速排查实战

前两天,朋友遇到一个线上 cpu 占用率很高的问题,我们俩一起快速定位并解决了这个问题。在征求朋友同意后,特发此文分享整个过程。本文以对话的形式展开,加上我的内心独白。文中对话与实际对话略有出入。

友:在吗?

我:怎么了兄弟?

友:这边有一台服务器客户说 cpu 占用率高,怀疑挖矿了。svchost-high-cpu

我:wpr 抓一下吧,这是个服务进程。

旁白:一看截图是 svchost 进程,最先想到的是抓一个系统运行过程。正常情况下,svchost 是微软的服务进程。

我:看看是什么服务。

旁白:尽量缩小范围,此时我潜意识里还以为是朋友自己的程序出了问题。

我:先看看命令行 看看是哪类服务。

旁白:通过命令行可以看出启动的是什么类型的服务。

svchost-command-line

友:
svchost-command-line

我:svchost 应该不会放到 c:\temp下面的,应该是个病毒了。

旁白:正常的 svchost 不会在 c:\temp 下出现,而是在 C:\Windows\System32\ 下。

我:看看这个程序有微软签名吗?

旁白:为了进一步确认,请朋友确认这个 svchost 是否有微软的签名。如果没签名,是病毒无疑了。

友:

svchost-property

我:这个文件没签名的?

旁白:WC,没想到还真是病毒。

我:应该是被人动过手脚了。

signed-svchost

我:autoruns 看下启动项。

旁白:确定是病毒后,接下来的任务就是杀毒了。先查下这个病毒是怎么运行起来的吧。

从上面的截图中我看到了 svchost.exe 的父进程是 taskhost.exe。

我:schedule task 下面找到可疑的启动项,删掉。这个进程可以直接杀了,应该是中毒了。

旁白:从上面的截图中我看到了 svchost.exe 的父进程是 taskhost.exe。

友:

scheduled-tasks

我:管理员权限开了吗?看上去没有可疑的。

旁白:朋友开了管理员权限,也没有发现可疑项目。

我:看下服务里面有没有可疑的。

旁白:有可能是通过服务启动的。

友:

service-status

我:可疑!

highlighted-service-status

友:这个里面也没签名。

unsigned-taskhost

友:中毒了。

scan-virsus-by-360

友: 谢谢!

旁白:朋友还顺便发了个红包,太客气了!

完!

BianChengNan wechat
扫描左侧二维码关注公众号,扫描右侧二维码加我个人微信:)
0%