阅读: 1

物联网平台僵尸网络发展至今,控制者已渐渐不再满足于基于TCP的传统模式,开始探索高隐匿性的网络模型。

作为物联网僵尸网络在P2P方向延伸的代表,Mozi木马使用DHT协议组成网络结构,在DHT网络内部构建Mozi-DHT僵尸网络。自19年被发现以来,Mozi至今依然在扩大其规模。伏影实验室发现,今年4月以来Mozi的日均可探索节点已经超过了10000个,占据了整个DHT网络规模的1%以上,这表明Mozi已发展成为中等规模的僵尸网络,可以对世界范围内的目标尤其是国内的网络节点发动有威胁的攻击。

Mozi木马简析

从代码构成来看,Mozi木马并非独立开发,程序的持久化模块和攻击模块复用了一部分gafgyt木马及其变种的代码,其功能包括重命名实例、监视watchdog、添加iptables规则等,并支持UDP、TCP、HTTP等常规DDoS攻击方式。

Mozi的传播部分同样使用了常见的方案,对随机或指定的ip,使用漏洞与telnet弱口令爆破进行攻击。

Mozi使用的漏洞列表见附录部分。

Mozi木马的所有行为都由一个config文件控制,攻击者控制Mozi进行攻击的过程实际上也是下发该config文件的过程。

该config文件包含4个部分:

  1. config字段部分,绿色,使用异或键4E665A8F80C8AC238DAC4706D54F6F7E加密,包含指令和具体内容;
  2. ECDSA384签名A,蓝色,用于验证config字段部分哈希值的合法性,对应的公钥为02c0a1437853be3cc4c80a29e958bfc6a71b7eab72151d64649895c46a48c32d6c39821d7e25f38044f72d106bcb2f09c6;
  3. config版本,黄色,只有大于Mozi已有config版本的文件会保存执行;
  4. ECDSA384签名B,红色,用于验证前三部分的合法性,对应的公钥为02d5d5e741eedcc8106d2f480d0412212739c7450d2ad1407201d18bcdc416657657c19de9bb050d3bcf6e707960f1eaef。

config字段使用xml结构,不同的标签指示对应的指令。config支持以下标签:

标签内容作用
[dip][/dip]ip:port指定漏洞扫描和弱口令爆破时的下载地址
[atk][/atk]string指定ddos攻击类型和目标
[count][idp][/count]url在该url登记Mozi节点
[ver][/ver]byte设置Mozi-DHT协议v字段中固定字节的值
[hp][/hp]string设置Mozi节点hash的前缀
[ud][/ud]url从该url下载木马程序并更新
[dr][/dr]url从该url下载程序并运行
[cpu][/cpu]string指定cpu类型,只有相同类型的Mozi节点会使用该config文件
[cpux][/cpux]该标签控制cpu标签是否生效
[ss][/ss]string指定节点标记,只有带有相同标记的Mozi节点会使用该config文件
[ssx][/ssx]该标签控制ss标签是否生效
[sv][/sv]byte控制Mozi节点是否用该config更新本地config文件
[rn][/rn]string执行指定的cmd指令或http请求
[nd][/nd]url指定Mozi节点要连接的DHT节点

Mozi木马初始config文件内容为:

[ss]bot[/ss][hp]88888888[/hp][count]http://ia.51.la/go1?id=19894027&pu=http%3a%2f%2fbaidu.com/[idp][/count]

Mozi网络模式

与常规物联网木马最大的不同在于,Mozi完全依赖DHT协议构建僵尸网络,并且将所有Mozi节点加入到公开的DHT网络中。

DHT是世界上最知名的P2P分布式网络协议,包括BitTorrent、eMule等资源共享平台都依赖DHT进行传播。

Mozi节点从加入DHT网络到执行攻击者指令的过程如下图所示:

Mozi网络加入流程:

  1. 绿色箭头部分,新的Mozi节点首先向ia.51.la发送http请求,用于登记节点信息。该地址被攻击者控制;
  2. 蓝色箭头部分,Mozi节点向硬编码的8个公共DHT节点发送DHT find_node请求,获取临近DHT节点的信息,并进一步连接这些临近的DHT节点,从而加入DHT网络;
  3. 黄色箭头部分,Mozi通过验证DHT通信中指定字段的值,识别临近DHT节点中的Mozi节点,并使用特殊的Mozi-DHT协议与这些Mozi节点通信;
  4. 红色箭头部分,攻击者借由某个Mozi节点,或直接使用任意主机向DHT网络中的已知Mozi节点发送UDP数据包。Mozi节点验证该数据包的格式,提取其中的config文件内容以执行攻击指令,同时将获取到的config文件共享给临近的Mozi节点。最终,域内所有的Mozi节点都会获得该config文件并执行。

