周六告警一个接一个,感觉极不寻常
netstat -anpd执行结果如下
久违的中毒感觉,查看一下各用户下的crontab
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}
嗯,这个pastebin很眼熟,又是那个病毒
再来用这个命令查询一下恶意进程
perf top -s pid,comm,dso,symbol
可以发现很多的ksoftirqds进程
联系研发,让他们检查jenkins里面的问题脚本
不久之后研发发来这样一个截图,表示这段代码不是他们写的
确认完毕,开始为进一步处理做一些准备工作
cd/bin/
wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
chmod 755 busybox
这个病毒会伪装成trace,通过find命令,在jenkins下面找到了这个trace文件
/var/lib/jenkins/jobs/Jenkins-Update/workspace/trace
去掉该文件的x权限(但实际上这样操作了也没什么卵用)
开始最后的大招之前,联系研发,让他们干掉jenkins里面被植入的脚本,然后备份一些需要的crontab任务,准备上脚本干了
(感谢默安科技提供的脚本)
vim rm_DGG.sh
#!/bin/bash
# 处理2019-2-23XXXX服务器DDG病毒的脚本
#LANG=zh_CN.UTF-8
# 关闭crontab
service crond stop
systemctl stop crond
# 写hosts, 屏蔽病毒脚本下载
busybox echo -e "\n0.0.0.0 pastebin.com\n0.0.0.0 thyrsi.com" >> /etc/hosts
# 删除,创建,并锁定 crontab相关文件
busybox rm /var/spool/cron/root && busybox touch /var/spool/cron/root && busybox chattr +i /var/spool/cron/root
busybox rm /var/spool/cron/crontabs/root && busybox touch /var/spool/cron/crontabs/root && busybox chattr +i /var/spool/cron/crontabs/root
busybox rm /etc/cron.d/root && busybox touch /etc/cron.d/root && busybox chattr +i /etc/cron.d/root
# 删除cron.d目录的其他文件
busybox rm /etc/cron.d/*
# 删除病毒相关执行文件和启动脚
busybox find / -type f -name '*watchdogs*'|busybox xargs rm -f
# 删除病毒进程
busybox pkill watchdogs
busybox pkill ksoftirqds
# 删除被preload的so库
chattr -i /etc/ld.so.preload
chattr -i /usr/local/lib/libioset.so
busybox rm -f /usr/local/lib/libioset.so
busybox rm -f /etc/ld.so.preload
busybox rm -f /etc/ld.so.cache
# 验证libioset.so被卸载
# lsof |grep /usr/local/lib/libioset.so
# 无输出, 则该动态链接库被卸载, 直接执行验证步骤; 有输出, kill掉占用的进程, 重复执行该步骤;
# 再次清理异常进程
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 /usr/sbin/watchdogs
busybox rm -f /run/systemd/generator.late/watchdogs.service
busybox rm -f /etc/rc.d/init.d/watchdogs
busybox rm -f /etc/rc.d/init.d/watchdogs-bak
ldconfig
# 清理开机启动项
chkconfig watchdogs off
chkconfig --del watchdogs
service crond start
echo "Done, Please reboot!"
此外,这个病毒的作者为了让自己的木马能独占矿机,还写了一些清除别的木马的语句
ps auxf | grep -v grep | grep hwlh3wlh44lh | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep Circle_MI | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep get.bi-chi.com | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep hashvault.pro | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep nanopool.org | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep /usr/bin/.sshd | awk '{print $2}' | xargs kill -9
ps auxf | grep -v grep | grep /usr/bin/bsd-port | awk '{print $2}' | xargs kill -9
ps auxf|grep -v grep|grep "xmr" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xig" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "ddgs" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "qW3xT" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "wnTKYg" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "t00ls.ru" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "sustes" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "thisxxs" | awk '{print $2}' | xargs kill -9
ps auxf|grep -v grep|grep "hashfish" | awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "kworkerds" | awk '{print $2}'|xargs kill -9
参考文档
https://www.tuicool.com/articles/U3UBjeN (此次处理的主要参考对象)
https://www.jianshu.com/p/1497ddd4410c
后续操作
1.之前在切换jenkins的时候,意外发现了之前一次登陆,ip来自南韩;试了一下仍然能ping通该IP,且该IP与业务无关;在防火墙中禁用该IP段
2.redis统统加上密码
后续之后续
ksoftirqds和watchdogs干掉之后至今没有再发现,由于jenkins的漏洞问题,该服务器再次被攻击
在jenkins上可以找到一个update的任务(病毒本体),会在下面的路径下持续给trace脚本添加x权限,在进程里面也可以发现这个trace,杀掉后会自动启动
/var/lib/jenkins/jobs/Jenkins-Update/workspace/trace
在jenkins上将该脚本设置为禁用后问题得以解决
OS层面需要采取的措施
1.确保远程root登录处于关闭状态
2.echo "root" >> /etc/cron.allow
3.修改root账户密码