kswapd0挖矿病毒的发现与清除

BobAnkh published on
4 min, 784 words

对于近期由于安装docker时趁虚而入的伪装成kswapd0进程的挖矿病毒的发现与清除。

写下这篇博客的原因是实验室的服务器在安装docker之后不幸感染上了挖矿病毒,便将发现与清除的方法记录于此,如有错漏,恳请指正

起因与状况

因为实验需要,近期在实验室的服务器上使用tke搭建k8s平台,在此过程中,k8s官方要求将防火墙关闭。

而完成搭建之后,发现有一个kswapd0程序占用了比较高的cpu使用率。

一开始以为或许是安装进程的原因,但后续卸载了installer并清除了tke残余内容,发现该进程仍然存在,于是推测该进程应当存在问题。

该进程可以直接kill掉,但是reboot之后又会重新出现,状况如下:

htop

探查根源

根据上面的进程信息,可以看到该进程执行的用户是vagrant,这就让人感到奇怪了,于是用命令netstat -antlp查看了应用连接:

netstat

发现存在两个连接是通向2个奇怪的ip地址的,其中之一就是kswapd0,还有一个是rsync(是病毒缓存文件):

检查这两个ip地址发现都是荷兰的ip,而且是同一个段的,查询发现也是知名的挖矿ip:

45.9.148.125 45.9.148.99

于是便查看这个程序的根源出自哪里,使用命令ls -l /proc/2971/exe探查:

发现它指向/home/vagrant/下的一个.configrc/a/kswapd0,进入.configrc/文件夹探查发现,整个文件夹应该都是有问题的

到临时目录/tmp中,使用命令ls -sa | grep vagrant探查,也可以看到与vagrant用户相关的奇怪的文件

此时,还需要检查出现问题用户的crontab,看是否被写入了定时计划,否则可能定时或者reboot之后又会启动病毒,使用命令crontab -l -u vagrant检查:

crontab

另外,对于该用户,还需要检查其.ssh目录下authorized_keys是否被配置了后门的ssh的key,本次发现该公钥如下,也是一个知名公钥了:

AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw==

病毒清除

首先,先清理出现问题用户的crontab,使用命令crontab -e -u vagrant后,将内容全部清除

接着,用kill -9 2971命令将kswapd0进程杀掉,同时,用命令kill -9 2339rsync进程也杀掉

随后删除/home/vagrant/目录下.configrc//tmp/目录下.X25-unix/dota3.tar.gz.X25-unix/.rsync/*

至此,清除工作就完成了,后续可以观察病毒是否会再生

另外,建议除特殊要求外,时刻将防火墙开启,并且,如有需要,可以自己编写脚本检查各用户是否存在奇怪的crontab定时计划

这里给出一个可行脚本:

cat /etc/passwd | awk -F":" '{print $1}' | while read -r line
do
        echo $line
        crontab -l -u $line
done