背景
发现云上的两台ECS服务器CPU占用率过高,重启后依然如此。
使用top命令查看很奇怪:CPU虽然两个核占用100%,但是进程中没有看到占用CPU的进程,使用ps命令也看不出异常。似乎进程被隐藏了。
image.png
诊断
改用busybox top命令,能发现被隐藏的进程,叫/bin/daemon
Snipaste_2021-07-23_18-07-40.png
查看/bin/deamon被修改的时间,发现是几个月前的夜里02:55,很可疑
同目录被修改的,还有一个文件/bin/config.json文件,其内容为
image.png
查了域名,是个矿池网站,所以显然这是个挖矿病毒
image.png
为什么top命令看不到这个进程呢,因为/etc/ld.so.preload被修改了,让top和ps命令把关键进程都隐藏了
cat /etc/ld.so.preload
# 内容:
/usr/local/lib/uncompress.so
但是无法直接编辑此文件
解决
接下来就是删除相关文件了
恢复top命令
首先解决/etc/ld.so.preload被修改的问题,但是此文件只读,无法编辑,使用lsattr查看发现被保护了,因此使用chattr解除保护。
# 查看文件属性,被保护
lsattr /etc/ld.so.preload
----ia--------e--- /etc/ld.so.preload
# 解除保护
chattr -ia /etc/ld.so.preload
# 查看文件属性,保护已经解除
lsattr /etc/ld.so.preload
--------------e--- /etc/ld.so.preload
这里可能会出现一个情况:chattr和lsattr命令运行了没反应,或者提示没有权限,此时用ll查看这两个命令文件,发现是空文件
ll /usr/bin/chattr
-rw-r--r-- 1 root root 0 Feb 2 03:13 /usr/bin/chattr
如果出现这种情况,需要从另一台同样操作系统的服务器恢复这两个文件到此服务器,具体参考服务器中毒导致的wget等系统命令失效后的恢复
随后编辑内容,去除其中的注入文件,保存退出
vim /etc/ld.so.preload
# 删除其中的内容
此时使用top命令,可以看到进程
Snipaste_2021-07-23_18-07-58.png
删除病毒文件
杀掉病毒进程
kill -9 2420
删除病毒文件
chattr -ia /bin/daemon
rm /bin/daemon
chattr -ia /usr/local/lib/uncompress.so
rm /usr/local/lib/uncompress.so
防范
目前还不清楚病毒是如何注入的,亡羊补牢,先做一些防范措施包括
清除.ssh/authorized_keys文件中不明来历的key
取消/usr/bin/curl和/usr/bin/wget的执行权限