kworkerds挖矿病毒排查过程
2019年3月2日晚上,收到报警邮件,出现多台服务器cpu使用率超过百分之九十五现象。登录服务器查看,发现存在cpu使用率超高的进程kworkerds 的存在,不用多说,这个名字只要是接触过挖矿病毒的运维人员都知道,那么下面开始排查及清理。
中了此病毒的服务器有两种(目前发现)情况:
第一种,使用top命令可以直接查看到是哪个进程在消耗CPU资源;
第二种,使用top命令无法查看到进程cpu高消耗,原因是被隐藏了。
下面给出步骤及命令,注意,由于本文档我是在word上编写的,所以命令会有误差,建议通过手动输入的方式进行操作。
第一种情况的排查与清理:
命令top
上图中,总cpu使用率维持在99.0以上,LB则分别是36 36 36,在进程使用率那里也显示了三组进程高消耗的情况,那么首先将进程杀掉。
命令kill
Kill -9 17848 17322 16136
这个时候在使用top查看,cpu使用率应该会降下来了,但是过一会儿又会彪上去,这时候去看看其他地方,如:crontab。
命令crontab
crontab -l
上图显示异常任务,先别急着删除,因为就算这里删除,之后也会再次生成出来的,所以要尽量寻找根源文件,如何查找根源文件?简单啊,上图中不是已经给出方法了?你将|sh之前的命令运行一下,写入本地文件中,进去看一下不就知道了。
使用命令grep
grep curl /etc/cron.d/*
别急继续使用命令grep
grep curl /etc/cron.daily/*
grep curl /etc/cron.hourly/*
grep curl /etc/cron.monthly/*
继续使用命令ll、cat
Ll /var/spool/cron/*
grep curl /var/spool/cron/*
把上面这些查到的文件全部删除,如果出现文件锁,那么使用命令chattr
比如:chattr –i /etc/cron.d/root 进行解锁,然后使用rm –rf命令进行删除。
以上是第一种情况,下面是第二种情况
同样的使用top命令进行查看
Top
上图中,总cpu使用率维持在99.0以上,LB则分别是36 36 36,但在进程使用率那里并没有任何显示高消耗的进程,下面开始排查。
命令crontab
crontab -l
上图显示异常任务,先别急着删除,因为就算这里删除,之后也会再次生成出来的,所以要尽量寻找根源文件,方式方法与第一种一样。
使用命令grep
grep curl /etc/cron.d/*
别急继续使用命令grep
grep curl /etc/cron.daily/*
grep curl /etc/cron.hourly/*
grep curl /etc/cron.monthly/*
继续使用命令ll、cat
Ll /var/spool/cron/*
grep curl /var/spool/cron/*
把上面这些查到的文件全部删除,如果出现文件锁,那么使用命令chattr
比如:chattr –i /etc/cron.d/root 进行解锁,然后使用rm –rf命令进行删除。到这里基本上除了删除进程不同之外,其他步骤操作均与第一种情况一样,那么下面开始不一样的操作。
根据源码文件中显示,病毒文件还修改了/usr/local/lib/libntpd.so及/etc/ld.so.preload文件。
ls /usr/local/lib/
图中出现了libntpd.so(.bak那个忽略,那是我试验用的)
尝试用rm –rf删除,发现无法删除,文件被锁,需要使用chattr –i /usr/local/lib/libntpd.so命令进行解锁,然后删除。
使用命令top查看
好,进程消耗显示出来了。不用多说一顿kill,但是发现不管你使用什么命令都会出现报错
尝试使用echo “” > /etc/ld.so.preload
发现没用,还是会出现报错,那么直接删除呢?
哪怕是删除的命令,它也要报个错,好吧,那么我们继续使用命令看看效果。
OK,图中的报错是因为文件不存在所以提示的,而并非那个加载的问题,那么问题就到这里解决了?
不,并没有,继续后续的排查,比如自启服务,命令:chkconfig --list
netdns这是个什么玩意儿?百度一下。
使用find / -name netdns
查出来了两个文件,先别删除,万一删错了呢?先去看看这两个文件是个什么东西。
看看,这特么的还不让查呢,那么只能vim进去看看了。