00. 结论
此问题大概率是由于将设置了简单SSH密码的服务器暴露在公网中,导致密码被爆破,从而被植入挖矿程序,导致CPU利用率100%。
0. 故障现象
本故障是在PVE上发现的,理论上适用于Debian及Ubuntu系统。
首先发现PVE登录的密码不正确,当时并未确认就是密码被爆破了,于是通过PVE重置密码流程对密码进行了重置,进入系统发现CPU使用率100%,但通过top程序长时间观察,并用"top -d 0.5"命令修改刷新时间,也无法找到到底是什么进程占用了CPU。

1. 故障排查
1.1 采用unhide程序查找隐藏进程
初步判断是恶意程序隐藏了进程号,因此使用unhide程序来查找所有隐藏的进程。将结果存入1.txt文件。


采用如下命令杀掉所有查到的进程
cat 1.txt | grep PID | awk -F ':' '{print \$2}' | xargs -I {} kill -9 {}

此时观察CPU使用率并未降低,重新查找隐藏进程,发现其已经改头换面

经过多次观察,发现规律:
datawatchd
filecheckerx
loghandlerx
nethelperx
procmonitd
servicewatchx
syscleanerx
sysmonitx
taskhandlerx
taskscand
以上进程随机藏在以下三个文件夹下,杀进程并删掉原文件后,马上会在其中某个文件夹又随机冒出来
/var/tmp
/tmp
/dev/shm
说明该恶意程序具有守护进程,杀掉以后又会自行拉起。
同时通过ss -tuna查看网络情况,发现服务器与某公网IP的443端口建立连接,而服务器上并未配置相关服务。

1.2 明确排查方向
通过这篇文章:https://www.hugbg.com/archives/3774.html 建立了比较清晰的思路,明确该恶意程序应该是进行了动态链接库劫持,于是按照文章中的步骤进行排查处理。
1.2.1 查找并删除来历不明的动态链接库
本步骤主要是为了让top工具能够排除掉错误依赖的动态链接库,从而使得隐藏的恶意程序现形。
通过以下命令查找到预加载的动态链接库
cat /etc/ld.so.preload
如果有返回结果,则说明被劫持了,如下(注意:文件名称不一定一样):


通过以下命令查找恶意动态链接库的路径
whereis top #查找top文件的路径
ldd /usr/bin/top


将该链接库删掉,并使用ldconfig来刷新


至此,我们就能看到被隐藏的恶意程序进程以及其CPU占用情况了


1.2.2 清理异常进程及文件
我们通过ps -ef能看出该异常进程的pid及其父进程,很明显其父进程是注入systemd里面的


进入/etc/systemd/system/目录,注意观察其中的文件修改时间


其中,这个叫systemd-sclide.service的进程极其可疑。通过systemctl status systemd-sclide查看该进程状态


很明显该进程就是其守护进程,并且我们能看到该恶意程序真实的路径:/usr/bin/udeb
接下来就是停止该进程,删除其系统服务相关配置(stop和disable掉):


至此,CPU使用率恢复正常


然后保存该文件作为留样,将系统中的恶意文件删除


1.3 善后处理
检查并清理计划任务;
检查和修改SSH密钥和密码;
至此清理完成。
1.4 偷懒的方式
https://blog.csdn.net/m0_69895381/article/details/145890752