去年服务器遇到被比特币勒索的病毒,可以看下这篇:
现在服务器又遇到被挖矿程序植入的病毒,下面就来简单说下我遇到的安全问题。
现在的时代,区块链技术很火,也有很大的泡沫。一直有挖矿的机器时刻在跑着,所以也会有人弄些程序病毒来植入别人的机器,帮他们挖“宝藏”。
今天,看着自己的网站出现504,应该就是挂了,然后就服务器上看下日志后重启程序。但是,重启过程异常缓慢,一直会卡在某个地方,平时一般3分钟左右就能把服务启动起来正常访问,但是这次却慢的很,打开日志看,一直卡在某个地方。觉得也是奇怪,又把进程kill掉,重启。但是还是跟之前一样慢的跟蜗牛一样。
这时,使用top命令看下有哪些进程存在,CPU占用、内存剩余大小等情况,还有系统负载数据,发现负载都达到7以上,说明负载很大。
此刻,从进程列表里面看到一个进程一直占用着很大的CPU,基本一直保持在45%以上,说明这个进程一直在消耗CPU,然后在top命令的操作下再敲击c参数,这时看到进程的启动完整路径:
root 4946 21988 41 16:26 ? 00:07:00 ./trace -r 2 -R 2 --keepalive --no-color --donate-level 1 --max-cpu-usage 80 --cpu-priority 3 --print-time 25 --threads 4 --url xmr-us-east1.nanopool.org:14444 --user 46sfbbM3XSjBo54d5a8PYUU5yQ31x6Rpv6tBhe22Cd7VYeJUyFUhzBF5rTf1oTB1d8MqgHxX5RbbEEKZd8fBAAmcFfv9Y5c --pass x --keepalive
看着这个路径,其实也是一脸懵逼,以前都没见过这个进程,所以很疑惑,第一感觉就怀疑是病毒,所以在网上寻找相似的问题,但是却很少有直接相关的资料,反而关于Redis被植入挖矿程序的资料和例子不少,(如果你发现你可能中的是Redis的漏洞而被植入挖矿程序的,可以看下面这两篇博文)比如:https://www.cnblogs.com/uglyliu/p/6442427.html 和 https://blog.csdn.net/u013082989/article/details/51971121
但是我的问题并不太像他们描述的那样,所以只能作为简单的参考。
我也像上面那些博客说的那样尝试终止进程。
1)首先,使用iptables命令来关闭进程对网络的访问:
iptables -A INPUT -s xmr-us-east1.nanopool.org -j DROP 和 iptables -A OUTPUT -d xmr-us-east1.nanopool.org -j DROP
执行完命令之后,查看进程占用的CPU大小,确实有作用,相应的降到0%左右,说明这个是正确的操作,但是问题还是没有真正找到根源。
2)使用find查找相关的进程名,这里我的进程名是trace(这家伙还是会伪装,以为是我们的常用的路由命令traceroute)
find / -name trace*
命令执行之后,出现好几个与trace相关的文件名,比如:Redis、Python、Jenkins、logstash、Hadoop等等。于是逐一排查,有的基本上就可以排除了,然后尝试验证,最后就发现在Jenkins上有一个trace的文件。
3)找到这个文件,查看权限,确实是有执行权限x,于是使用命令 chmod -x trace,来限制其权限。
4)再次将进程trace pid进行杀掉,kill -9 tracePid。执行之后,再次使用top命令或者ps命令查看。进程trace又正常启动着,而且CPU又飙到45%以上。这是就很疑惑了,可能是有定时任务或者什么机制使程序自动启动。
5)这时就觉得应该是什么定时任务运行着,因为Linux默认有cron定时任务,我查看了下就有自己的一个任务,没有其它的任务在cron上,所以可以排除这个定时任务造成的了。
6)这时,我再次查看跟trace相关的文件,这时,发现这个文件是在Jenkins目录之下,所以就疑惑是不是前段时间在服务器上搭建了持续集成Jenkins。
7)找到罪魁祸首!
这个构建任务是什么鬼,不是我建的!!!伪造Jenkins更新程序??
8)我们进去看下这个构建的内容吧。
坑爹啊,时时刻刻都在启动。这就说明我把进程kill掉之后,他还是能够重新执行启动!
9)惊现病毒脚本!!!
有编程技能的基本都能猜的出这个脚本做了什么不见得人的事了,终于真相大明了。
10)总结
此次服务器中毒并不是redis漏洞被别人植入挖矿程序,而是构建软件Jenkins被别人植入了病毒。
基本上花了一个多小时才解决了这个“坑”。由于是自己个人在服务器上做测试,并没有提防安全问题。如果是公司的线上问题那么问题就很大了!所以,公司对于安全方面都是要特别重视和关注!
类似于Jenkins这种构建工具,一般都是内部使用,所以外部基本上不能访问,也可以隔绝外部黑客的入侵等。直接暴露外部是非常不安全的,特别是没有什么安全验证,容易被别人入侵做一些非法的事情!
所以,希望大家对于安全问题不容忽视,在编程开发或者架构方面,安全问题都要放在首位,不容出现一丝遗漏!
附上 Jenkins定时构建病毒程序的日志:
[2018-07-21 16:43:18] new job from xmr-us-east1.nanopool.org:14444 diff 120001
[2018-07-21 16:43:42] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:44:07] speed 2.5s/60s/15m n/a 5.2 5.0 H/s max: n/a H/s
[2018-07-21 16:44:17] new job from xmr-us-east1.nanopool.org:14444 diff 120001
[2018-07-21 16:44:32] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:44:57] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:45:22] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:45:38] no active pools, stop mining
[2018-07-21 16:45:47] speed 2.5s/60s/15m n/a 5.1 5.0 H/s max: n/a H/s
[2018-07-21 16:46:12] speed 2.5s/60s/15m n/a 4.9 5.1 H/s max: n/a H/s
[2018-07-21 16:46:37] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:46:43] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:47:02] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:47:27] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:47:49] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:47:52] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:48:17] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:48:42] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:48:54] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:49:07] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:49:32] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:49:57] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:50:00] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:50:22] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:50:47] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:51:06] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:51:12] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:51:37] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:52:02] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:52:11] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:52:27] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:52:52] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:53:17] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:53:17] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:53:42] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:54:07] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:54:23] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:54:32] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:54:57] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:55:22] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:55:29] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:55:47] speed 2.5s/60s/15m n/a n/a 5.0 H/s max: n/a H/s
[2018-07-21 16:56:12] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
[2018-07-21 16:56:35] [xmr-us-east1.nanopool.org:14444] connect error: "connection timed out"
[2018-07-21 16:56:37] speed 2.5s/60s/15m n/a n/a 5.1 H/s max: n/a H/s
/tmp/jenkins6277411555610749714.sh: 行 24: 4946 已杀死 ./trace -r 2 -R 2 --keepalive --no-color --donate-level 1 --max-cpu-usage 80 --cpu-priority 3 --print-time 25 --threads $ --url $1 --user 46sfbbM3XSjBo54d5a8PYUU5yQ31x6Rpv6tBhe22Cd7VYeJUyFUhzBF5rTf1oTB1d8MqgHxX5RbbEEKZd8fBAAmcFfv9Y5c --pass x --keepalive
/tmp/jenkins6277411555610749714.sh:行26: ./trace: 权限不够
/tmp/jenkins6277411555610749714.sh:行26: ./trace: 权限不够
/tmp/jenkins6277411555610749714.sh:行26: ./trace: 权限不够
Build step '执行 shell' marked build as failure
Finished: FAILURE
领取专属 10元无门槛券
私享最新 技术干货