通过以上流程可以看出,Mozi-DHT协议是一个Mozi节点识别临近节点的重要方式。Mozi-DHT协议一方面兼容常规DHT协议,可以与普通DHT节点正常通信,一方面通过一些定制项,保证自己在DHT网络中的独立性。

Mozi-DHT协议有以下定制项:

  1. 特殊的v字段。DHT通信中,节点一般用v字段来表明自己的协议版本。而在Mozi-DHT通信中,Mozi节点会使用固定方法生成4字节的v字段值,并通过验证通信中该值的合法性确定对方是否是Mozi节点。v字段值由首字节的随机值,第二字节指定值,第三和第四字节的哈希值组合生成。
  2. 特殊的KRPC消息逻辑。KRPC消息是DHT协议的具体实现,包括四种消息:ping,find_node,get_peers和announce_peer。Mozi-DHT协议使用同样的逻辑响应find_node与get_peers消息,可以将自身的config文件内容放入nodes字段中回复给发起请求的Mozi节点。

此外,Mozi节点还支持直接的UDP通信。如果Mozi节点接收到非DHT格式的UDP数据包,会使用与验证

v字段相同的哈希算法验证该UDP数据包,并根据其长度是否大于99,决定将数据包内容作为config文件读取或向通信源发送自身的config文件。

Mozi网络规模

伏影实验室对当前的DHT网络进行了爬取,从中统计Mozi节点的哈希数量与地理分布。

由于DHT网络中节点会动态变化,我们选取了4月某一天的数据进行分析。

数据显示,在总数1100590的DHT节点哈希中,Mozi节点哈希数量为11776,占比1.07%。这说明Mozi僵尸网络的规模已达到整个DHT网络规模的百分之一左右。

地理位置方面,Mozi节点的全球分布如下图:

可以看出,Mozi僵尸网络主要根据地为东亚、欧洲和北美洲,澳大利亚和巴西等国也有部分分布。中国境内探测到的Mozi节点占总数的25.3%,是Mozi僵尸网络的最大来源,数量第二的美国占比为10.3%、第三名的韩国为7.9%。欧洲区域节点则集中在俄罗斯、德国、法国和波兰等国。

Mozi僵尸网络在国内十分活跃。伏影实验室分析国内某节点的流量数据时发现,近期检测到的漏洞扫描流量的96%都与Mozi有关:

这些漏洞流量都携带了由Mozi节点的config文件指定的Mozi程序下载地址,一旦攻击成功,受害设备将成为新的Mozi节点。

提取这些漏洞流量中的下载地址与已记录的Mozi节点IP进行对比,我们发现仅有27%的下载地址与Mozi节点地址相同:

假设Mozi的扩散行为都由其节点进行,该现象表明Mozi僵尸网络处于不断有节点加入和退出的活跃状态。

我们认为, 20%左右的稳定节点和80%的新节点构成了当前的Mozi僵尸网络结构,而对Mozi的治理也应从这20%的稳定节点开始入手。

小结

当前监控数据表明,Mozi网络仍然处在积极扩张期,致力于控制更多物联网设备。由于其基于P2P的网络模式,Mozi将比传统僵尸网络更难检测和治理。鉴于Mozi使用了物联网僵尸网络的常见传播方式,其最终可能会发展到与Mirai与Gafgyt等知名僵尸网络同等的规模。因此,物联网设备用户尤其是国内用户需要更加重视设备漏洞和弱口令的问题,积极防御Mozi木马的入侵。

附录 Mozi漏洞利用列表

CVE-2016-6277
Netgear_DGN1000_1_1_00_48_Setup_cgi_Remote_Code_Execution
CVE-2015-2051
CCTV-DVR Remote Code Execution
CVE-2014-8361
D_Link_OS_Command_Injection_via_UPnP_Interface
CVE-2017-17215
JAWS_Webserver_unauthenticated_shell_command_execution
CVE-2018-10561
Vacron_NVR_RCE
Eir_D1000_Wireless_Router_WAN_Side_Remote_Command_Injection