Mozi已死，余毒犹存
<!--kg-card-begin: markdown--><h1 id="">背景</h1>
<p>360NETLAB于2019年12月首次披露了<a href="__GHOST_URL__/mozi-another-botnet-using-dht/"><strong>Mozi僵尸网络</strong></a>，到现在已有将近2年时间，在这段时间中，我们见证了它从一个小规模僵尸网络发展为巅峰时占据了极高比例IOT流量巨无霸的过程。</p>
<p>现在Mozi的作者已经<code>被执法机关处置</code>，其中我们也全程提供了<a href="https://mp.weixin.qq.com/s/Su0-uU5JaUrAh8ptTzTCsA">技术协助</a>，因此我们认为后续在相当长的一段时间内它都不会继续更新。但我们知道，Mozi采用了P2P网络结构，而P2P网络的一大“优点”是健壮性好， 即使部分节点瘫痪，整个网络仍然能工作。所以即使Mozi作者不再发布新的更新，它仍然会存活一段时间，残余的节点仍然会去感染其它存在漏洞的设备，所以我们现在仍然能看到Mozi在传播，正可谓“百足之虫，死而不僵”。</p>
<p>许多安全厂商都对Mozi进行了跟踪分析，但从我们的角度而言，或多或少有些遗漏，甚至有错误。今天我们将对Mozi的看法总结在下面这篇文章里，以补充安全社区的分析；同时也为我们对Mozi僵尸网络的持续关注画上一个句号。</p>
<p>本文将回答以下问题：</p>
<p>1：Mozi除Bot节点外还有别的功能节点吗？</p>
<p>2：Mozi Bot模块有新功能吗？</p>
<p>3：Mozi僵尸网络还在更新吗？</p>
<h1 id="mozibot">Mozi僵尸网络中除了Bot还有哪些功能节点？</h1>
<p>众所周知，Mozi僵尸网络中的各个节点被Botnet Master下发的名为<strong>Config</strong>的配置文件驱动，执行具体任务。下图就是一个经典的Config文件，其中<code>[ss]</code>字段说明了节点的功能，此处即为Bot节点，主要功能是DDoS攻击。<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_confbot.PNG"  width="860px" /></p>
<p>令我们疑惑的是，在跟踪过程中，除了Bot节点的Config，还收到了下面这些形式的Config文件，这说明Mozi僵尸网络中还存在着名为<strong>sk,ftp,sns,ssh</strong>的节点。</p>
<pre><code>[ss]sk[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id
[ss]ftp[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id
[ss]sns[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id
[ss]ssh[/ss][hp]88888888[/hp]
</code></pre>
<p>那他们到底是什么呢？这一直困扰着我们，幸运的是，时间给了我们答案。</p>
<h3 id="0x1ftp">0x1:FTP节点</h3>
<p>2020年1月20日，一个名为&quot;photo.scr&quot;的Windows PE文件(a9d4007c9419a6e8d55805b8f8f52de0)产生的网络流量命中了我们的Mozi特征。一开始我们以为这是一个误报，但经过分析之后，我们确定这正是我们心心念念的Mozi ftp节点样本。为了区分Mozi僵尸网络中不同功能节点的样本，我们内部开始使用Mozi_&quot;ss value&quot;这种命名方式，因此这个样本被命名为Mozi_ftp。</p>
<p>简单来说，Mozi_ftp是一个pyinstaller打包的挖矿木马，通过FTP弱口令爆破实现蠕虫式传播，同时它也会加入Mozi的P2P网络中，等待执行Botnet Master下发的Config。钱包地址如下所示:</p>
<pre><code>47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV
</code></pre>
<p>其中名为<strong>back.jpg</strong>的模块负责加入Mozi网络以及拉取Config文件，它的基本信息如下所示：</p>
<blockquote>
<p>Filename:back.jpg</p>
<p>MD5:4ae078dd5085e97d3605f20dc079412a</p>
<p>PE32 executable for MS Windows (DLL) (console) Intel 80386</p>
<p>Packer: upx</p>
</blockquote>
<p>在脱壳后的样本中，可以很清楚的看到Mozi_ftp Config支持的的一些标签。<br>
<img src="__GHOST_URL__/content/images/2021/08/mozi_ftp.png"  width="860px" /></p>
<p>同Mozi_bot一样，Mozi_ftp也内嵌了一个加密的原始Config文件，通过XOR解密后如下所示：</p>
<img src="__GHOST_URL__/content/images/2021/08/mozi_ftpconf.png"  width="860px" />
<p>同Mozi_bot一样，Mozi_ftp通过下面的代码片段对Config进行签名校验<br>
<img src="__GHOST_URL__/content/images/2021/08/mozi_verify.png"  width="860px" /></p>
<p>其中用到的XOR密钥，以及2个public_key如下所示：</p>
<pre><code> xor key:4E 66 5A 8F 80 C8 AC 23 8D AC 47 06 D5 4F 6F 7E
------------------------------------------------------------------
xored publickey A 
	4C B3 8F 68 C1 26 70 EB 9D C1 68 4E D8 4B 7D 5F 
	69 5F 9D CA 8D E2 7D 63 FF AD 96 8D 18 8B 79 1B 
	38 31 9B 12 69 73 A9 2E B6 63 29 76 AC 2F 9E 94 A1	
after decryption: 
	02 d5 d5 e7 41 ee dc c8 10 6d 2f 48 0d 04 12 21 
	27 39 c7 45 0d 2a d1 40 72 01 d1 8b cd c4 16 65 
	76 57 c1 9d e9 bb 05 0d 3b cf 6e 70 79 60 f1 ea ef
-------------------------------------------------------------------
xored publickey B
	4C A6 FB CC F8 9B 12 1F 49 64 4D 2F 3C 17 D0 B8 
	E9 7D 24 24 F2 DD B1 47 E9 34 D2 C2 BF 07 AC 53 
	22 5F D8 92 FE ED 5F A3 C9 5B 6A 16 BE 84 40 77 88
after decryption:
	02 c0 a1 43 78 53 be 3c c4 c8 0a 29 e9 58 bf c6 
	a7 1b 7e ab 72 15 1d 64 64 98 95 c4 6a 48 c3 2d 
	6c 39 82 1d 7e 25 f3 80 44 f7 2d 10 6b cb 2f 09 c6
</code></pre>
<p>它们的值和Mozi_bot所使用的值相同，根据ECDSA384椭圆算法的特性，这说明Mozi_ftp和Mozi_bot使用的相同的私钥，排除私钥泄露的可能性，可以断定它们是出自同一个团伙。</p>
<p>在back.jpg中可以看出Mozi_ftp的Config支持以下基本标签：</p>
<pre><code>[hp]
[cpu]
[cpux]
[ss]
[ssx]
[nd]
</code></pre>
<p>在ftpcrack.py的脚本中，有下的代码片段，<br>
<img src="__GHOST_URL__/content/images/2021/08/mozi_ftp_py.png"  width="860px" /><br>
这说明Mozi_ftp还实现以下4个自有的特殊标签</p>
<pre><code>[mdf]
[mdr]
[mud]
[mrn]
</code></pre>
<h3 id="0x2ssh">0x2:SSH节点</h3>
<p>Mozi借用了51la平台来统计其自身规模,这是僵尸网络作者使用的统计工具，其精度和时间延迟远胜于外部探测。2020年9月，我们拿到了Mozi的后台统计数据，在上面，我们除了看到了Mozi_bot节点的统计数据外，还看到下图所示的一组不曾见过的上报入口。<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_soso.PNG"  width="860px" /></p>
<p>2021年8月18附近，安全产商深信服，奇安信发布威胁预警，一个名为WorkMiner的挖矿木马正在通过SSH口令爆破传播，有P2P网络行为，这引起了我们的兴趣。经过分析，我们惊奇的发现这正是Mozi僵尸网络中的SSH节点，51la那组特别上报入口正是源自于它，依照旧例，我们将它称之为Mozi_ssh。</p>
<p>我们选取分析的样本基本信息如下所示：</p>
<blockquote>
<p>Filename:work64<br>
MD5:429258270068966813aa77efd5834a94<br>
ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped<br>
Packer:upx</p>
</blockquote>
<p>简单来说，Mozi_ssh是一个通过SSH弱口令爆破实现蠕虫式传播的挖矿木马，大约于2020年10月开始活动(基于样本在VT的时间，未必准确)，钱包地址如下所示，可以看出Mozi_ssh和Mozi_ftp使用相同的钱包。</p>
<pre><code>47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV
</code></pre>
<p>Mozi_ssh是由GO代码和C代码混合编译而来。其中GO代码负责SSH相关的爆破传播，以及对Config的处理，C代码则负责处理加入Mozi P2P网络，拉取Config。<br>
<img src="__GHOST_URL__/content/images/2021/08/mozi_ssh.png"  width="860px" /></p>
<p>Mozi_ssh通过以下代码片段实现调用C代码(dht_task)加到P2P网络中。<br>
<img src="__GHOST_URL__/content/images/2021/08/mozi_sshgoc.png"  width="860px" /></p>
<p>函数dht_task的处理逻辑和Mozi_bot一样，内嵌的Config解密后如下所示：<br>
<img src="__GHOST_URL__/content/images/2021/08/mozi_sshconf.png"  width="860px" /></p>
<p>和Mozi_ftp一样，用于解密的Config的XOR密钥，以及用于Config签名检验的2个public_key和Mozi_bot中所用的是一样的，这说明Mozi_ssh与Mozi_bot出自于同一个团伙。</p>
<p>在dht_task函数中，可以看到，Mozi_ssh的Config支持以下基本标签：</p>
<pre><code>[hp]
[ver]
[cpu]
[ss]
[sv]
[nd]
</code></pre>
<p>对于通过检验后的Config，Mozi_ssh用通过函数<code>main_deal_conf</code>来处理，比如下面的代码片段就是在处理<strong>swan</strong>标签。相较于Mozi_bot，Mozi_ssh除了支持基本标签，还实现了许多自有的特殊标签。</p>
<p><img src="__GHOST_URL__/content/images/2021/08/mozi_sshdeal.png" alt="newmozi_confbot" loading="lazy"></p>
<p>Mozi_ssh支持的自有的特殊标签如下所示：</p>
<pre><code>[slan]
[swan]
[spl]
[sdf]
[sud]
[ssh]
[srn]
[sdr]
[scount]
</code></pre>
<h3 id="0x3">0x3: 小结</h3>
<p>Mozi_ftp，Mozi_ssh的发现，使得我们有明确的证据证明Mozi僵尸网络也在试图从挖矿中牟利。从bot，ftp，ssh这3种节点的样本上，可以看出其作者已经将&quot;DHT+Config&quot;这种模型作为一个基本模块来使用，通过复用这个模块，再为不同的功能节点设计不同的特殊标签命令，就能快速的开发出新功能节点所需的程序，十分方便，这种便利性是Mozi僵尸网络能快速膨胀的原因之一。</p>
<h1 id="mozibotv2s">Mozi bot v2s有哪些变化？</h1>
<p>在Mozi僵尸网络中，占比最高的就是mozi_bot的节点。2020年1月07日，我们捕获了版本号为v2s的bot样本(<code>1bd4f62fdad18b0c140dce9ad750f6de</code>)，随后此版本活跃至今。这个版本引起过安全社区的大量关注，虽然许多安全产商对其都有过分析，但是我们发现依然有遗漏的部分，我们将从补缺这个角度出发，向社区分享我们的发现。</p>
<p>据统计，mozi v2s bot样本主要为ARM，MIPS俩个CPU架构，下文选取ARM架构的样本为分析对象，样本信息如下</p>
<blockquote>
<p>MD5:b9e122860983d035a21f6984a92bfb22</p>
<p>ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, stripped</p>
<p>Lib: uclibc</p>
<p>Packer:UPX</p>
</blockquote>
<p>v2s的bot样本与我们最初分析的v2样本有非常多的变化，其中最直观的体现在Config支持的标签上，v2s新增加了2个标签<code>[cnc],[hj]</code>，除此之外，新增外网地址获取，upnp端口映射等功能，下面将一一分析这些功能给Mozi_bot带来的变化， 其中[hj]标签的功能，<a href="https://www.microsoft.com/security/blog/2021/08/19/how-to-proactively-defend-against-mozi-iot-botnet/">微软</a>于2021年8月19日发表过这方面的文章，读者可自行参阅。</p>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_compare.PNG"  width="860px" />
<h3 id="0x1cnc">0x1:[cnc] 标签</h3>
<p>Mozi僵尸网络的&quot;DHT+Config&quot;这种设计固然有其便利性，但同时也产生了一个缺陷，全部Bot节点在同步Config时存在效率低下的问题，这会间接的导致DDoS的效率低下。为了解决这个问题，Mozi作者设计了[cnc]这个标签，对应新的DDoS攻击子任务。</p>
<p>整个子任务复用了Mirai的代码，通过[cnc]关键字指定C2，Bot节点通过Mirai协议和C2建立通信后，等待C2下发的指令进行DDos攻击。增加了这个子任务后，Mozi要进行攻击时，不再需要通过一次一次同步Config获取攻击目标，只需同步一次Config，得到指定的C2即可，极大的提高了Bot节点的攻击效率，对应的网络结构如下所示：</p>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_network.jpg"  width="860px" />
<p>以下是获取C2：PORT的代码片段<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_mirai.PNG"  width="860px" /></p>
<p>以下是发送上线包的代码片段<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_initmsg.PNG"  width="860px" /></p>
<p>以下是发送心跳的代码片段<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_heartbeat.PNG"  width="860px" /></p>
<p>以下是支持的攻击向量，一共有12种方法，编号11被写了2次，因此Mozi的Bot节点只支持11种攻击方法。<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_ddos.PNG"  width="860px" /></p>
<p>对Mirai熟悉的朋友看到此处想必会会心一笑，正是因为大量使用Mirai代码，这批Mozi样本被大量杀软产商标记为Mirai，我们推荐杀软产商根据子功能的名称编写查杀特征以正确的标识Mozi_bot样本。</p>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_vt.PNG"  width="860px" />
<h3 id="0x2">0x2:外网地址获取</h3>
<p>通过<code>http://ipinfo.io/ip</code>获取外网IP以便在在Telnet，Exploit的payload使用。<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_ip.PNG"  width="860px" /></p>
<p>加入这个特性之后不会再有下面内网ip出现在传播payload的情况了。<br>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_error.PNG"  width="860px" /></p>
<h3 id="0x3upnp">0x3:upnp端口映射</h3>
<p>当被感染的设备是通过NAT访问网络时，Mozi_bot通过监听端口在设备上开启的HTTP样本下载服务是无法被外网直接访问的，新版本的Mozi通过upnp的<code>AddPortMapping</code>在路由器上实现端口映射，以保证服务的正常访问。</p>
<img src="__GHOST_URL__/content/images/2021/08/newmozi_upnp.PNG"  width="860px" />
<h3 id="0x4">0x4:小结</h3>
<p>我们可以看出Mozi bot的这些更新都是为了提高效率：DDoS攻击的效率，传播感染的效率。弃用Gafgyt的攻击代码，转向更有效率的Mirai。通过[cnc]子任务，重构DDoS攻击功能，实现控制节点与业务节点的分离，极大的增加了Mozi的网络弹性，这种分离意味着<code>僵尸网络的控制功能和实际业务解耦</code>，使得Mozi的作者不仅可以自己进行DDos攻击，也能很方便的将整个网络租赁给别的团伙。</p>
<h1 id="mozibots">Mozi bots还在更新吗？</h1>
<p>Mozi僵尸网络的样本已经在相当长一段时间内停止更新了，然而这并不意味着Mozi带来的威胁就此终止，由于其已经散布在互联网上的部分有着持续感染的能力，每天都会有新的设备被感染成为僵尸网络的一部分，也每天都会有设备因为升级或者离线从而脱离该僵尸网络的控制。总体我们预期其规模会以周为周期震荡下行，并在互联网上存活数年。<code>既往已经有若干被各国执法机构终结的僵尸网络走上了这条道路，Mozi僵尸网络也已经一步一步走向它的坟墓</code>。</p>
<h1 id="">总结</h1>
<p>Ftp,SSH结点的相继被发现，让我们对Mozi僵尸网络有了更深的认知。Mozi僵尸网络是一个混杂的，影响Windows，Linux，IOT 多平台的大型僵尸网络，通过TELNET,SSH,FTP弱口令爆破，以及Nday漏洞的方式实现蠕虫式扩张，它由不同类型的功能结点组成，现已知的节点有进行DDoS攻击的Bot节点，进行Miner的Ftp,SSH结点。网络结构的清楚，不代表掌握了它所有的细节，我们相信还有许多信息可以填充到Mozi僵尸网络这张图上，由于视野有限，目前只能向安全社区分享这么多。如果社区有相关的线索，欢迎与我们联系，让我们一起<code>Make Cyber Security Great Again</code>。</p>
<!--kg-card-end: markdown-->
背景


360NETLAB于2019年12月首次披露了Mozi僵尸网络，到现在已有将近2年时间，在这段时间中，我们见证了它从一个小规模僵尸网络发展为巅峰时占据了极高比例IOT流量巨无霸的过程。


现在Mozi的作者已经被执法机关处置，其中我们也全程提供了技术协助，因此我们认为后续在相当长的一段时间内它都不会继续更新。但我们知道，Mozi采用了P2P网络结构，而P2P网络的一大“优点”是健壮性好， 即使部分节点瘫痪，整个网络仍然能工作。所以即使Mozi作者不再发布新的更新，它仍然会存活一段时间，残余的节点仍然会去感染其它存在漏洞的设备，所以我们现在仍然能看到Mozi在传播，正可谓“百足之虫，死而不僵”。


许多安全厂商都对Mozi进行了跟踪分析，但从我们的角度而言，或多或少有些遗漏，甚至有错误。今天我们将对Mozi的看法总结在下面这篇文章里，以补充安全社区的分析；同时也为我们对Mozi僵尸网络的持续关注画上一个句号。


本文将回答以下问题：


1：Mozi除Bot节点外还有别的功能节点吗？


2：Mozi Bot模块有新功能吗？


3：Mozi僵尸网络还在更新吗？



Mozi僵尸网络中除了Bot还有哪些功能节点？


众所周知，Mozi僵尸网络中的各个节点被Botnet Master下发的名为Config的配置文件驱动，执行具体任务。下图就是一个经典的Config文件，其中[ss]字段说明了节点的功能，此处即为Bot节点，主要功能是DDoS攻击。




令我们疑惑的是，在跟踪过程中，除了Bot节点的Config，还收到了下面这些形式的Config文件，这说明Mozi僵尸网络中还存在着名为sk,ftp,sns,ssh的节点。


[ss]sk[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id
[ss]ftp[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id
[ss]sns[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id
[ss]ssh[/ss][hp]88888888[/hp]



那他们到底是什么呢？这一直困扰着我们，幸运的是，时间给了我们答案。



0x1:FTP节点


2020年1月20日，一个名为"photo.scr"的Windows PE文件(a9d4007c9419a6e8d55805b8f8f52de0)产生的网络流量命中了我们的Mozi特征。一开始我们以为这是一个误报，但经过分析之后，我们确定这正是我们心心念念的Mozi ftp节点样本。为了区分Mozi僵尸网络中不同功能节点的样本，我们内部开始使用Mozi_"ss value"这种命名方式，因此这个样本被命名为Mozi_ftp。


简单来说，Mozi_ftp是一个pyinstaller打包的挖矿木马，通过FTP弱口令爆破实现蠕虫式传播，同时它也会加入Mozi的P2P网络中，等待执行Botnet Master下发的Config。钱包地址如下所示:


47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV



其中名为back.jpg的模块负责加入Mozi网络以及拉取Config文件，它的基本信息如下所示：





Filename:back.jpg


MD5:4ae078dd5085e97d3605f20dc079412a


PE32 executable for MS Windows (DLL) (console) Intel 80386


Packer: upx



在脱壳后的样本中，可以很清楚的看到Mozi_ftp Config支持的的一些标签。




同Mozi_bot一样，Mozi_ftp也内嵌了一个加密的原始Config文件，通过XOR解密后如下所示：



同Mozi_bot一样，Mozi_ftp通过下面的代码片段对Config进行签名校验




其中用到的XOR密钥，以及2个public_key如下所示：


 xor key:4E 66 5A 8F 80 C8 AC 23 8D AC 47 06 D5 4F 6F 7E
------------------------------------------------------------------
xored publickey A 
	4C B3 8F 68 C1 26 70 EB 9D C1 68 4E D8 4B 7D 5F 
	69 5F 9D CA 8D E2 7D 63 FF AD 96 8D 18 8B 79 1B 
	38 31 9B 12 69 73 A9 2E B6 63 29 76 AC 2F 9E 94 A1	
after decryption: 
	02 d5 d5 e7 41 ee dc c8 10 6d 2f 48 0d 04 12 21 
	27 39 c7 45 0d 2a d1 40 72 01 d1 8b cd c4 16 65 
	76 57 c1 9d e9 bb 05 0d 3b cf 6e 70 79 60 f1 ea ef
-------------------------------------------------------------------
xored publickey B
	4C A6 FB CC F8 9B 12 1F 49 64 4D 2F 3C 17 D0 B8 
	E9 7D 24 24 F2 DD B1 47 E9 34 D2 C2 BF 07 AC 53 
	22 5F D8 92 FE ED 5F A3 C9 5B 6A 16 BE 84 40 77 88
after decryption:
	02 c0 a1 43 78 53 be 3c c4 c8 0a 29 e9 58 bf c6 
	a7 1b 7e ab 72 15 1d 64 64 98 95 c4 6a 48 c3 2d 
	6c 39 82 1d 7e 25 f3 80 44 f7 2d 10 6b cb 2f 09 c6



它们的值和Mozi_bot所使用的值相同，根据ECDSA384椭圆算法的特性，这说明Mozi_ftp和Mozi_bot使用的相同的私钥，排除私钥泄露的可能性，可以断定它们是出自同一个团伙。


在back.jpg中可以看出Mozi_ftp的Config支持以下基本标签：


[hp]
[cpu]
[cpux]
[ss]
[ssx]
[nd]



在ftpcrack.py的脚本中，有下的代码片段，



这说明Mozi_ftp还实现以下4个自有的特殊标签


[mdf]
[mdr]
[mud]
[mrn]




0x2:SSH节点


Mozi借用了51la平台来统计其自身规模,这是僵尸网络作者使用的统计工具，其精度和时间延迟远胜于外部探测。2020年9月，我们拿到了Mozi的后台统计数据，在上面，我们除了看到了Mozi_bot节点的统计数据外，还看到下图所示的一组不曾见过的上报入口。




2021年8月18附近，安全产商深信服，奇安信发布威胁预警，一个名为WorkMiner的挖矿木马正在通过SSH口令爆破传播，有P2P网络行为，这引起了我们的兴趣。经过分析，我们惊奇的发现这正是Mozi僵尸网络中的SSH节点，51la那组特别上报入口正是源自于它，依照旧例，我们将它称之为Mozi_ssh。


我们选取分析的样本基本信息如下所示：





Filename:work64

MD5:429258270068966813aa77efd5834a94

ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped

Packer:upx



简单来说，Mozi_ssh是一个通过SSH弱口令爆破实现蠕虫式传播的挖矿木马，大约于2020年10月开始活动(基于样本在VT的时间，未必准确)，钱包地址如下所示，可以看出Mozi_ssh和Mozi_ftp使用相同的钱包。


47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV



Mozi_ssh是由GO代码和C代码混合编译而来。其中GO代码负责SSH相关的爆破传播，以及对Config的处理，C代码则负责处理加入Mozi P2P网络，拉取Config。




Mozi_ssh通过以下代码片段实现调用C代码(dht_task)加到P2P网络中。




函数dht_task的处理逻辑和Mozi_bot一样，内嵌的Config解密后如下所示：




和Mozi_ftp一样，用于解密的Config的XOR密钥，以及用于Config签名检验的2个public_key和Mozi_bot中所用的是一样的，这说明Mozi_ssh与Mozi_bot出自于同一个团伙。


在dht_task函数中，可以看到，Mozi_ssh的Config支持以下基本标签：


[hp]
[ver]
[cpu]
[ss]
[sv]
[nd]



对于通过检验后的Config，Mozi_ssh用通过函数main_deal_conf来处理，比如下面的代码片段就是在处理swan标签。相较于Mozi_bot，Mozi_ssh除了支持基本标签，还实现了许多自有的特殊标签。





Mozi_ssh支持的自有的特殊标签如下所示：


[slan]
[swan]
[spl]
[sdf]
[sud]
[ssh]
[srn]
[sdr]
[scount]




0x3: 小结


Mozi_ftp，Mozi_ssh的发现，使得我们有明确的证据证明Mozi僵尸网络也在试图从挖矿中牟利。从bot，ftp，ssh这3种节点的样本上，可以看出其作者已经将"DHT+Config"这种模型作为一个基本模块来使用，通过复用这个模块，再为不同的功能节点设计不同的特殊标签命令，就能快速的开发出新功能节点所需的程序，十分方便，这种便利性是Mozi僵尸网络能快速膨胀的原因之一。



Mozi bot v2s有哪些变化？


在Mozi僵尸网络中，占比最高的就是mozi_bot的节点。2020年1月07日，我们捕获了版本号为v2s的bot样本(1bd4f62fdad18b0c140dce9ad750f6de)，随后此版本活跃至今。这个版本引起过安全社区的大量关注，虽然许多安全产商对其都有过分析，但是我们发现依然有遗漏的部分，我们将从补缺这个角度出发，向社区分享我们的发现。


据统计，mozi v2s bot样本主要为ARM，MIPS俩个CPU架构，下文选取ARM架构的样本为分析对象，样本信息如下





MD5:b9e122860983d035a21f6984a92bfb22


ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, stripped


Lib: uclibc


Packer:UPX



v2s的bot样本与我们最初分析的v2样本有非常多的变化，其中最直观的体现在Config支持的标签上，v2s新增加了2个标签[cnc],[hj]，除此之外，新增外网地址获取，upnp端口映射等功能，下面将一一分析这些功能给Mozi_bot带来的变化， 其中[hj]标签的功能，微软于2021年8月19日发表过这方面的文章，读者可自行参阅。




0x1:[cnc] 标签


Mozi僵尸网络的"DHT+Config"这种设计固然有其便利性，但同时也产生了一个缺陷，全部Bot节点在同步Config时存在效率低下的问题，这会间接的导致DDoS的效率低下。为了解决这个问题，Mozi作者设计了[cnc]这个标签，对应新的DDoS攻击子任务。


整个子任务复用了Mirai的代码，通过[cnc]关键字指定C2，Bot节点通过Mirai协议和C2建立通信后，等待C2下发的指令进行DDos攻击。增加了这个子任务后，Mozi要进行攻击时，不再需要通过一次一次同步Config获取攻击目标，只需同步一次Config，得到指定的C2即可，极大的提高了Bot节点的攻击效率，对应的网络结构如下所示：



以下是获取C2：PORT的代码片段




以下是发送上线包的代码片段




以下是发送心跳的代码片段




以下是支持的攻击向量，一共有12种方法，编号11被写了2次，因此Mozi的Bot节点只支持11种攻击方法。




对Mirai熟悉的朋友看到此处想必会会心一笑，正是因为大量使用Mirai代码，这批Mozi样本被大量杀软产商标记为Mirai，我们推荐杀软产商根据子功能的名称编写查杀特征以正确的标识Mozi_bot样本。




0x2:外网地址获取


通过http://ipinfo.io/ip获取外网IP以便在在Telnet，Exploit的payload使用。




加入这个特性之后不会再有下面内网ip出现在传播payload的情况了。





0x3:upnp端口映射


当被感染的设备是通过NAT访问网络时，Mozi_bot通过监听端口在设备上开启的HTTP样本下载服务是无法被外网直接访问的，新版本的Mozi通过upnp的AddPortMapping在路由器上实现端口映射，以保证服务的正常访问。




0x4:小结


我们可以看出Mozi bot的这些更新都是为了提高效率：DDoS攻击的效率，传播感染的效率。弃用Gafgyt的攻击代码，转向更有效率的Mirai。通过[cnc]子任务，重构DDoS攻击功能，实现控制节点与业务节点的分离，极大的增加了Mozi的网络弹性，这种分离意味着僵尸网络的控制功能和实际业务解耦，使得Mozi的作者不仅可以自己进行DDos攻击，也能很方便的将整个网络租赁给别的团伙。



Mozi bots还在更新吗？


Mozi僵尸网络的样本已经在相当长一段时间内停止更新了，然而这并不意味着Mozi带来的威胁就此终止，由于其已经散布在互联网上的部分有着持续感染的能力，每天都会有新的设备被感染成为僵尸网络的一部分，也每天都会有设备因为升级或者离线从而脱离该僵尸网络的控制。总体我们预期其规模会以周为周期震荡下行，并在互联网上存活数年。既往已经有若干被各国执法机构终结的僵尸网络走上了这条道路，Mozi僵尸网络也已经一步一步走向它的坟墓。



总结


Ftp,SSH结点的相继被发现，让我们对Mozi僵尸网络有了更深的认知。Mozi僵尸网络是一个混杂的，影响Windows，Linux，IOT 多平台的大型僵尸网络，通过TELNET,SSH,FTP弱口令爆破，以及Nday漏洞的方式实现蠕虫式扩张，它由不同类型的功能结点组成，现已知的节点有进行DDoS攻击的Bot节点，进行Miner的Ftp,SSH结点。网络结构的清楚，不代表掌握了它所有的细节，我们相信还有许多信息可以填充到Mozi僵尸网络这张图上，由于视野有限，目前只能向安全社区分享这么多。如果社区有相关的线索，欢迎与我们联系，让我们一起Make Cyber Security Great Again。

{"version":"0.3.1","atoms":[],"cards":[["markdown",{"markdown":"# 背景\n\n360NETLAB于2019年12月首次披露了[**Mozi僵尸网络**](__GHOST_URL__/mozi-another-botnet-using-dht/)，到现在已有将近2年时间，在这段时间中，我们见证了它从一个小规模僵尸网络发展为巅峰时占据了极高比例IOT流量巨无霸的过程。\n\n现在Mozi的作者已经``被执法机关处置``，其中我们也全程提供了[技术协助](https://mp.weixin.qq.com/s/Su0-uU5JaUrAh8ptTzTCsA)，因此我们认为后续在相当长的一段时间内它都不会继续更新。但我们知道，Mozi采用了P2P网络结构，而P2P网络的一大“优点”是健壮性好， 即使部分节点瘫痪，整个网络仍然能工作。所以即使Mozi作者不再发布新的更新，它仍然会存活一段时间，残余的节点仍然会去感染其它存在漏洞的设备，所以我们现在仍然能看到Mozi在传播，正可谓“百足之虫，死而不僵”。\n\n许多安全厂商都对Mozi进行了跟踪分析，但从我们的角度而言，或多或少有些遗漏，甚至有错误。今天我们将对Mozi的看法总结在下面这篇文章里，以补充安全社区的分析；同时也为我们对Mozi僵尸网络的持续关注画上一个句号。\n\n本文将回答以下问题：\n\n1：Mozi除Bot节点外还有别的功能节点吗？\n\n2：Mozi Bot模块有新功能吗？\n\n3：Mozi僵尸网络还在更新吗？\n\n\n\n\n\n\n\n# Mozi僵尸网络中除了Bot还有哪些功能节点？\n\n众所周知，Mozi僵尸网络中的各个节点被Botnet Master下发的名为**Config**的配置文件驱动，执行具体任务。下图就是一个经典的Config文件，其中```[ss]```字段说明了节点的功能，此处即为Bot节点，主要功能是DDoS攻击。\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_confbot.PNG\"  width=\"860px\" />\n\n\n令我们疑惑的是，在跟踪过程中，除了Bot节点的Config，还收到了下面这些形式的Config文件，这说明Mozi僵尸网络中还存在着名为**sk,ftp,sns,ssh**的节点。\n\n```\n[ss]sk[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id\n[ss]ftp[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id\n[ss]sns[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id\n[ss]ssh[/ss][hp]88888888[/hp]\n```\n那他们到底是什么呢？这一直困扰着我们，幸运的是，时间给了我们答案。\n### 0x1:FTP节点\n\n2020年1月20日，一个名为\"photo.scr\"的Windows PE文件(a9d4007c9419a6e8d55805b8f8f52de0)产生的网络流量命中了我们的Mozi特征。一开始我们以为这是一个误报，但经过分析之后，我们确定这正是我们心心念念的Mozi ftp节点样本。为了区分Mozi僵尸网络中不同功能节点的样本，我们内部开始使用Mozi_\"ss value\"这种命名方式，因此这个样本被命名为Mozi_ftp。\n\n简单来说，Mozi_ftp是一个pyinstaller打包的挖矿木马，通过FTP弱口令爆破实现蠕虫式传播，同时它也会加入Mozi的P2P网络中，等待执行Botnet Master下发的Config。钱包地址如下所示:\n```\n47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV\n```\n其中名为**back.jpg**的模块负责加入Mozi网络以及拉取Config文件，它的基本信息如下所示：\n\n> Filename:back.jpg\n>\n> MD5:4ae078dd5085e97d3605f20dc079412a\n>\n> PE32 executable for MS Windows (DLL) (console) Intel 80386\n>\n> Packer: upx\n\n在脱壳后的样本中，可以很清楚的看到Mozi_ftp Config支持的的一些标签。\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_ftp.png\"  width=\"860px\" />\n\n\n\n同Mozi_bot一样，Mozi_ftp也内嵌了一个加密的原始Config文件，通过XOR解密后如下所示：\n\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_ftpconf.png\"  width=\"860px\" />\n\n同Mozi_bot一样，Mozi_ftp通过下面的代码片段对Config进行签名校验\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_verify.png\"  width=\"860px\" />\n\n\n\n\n其中用到的XOR密钥，以及2个public_key如下所示：\n\n```\n xor key:4E 66 5A 8F 80 C8 AC 23 8D AC 47 06 D5 4F 6F 7E\n------------------------------------------------------------------\nxored publickey A \n\t4C B3 8F 68 C1 26 70 EB 9D C1 68 4E D8 4B 7D 5F \n\t69 5F 9D CA 8D E2 7D 63 FF AD 96 8D 18 8B 79 1B \n\t38 31 9B 12 69 73 A9 2E B6 63 29 76 AC 2F 9E 94 A1\t\nafter decryption: \n\t02 d5 d5 e7 41 ee dc c8 10 6d 2f 48 0d 04 12 21 \n\t27 39 c7 45 0d 2a d1 40 72 01 d1 8b cd c4 16 65 \n\t76 57 c1 9d e9 bb 05 0d 3b cf 6e 70 79 60 f1 ea ef\n-------------------------------------------------------------------\nxored publickey B\n\t4C A6 FB CC F8 9B 12 1F 49 64 4D 2F 3C 17 D0 B8 \n\tE9 7D 24 24 F2 DD B1 47 E9 34 D2 C2 BF 07 AC 53 \n\t22 5F D8 92 FE ED 5F A3 C9 5B 6A 16 BE 84 40 77 88\nafter decryption:\n\t02 c0 a1 43 78 53 be 3c c4 c8 0a 29 e9 58 bf c6 \n\ta7 1b 7e ab 72 15 1d 64 64 98 95 c4 6a 48 c3 2d \n\t6c 39 82 1d 7e 25 f3 80 44 f7 2d 10 6b cb 2f 09 c6\n```\n\n它们的值和Mozi_bot所使用的值相同，根据ECDSA384椭圆算法的特性，这说明Mozi_ftp和Mozi_bot使用的相同的私钥，排除私钥泄露的可能性，可以断定它们是出自同一个团伙。\n\n在back.jpg中可以看出Mozi_ftp的Config支持以下基本标签：\n\n```\n[hp]\n[cpu]\n[cpux]\n[ss]\n[ssx]\n[nd]\n```\n\n在ftpcrack.py的脚本中，有下的代码片段，\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_ftp_py.png\"  width=\"860px\" />\n这说明Mozi_ftp还实现以下4个自有的特殊标签\n```\n[mdf]\n[mdr]\n[mud]\n[mrn]\n```\n\n\n\n### 0x2:SSH节点\n\nMozi借用了51la平台来统计其自身规模,这是僵尸网络作者使用的统计工具，其精度和时间延迟远胜于外部探测。2020年9月，我们拿到了Mozi的后台统计数据，在上面，我们除了看到了Mozi_bot节点的统计数据外，还看到下图所示的一组不曾见过的上报入口。\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_soso.PNG\"  width=\"860px\" />\n\n2021年8月18附近，安全产商深信服，奇安信发布威胁预警，一个名为WorkMiner的挖矿木马正在通过SSH口令爆破传播，有P2P网络行为，这引起了我们的兴趣。经过分析，我们惊奇的发现这正是Mozi僵尸网络中的SSH节点，51la那组特别上报入口正是源自于它，依照旧例，我们将它称之为Mozi_ssh。\n\n我们选取分析的样本基本信息如下所示：\n>\n>Filename:work64\n>MD5:429258270068966813aa77efd5834a94\n>ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped\n>Packer:upx\n\n简单来说，Mozi_ssh是一个通过SSH弱口令爆破实现蠕虫式传播的挖矿木马，大约于2020年10月开始活动(基于样本在VT的时间，未必准确)，钱包地址如下所示，可以看出Mozi_ssh和Mozi_ftp使用相同的钱包。\n```\n47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV\n```\nMozi_ssh是由GO代码和C代码混合编译而来。其中GO代码负责SSH相关的爆破传播，以及对Config的处理，C代码则负责处理加入Mozi P2P网络，拉取Config。\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_ssh.png\"  width=\"860px\" />\n\n\n\n\nMozi_ssh通过以下代码片段实现调用C代码(dht_task)加到P2P网络中。\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_sshgoc.png\"  width=\"860px\" />\n\n\n\n\n函数dht_task的处理逻辑和Mozi_bot一样，内嵌的Config解密后如下所示：\n<img src=\"__GHOST_URL__/content/images/2021/08/mozi_sshconf.png\"  width=\"860px\" />\n\n\n\n和Mozi_ftp一样，用于解密的Config的XOR密钥，以及用于Config签名检验的2个public_key和Mozi_bot中所用的是一样的，这说明Mozi_ssh与Mozi_bot出自于同一个团伙。\n\n在dht_task函数中，可以看到，Mozi_ssh的Config支持以下基本标签：\n\n```\n[hp]\n[ver]\n[cpu]\n[ss]\n[sv]\n[nd]\n```\n\n对于通过检验后的Config，Mozi_ssh用通过函数``main_deal_conf``来处理，比如下面的代码片段就是在处理**swan**标签。相较于Mozi_bot，Mozi_ssh除了支持基本标签，还实现了许多自有的特殊标签。\n\n![newmozi_confbot](__GHOST_URL__/content/images/2021/08/mozi_sshdeal.png)\n\n\nMozi_ssh支持的自有的特殊标签如下所示：\n\n```\n[slan]\n[swan]\n[spl]\n[sdf]\n[sud]\n[ssh]\n[srn]\n[sdr]\n[scount]\n```\n\n\n\n### 0x3: 小结\n\nMozi_ftp，Mozi_ssh的发现，使得我们有明确的证据证明Mozi僵尸网络也在试图从挖矿中牟利。从bot，ftp，ssh这3种节点的样本上，可以看出其作者已经将\"DHT+Config\"这种模型作为一个基本模块来使用，通过复用这个模块，再为不同的功能节点设计不同的特殊标签命令，就能快速的开发出新功能节点所需的程序，十分方便，这种便利性是Mozi僵尸网络能快速膨胀的原因之一。\n\n\n\n# Mozi bot v2s有哪些变化？\n\n在Mozi僵尸网络中，占比最高的就是mozi_bot的节点。2020年1月07日，我们捕获了版本号为v2s的bot样本(```1bd4f62fdad18b0c140dce9ad750f6de```)，随后此版本活跃至今。这个版本引起过安全社区的大量关注，虽然许多安全产商对其都有过分析，但是我们发现依然有遗漏的部分，我们将从补缺这个角度出发，向社区分享我们的发现。\n\n据统计，mozi v2s bot样本主要为ARM，MIPS俩个CPU架构，下文选取ARM架构的样本为分析对象，样本信息如下\n\n> MD5:b9e122860983d035a21f6984a92bfb22\n>\n> ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, stripped\n>\n> Lib: uclibc\n>\n> Packer:UPX\n\nv2s的bot样本与我们最初分析的v2样本有非常多的变化，其中最直观的体现在Config支持的标签上，v2s新增加了2个标签`[cnc],[hj]`，除此之外，新增外网地址获取，upnp端口映射等功能，下面将一一分析这些功能给Mozi_bot带来的变化， 其中[hj]标签的功能，[微软](https://www.microsoft.com/security/blog/2021/08/19/how-to-proactively-defend-against-mozi-iot-botnet/)于2021年8月19日发表过这方面的文章，读者可自行参阅。\n\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_compare.PNG\"  width=\"860px\" />\n\n\n\n\n### 0x1:[cnc] 标签\n\n\nMozi僵尸网络的\"DHT+Config\"这种设计固然有其便利性，但同时也产生了一个缺陷，全部Bot节点在同步Config时存在效率低下的问题，这会间接的导致DDoS的效率低下。为了解决这个问题，Mozi作者设计了[cnc]这个标签，对应新的DDoS攻击子任务。\n\n整个子任务复用了Mirai的代码，通过[cnc]关键字指定C2，Bot节点通过Mirai协议和C2建立通信后，等待C2下发的指令进行DDos攻击。增加了这个子任务后，Mozi要进行攻击时，不再需要通过一次一次同步Config获取攻击目标，只需同步一次Config，得到指定的C2即可，极大的提高了Bot节点的攻击效率，对应的网络结构如下所示：\n\n\n\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_network.jpg\"  width=\"860px\" />\n\n以下是获取C2：PORT的代码片段\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_mirai.PNG\"  width=\"860px\" />\n\n\n\n以下是发送上线包的代码片段\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_initmsg.PNG\"  width=\"860px\" />\n\n\n\n以下是发送心跳的代码片段\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_heartbeat.PNG\"  width=\"860px\" />\n\n\n\n以下是支持的攻击向量，一共有12种方法，编号11被写了2次，因此Mozi的Bot节点只支持11种攻击方法。\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_ddos.PNG\"  width=\"860px\" />\n\n\n\n对Mirai熟悉的朋友看到此处想必会会心一笑，正是因为大量使用Mirai代码，这批Mozi样本被大量杀软产商标记为Mirai，我们推荐杀软产商根据子功能的名称编写查杀特征以正确的标识Mozi_bot样本。\n\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_vt.PNG\"  width=\"860px\" />\n\n\n### 0x2:外网地址获取\n\n通过```http://ipinfo.io/ip```获取外网IP以便在在Telnet，Exploit的payload使用。\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_ip.PNG\"  width=\"860px\" />\n\n\n\n加入这个特性之后不会再有下面内网ip出现在传播payload的情况了。\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_error.PNG\"  width=\"860px\" />\n\n\n\n### 0x3:upnp端口映射\n\n当被感染的设备是通过NAT访问网络时，Mozi_bot通过监听端口在设备上开启的HTTP样本下载服务是无法被外网直接访问的，新版本的Mozi通过upnp的```AddPortMapping```在路由器上实现端口映射，以保证服务的正常访问。\n\n<img src=\"__GHOST_URL__/content/images/2021/08/newmozi_upnp.PNG\"  width=\"860px\" />\n\n\n\n### 0x4:小结\n\n我们可以看出Mozi bot的这些更新都是为了提高效率：DDoS攻击的效率，传播感染的效率。弃用Gafgyt的攻击代码，转向更有效率的Mirai。通过[cnc]子任务，重构DDoS攻击功能，实现控制节点与业务节点的分离，极大的增加了Mozi的网络弹性，这种分离意味着``僵尸网络的控制功能和实际业务解耦``，使得Mozi的作者不仅可以自己进行DDos攻击，也能很方便的将整个网络租赁给别的团伙。\n\n\n\n# Mozi bots还在更新吗？\n\nMozi僵尸网络的样本已经在相当长一段时间内停止更新了，然而这并不意味着Mozi带来的威胁就此终止，由于其已经散布在互联网上的部分有着持续感染的能力，每天都会有新的设备被感染成为僵尸网络的一部分，也每天都会有设备因为升级或者离线从而脱离该僵尸网络的控制。总体我们预期其规模会以周为周期震荡下行，并在互联网上存活数年。``既往已经有若干被各国执法机构终结的僵尸网络走上了这条道路，Mozi僵尸网络也已经一步一步走向它的坟墓``。\n\n\n\n# 总结\n\nFtp,SSH结点的相继被发现，让我们对Mozi僵尸网络有了更深的认知。Mozi僵尸网络是一个混杂的，影响Windows，Linux，IOT 多平台的大型僵尸网络，通过TELNET,SSH,FTP弱口令爆破，以及Nday漏洞的方式实现蠕虫式扩张，它由不同类型的功能结点组成，现已知的节点有进行DDoS攻击的Bot节点，进行Miner的Ftp,SSH结点。网络结构的清楚，不代表掌握了它所有的细节，我们相信还有许多信息可以填充到Mozi僵尸网络这张图上，由于视野有限，目前只能向安全社区分享这么多。如果社区有相关的线索，欢迎与我们联系，让我们一起``Make Cyber Security Great Again``。"}]],"markups":[],"sections":[[10,0],[1,"p",[]]],"ghostVersion":"3.0"}