关于linux watchdogs感染性挖矿病毒的发现排查及修复

发现

公司的服务器是阿里云的ECS云服务器,近几天在使用时感觉系统运行明显变慢,使用top命令查看发现CPU都是100%空闲的,各方面参数也都正常,随后上阿里云云监控控制台,在内存指标等参数监控中发现,CPU占用率一直保持在100%(用vmstat也可以查看),在进程监控那里看到ksoftirqd进程占用很高,超过100%,而且有时候会有两个关于这个的进程,且CPU占用率都很高,还有一个watchdogs的进程,查询资料得知一个是有关系统软中断的进程,一个是linux看门狗的进程,回到云服务器中,使用ps -ef查看没有发现可疑进程,使用htop(系统默认不带,需使用yum工具先行安装)排查也没发现任何异常。
top命令
监控台系统控制台进程监控监控

排查

经历几次重启关服务无果之后,我在阿里云云监控控制台查询了ksoftirqd的进程号,使用kill 9 pid将其kill掉,之后CPU占用率果然下降了,回复到了正常的情况下,本来以为应该解决了,过了一会不放心上去再看了一下,大约十几分钟之后占用率又上去了,再尝试了一次,结果仍然一样,感觉像是有进程在监测一样,使用corntab -l查看到有一个定时任务,使用crontab -r清除不了定时任务。
corntab -l
查看阿里云的消息中心发现多次建立了很多22端口以及6379端口的连接访问被阿里云安全中心拦截了,于是先在阿里云把安全组规则出方向的22端口和6379端口禁掉,之后再进行分析,从端口连接访问可以推断应该是通过ssh及redis的未授权访问漏洞入侵。

上网搜寻资料发现已经有很多人中招,结合其他人的反映,分析大致流程应该是:

 - 1、通过Redis未授权访问漏洞入侵机器并修改crontab任务;或者通过遍历known_hosts中的连接历史进行横向扩展;

 - 2、crontab任务执行bash脚本,进行相关清理和下载执行恶意程序watchdogs并横向扩展:
      覆写crontab任务;
      清理其他恶意程序;
      解锁删除相关系统文件;
      下载执行watchdogs;
      横向扫描其他机器;
      清理相关文件和痕迹。
     
- 3、watchdogs执行实现写开机启动、服务项并释放动态链接库实现隐藏,同时释放执行挖矿程序:
         获取进程ID写/tmp/.lsdpid;
         将/tmp目录下的watchdogs复制到/usr/sbin/目录并加入开机启动项和服务项;
         释放libioset.so并写入/etc/ld.so.preload实现进程等隐藏;
         访问ident.me获取机器外网IP;
         再次覆写crontab任务;
         释放挖矿程序ksoftirqds和配置文件config.json并执行;
         删除相关生成的文件并检查更新。

修复方法

Redis未授权访问:

1、为 Redis 添加密码验证(重启Redis才能生效);

2、禁止外网访问 Redis(重启Redis才能生效);

3、以低权限运行Redis服务(重启Redis才能生效)

详细操作请参考:http://bbs.qcloud.com/thread-30706-1-1.html;

内网感染:

1、建议不要将连接机器的私钥直接放在服务器上,如有必要建议添加密码;

2、建议通过有限的机器作为跳板机实现对其他内网机器的访问,避免所有机器的随意互联互通,跳板机不要部署相关可能存在风险的服务和业务。

挖矿木马清理方法

1、删除恶意动态链接库/usr/local/lib/libioset.so;

2、排查清理/etc/ld.so.preload中是否加载1中的恶意动态链接库;

3、清理crontab异常项,删除恶意任务(无法修改则先执行5-a);

4、kill 挖矿进程;

5、排查清理可能残留的恶意文件:

	chattr -i  /usr/sbin/watchdogs  /etc/init.d/watchdogs  /var/spool/cron/root  /etc/cron.d/root;

	chkconfig watchdogs off;

	rm -f /usr/sbin/watchdogs /etc/init.d/watchdogs。

6、相关系统命令可能被病毒删除,可通过包管理器重新安装或者其他机器拷贝恢复;

7、由于文件只读且相关命令被hook,需要安装busybox通过busybox rm命令删除;

8、部分操作需要重启机器生效。

修复脚本

以下贴出shell修复脚本(系统命令已经不可靠,需先安装好busybox工具来替代, https://busybox.net/downloads/binaries/1.30.0-i686/busybox 放置到/bin/目录下,并赋予权限)

service crond stop

busybox rm -f /etc/ld.so.preload
busybox rm -f /usr/local/lib/libioset.so
chattr -i /etc/ld.so.preload
busybox rm -f /etc/ld.so.preload
busybox rm -f /usr/local/lib/libioset.so

#### 清理异常进程
busybox ps -ef | busybox grep -v grep | busybox egrep 'ksoftirqds' | busybox awk '{print $1}' | busybox xargs kill -9
busybox ps -ef | busybox grep -v grep | busybox egrep 'watchdogs' | busybox awk '{print $1}' | busybox xargs kill -9

busybox rm -f /tmp/watchdogs
busybox rm -f /etc/cron.d/tomcat
busybox rm -f /etc/cron.d/root
busybox rm -f /var/spool/cron/root
busybox rm -f /var/spool/cron/crontabs/root
busybox rm -f /etc/rc.d/init.d/watchdogs
busybox rm -f /usr/sbin/watchdogs

ldconfig

#### 再次清理异常进程
busybox ps -ef | busybox grep -v grep | busybox egrep 'ksoftirqds' | busybox awk '{print $1}' | busybox xargs kill -9
busybox ps -ef | busybox grep -v grep | busybox egrep 'watchdogs' | busybox awk '{print $1}' | busybox xargs kill -9

#### 清理开机启动项
chkconfig watchdogs off
chkconfig –del watchdogs

service crond start

发布了29 篇原创文章 · 获赞 9 · 访问量 9969

猜你喜欢

转载自blog.csdn.net/weixin_42669785/article/details/87932199