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

发现

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

排查

经历几次重启关服务无果之后,我在阿里云云监控控制台查询了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

By the way

有问题?可以给我留言或私聊
有收获?那就顺手点个赞呗~

当然,也可以到我的公众号下「6曦轩」,

回复“学习”,即可领取一份
【Java工程师进阶架构师的视频教程】~

回复“面试”,可以获得:
【本人呕心沥血整理的 Java 面试题】

回复“MySQL脑图”,可以获得
【MySQL 知识点梳理高清脑图】

由于我咧,科班出身的程序员,php,Android以及硬件方面都做过,不过最后还是选择专注于做 Java,所以有啥问题可以到公众号提问讨论(技术情感倾诉都可以哈哈哈),看到的话会尽快回复,希望可以跟大家共同学习进步,关于服务端架构,Java 核心知识解析,职业生涯,面试总结等文章会不定期坚持推送输出,欢迎大家关注~~~

在这里插入图片描述

你可能感兴趣的:(运维)