一次简单的服务器 cpu 占用率高的快速排查实战
一次简单的服务器 cpu 占用率高的快速排查实战
前两天,朋友遇到一个线上 cpu
占用率很高的问题,我们俩一起快速定位并解决了这个问题。在征求朋友同意后,特发此文分享整个过程。本文以对话的形式展开,加上我的内心独白。文中对话与实际对话略有出入。
友: 在吗?
我: 怎么了兄弟?
友: 这边有一台服务器客户说 cpu
占用率高,怀疑挖矿了。
我: 用 wpr
抓一下吧,这是个服务进程。
旁白:一看截图是 svchost 进程,最先想到的是抓一个系统运行过程。正常情况下,svchost 是微软的服务进程。
我: 看看是什么服务。
旁白:尽量缩小范围,此时我潜意识里还以为是朋友自己的程序出了问题。
我: 先看看命令行 看看是哪类服务。
旁白:通过命令行可以看出启动的是什么类型的服务。
友:
我: svchost
应该不会放到 c:\temp
下面的,应该是个病毒了。
旁白:正常的 svchost 不会在 c:\temp 下出现,而是在 C:\Windows\System32\ 下。
我: 看看这个程序有微软签名吗?
旁白:为了进一步确认,请朋友确认这个 svchost 是否有微软的签名。如果没签名,是病毒无疑了。
友:
![svchost-property svchost-property](./images/svchost-property.jpg)
我: 这个文件没签名的?
旁白:WC,没想到还真是病毒。
我: 应该是被人动过手脚了。
![signed-svchost signed-svchost](./images/signed-svchost.jpg)
我: 用 autoruns
看下启动项。
旁白:确定是病毒后,接下来的任务就是杀毒了。先查下这个病毒是怎么运行起来的吧。
从上面的截图中我看到了 svchost.exe 的父进程是 taskhost.exe。
我: 到 schedule task
下面找到可疑的启动项,删掉。这个进程可以直接杀了,应该是中毒了。
旁白:从上面的截图中我看到了 svchost.exe 的父进程是 taskhost.exe。
友:
![scheduled-tasks scheduled-tasks](./images/scheduled-tasks.jpg)
**我:**管理员权限开了吗?看上去没有可疑的。
旁白:朋友开了管理员权限,也没有发现可疑项目。
我: 看下服务里面有没有可疑的。
旁白:有可能是通过服务启动的。
友:
![service-status service-status](./images/service-status.jpg)
我: 可疑!
![highlighted-service-status highlighted-service-status](./images/highlighted-service-status.jpg)
友: 这个里面也没签名。
![unsigned-taskhost unsigned-taskhost](./images/unsigned-taskhost.jpg)
友: 中毒了。
![scan-virsus-by-360 scan-virsus-by-360](./images/scan-virsus-by-360.jpg)
友: 谢谢!
旁白:朋友还顺便发了个红包,太客气了!
完!