本报告由国家互联网应急中心(CNCERT)与北京奇虎科技有限公司(360)共同发布。
一、 概述
Moobot是一基于Mirai开发的僵尸网络家族,自从其出现就一直很活跃,并且拥有0day漏洞利用的能力。本文主要介绍Moobot利用UNIXCCTV DVR/NVR视频监控设备在野0day漏洞的情况。
2020年6月9日,CNCERT和360首次捕获到针对该漏洞的探测扫描;2020年6月24日,首次捕获利用该漏洞的Moobot样本;2020年8月24日,厂商发布针对该漏洞的补丁。友情提醒此类设备的用户及时更新设备固件。
二、 漏洞分析
该漏洞是远程命令注入漏洞。漏洞位置为设备gui程序监听的8000端口(验证固件版本:ALL265_unix_2.3.7.2B.fwr),根据设备手册我们得知,该端口为DVR Watch,Search,Setup功能默认监听端口。该端口具有可远程更新系统时间的功能,此功能实际由gui程序调用系统命令nptdate实现。漏洞由此触发,gui程序执行ntpdate命令时没有对NTP server参数进行检查,导致命令注入漏洞。例如构造此条命令(ntpdate -d -t 1 time.nist.gov& whoami)将导致whoami命令被执行。
通过扫描全网8000端口,我们发现6k左右的在线设备。绝大部分的设备都在美国。已知受影响的设备型号包括:PVT-N5UNIXDVR 1、PVT-8MUNIXDVR 1、NVST-ILUNIXDVR 1、25 NVST-ILUNIXNVR 1、Magic-U-8M5UNIXDVR 1、NVST-IPUNIXNVR 1、NVST-IPUNIXDVR 1、Magic-T-8M5UNIXDVR 1、HD-Analog3RDVR 1、Magic-QXUNIXDVR 1、Magic-U-8M5UNIXDVR 2、PVT-8MUNIXDVR、NVR3RGPardisNVR、Magic-U-8M5UNIXBoca DVR、MER-28N16ENEODVR 1、MER-28N08ENEODVR 1等。
三、 漏洞相关样本分析
我们捕获的Moobot样本主要包括一个下载者(MD5:af3720d0141d246bd3ede434f7a14dcb)和一个Moobot变种(MD5:fb96c74e0548bd41621ea0dd98e8b2bb)。下载的主要功能为下载Moobot样本和实现持久化。值得一提的是,下载的Moobot样本是压缩的,这在一定程度上对抗了网络流量层面对样本的直接检测。Moobot变种,基于其复用了LeetHozer的加密方法,我们称之为Moobot_leet。Moobot_leet在主机行为层面和Mirai很相似,并无亮点,因此这方面不再细述;网络流量层面采用Tor Proxy,样本内嵌了大量的代理节点,而且Tor-C2被加密。
下文将着重介绍Moobot变种加密方法和通信协议。
(一)加密方法
Moobot_leet将Tor-C2分成了prefix(16 bytes),suffix(7 bytes)俩部分,分别存在样本的不同位置,采用LeetHozer的加密方法,需要合并才能解密出正确的Tor-C2。
解密方法如下:
以prefix(0D 02 50 08 10 18 12 06 17 17 61 77 7A 79 6A 97),suffix(CC 81 88 BB BD B8 DE)为例,拼接得到ciphertext(0D 02 50 08 10 18 12 06 17 17 61 77 7A 79 6A 97 CC 81 88 BB BD B8 DE),解密可以得到Tor-C2为 ol6zbnlduigehodu.onion。比较奇怪的一点是,从代码层面(random mod 7),可以看出应该有7个Tor-C2,但实际样本中只有3个,这会导致Bot访问非法的Tor-C2。我们猜测这是一种用来扰乱安全研究员&对抗沙箱IOC自动抽取系统的手段。
(二)通信协议
Moobot_leet首先和样本内置的代理节点建立连接,然后和Tor-C2建立连接,最后走正常的Moobot通信协议通知C2上线,接收C2下发的攻击指令。网络流量概览如下:
第二步,通过Tor-Proxy协议和C2建立连接。
第三步,通过Moobot协议和C2进行通信,具体的上线、心跳、攻击包,如下所示: