新型物联网蠕虫 “鲸鲨蠕虫”深度分析报告

作者:ADLab

1. 鲸鲨蠕虫介绍

近期,启明星辰ADLab与电信云堤发现了一款新型物联网蠕虫:鲸鲨蠕虫,鲸鲨蠕虫是首款利用物联网设备来构建大型代理网络的蠕虫病毒,主要感染对象包括路由器、网络摄像头、交换机等物联网设备,我们当前所发现的该蠕虫受控于一台位于俄罗斯的主机服务器。

此蠕虫并未实现任何可以用于网络攻击的模块,从我们目前的分析结果来看,该蠕虫仅仅实现了一个 TCP 流量转发的功能,黑客可以利用该功能向任何指定 IP 地址发送 TCP 数据包。因此我们推测,该黑客试图利用蠕虫来建立一个大型的网络代理平台,并利用该平台管理的网络设备来转发其流量,以实现如下目的。

  • 利用该代理平台来提供代理服务谋取利益。
  • 利用僵尸流量转发功能来对目标实施如 HTTP 攻击。
  • 利用这些网络设备来构建一个多级中转站,为黑客提供攻击掩护、身份隐藏等基础设施。

该蠕虫具备以下特点:

  1. 该蠕虫拥有强大的可升级的弱口令密码表,蠕虫感染时利用的弱口令表由服务器在后台进行升级。
  2. 蠕虫感染行为较灵活,蠕虫感染的目标可以由主控服务器指定,也可以由蠕虫随机生成感染的目标 IP。同时蠕虫程序可以通过自带的下载器下载或者利用 wget 或 tftp 程序从主控服务器下载。
  3. 蠕虫适配物联网设备不同的架构及软件环境,该蠕虫适配 mipsx86armpower pcHitachi 的不同的 CPU 架构,兼容大端和小端的字节顺序。在软件环境方面,该蠕虫适配带 busybox 程序的环境和不带 busybox 程序环境、适配带 echo 程序的环境和带 printf 程序的环境、适配带 wget/tftp/echo/printf 的二进制回显重定向的下载模式。
  4. 收集大量设备的网络数据信息。主控服务器不仅收集受感染设备的用户名、密码、系统环境信息,还收集无法连接或连接异常的设备的IP及出错原因。我们推测黑客企图建立强大的设备数据库信息,为后续的攻击建立基础。

可以看出,该蠕虫与其他类型的物联网僵尸(如 MiraiHajimeQbotKTN-RM 等)相比具有控制更加灵活、感染成功率更高、隐蔽性更好等优点。因而我们将这款新型的蠕虫命名为“鲸鲨蠕虫”。

2. 鲸鲨蠕虫活跃量分析

在发现鲸鲨蠕虫后,我们监测了鲸鲨蠕虫最近一个月(2017年6月)的活跃IP数据并以周为单位进行了统计分析,如下图所示。

活跃数据由电信云堤提供
根据活跃量柱状图显示,在6月的第二周也就是6月8日至14日活跃量最高达到了 10975 个,而这个活跃量仅仅是当前所捕获的单个 C&C 连接数量,也就是说仅在中国电信网络中一个 C&C 所控制的物联网设备就有上万台。而该蠕虫绝不仅仅只有这么一个 C&C,按照黑客预配 C&C 的惯例,通常都会有多个 C&C,有的黑客组织还会预备几十个,甚至成百上千个 C&C。因此,可以说目前所发现的感染设备仅仅只是该蠕虫网络的冰山一角。

此外,我们还对全国的感染设备数量做了进一步的监测统计,绘制了如下鲸鲨蠕虫的全国感染分布图。

监测数据由电信云堤提供
从分布图中可以看出,每个省份均有不同程度的感染,尤其是广东省和江苏省感染量最大,两省感染数量总和接近全国感染量的50%。而这两个省份同时也是摄像头生成厂商最为密集、摄像头安装量最大的两个省份。

3. 鲸鲨蠕虫行为分析

3.1 行为分析

  1. 受控的 IoT 设备上的蠕虫程序主动连接主控服务器的 6765 端口,获得相应的弱口令表信息。
  2. 受控的 IoT 设备上的蠕虫程序启动多个进程连接新的 IoT 设备的 232323 端口的 telnet 服务,利用弱口令攻击目标设备的 telnet 服务,尝试感染并控制目标设备。下图为受感染设备的 TCP 连接列表的信息,我们从第三列的 rem_address 可以看到设备尝试连接了大量 IP 的 0x0017(23,telnet)端口。

  1. 受控的IoT设备上的蠕虫程序会在新的 IoT 设备的根目录、/dev/etc/var/var/tmp 上寻找一个可读写的目录,下载一个 81c4603681c46036.*(根据目标CPU架构的不同,有 armv4lmipsi586sh4 等不同后缀名。)的蠕虫文件。
  2. 被感染的 IoT 设备上的蠕虫程序与主控服务器建立代理网络,并将其用于中继恶意流量以掩饰真实来源。
3.2 蠕虫的核心流程

  1. 绑定 1000020000 端口,保证只有一个蠕虫的主进程在运行。
  2. 查询主机的 telnet 服务对应的 pid,kill 该 pid 对应服务进程。
  3. 绑定 23 端口,防止被别的进程占用(禁止 telnet 服务再次被打开,或者被别的蠕虫利用弱口令进入)。
  4. 连接主控服务器的 6745 端口进行登录验证。
  5. 如果验证成功,则接收主控服务器返回的数据,获得新的主控服务器的ip和端口号(6755 端口,6765 端口)。
  6. 从主控服务器获取 16 字节的数据,作为后续随机数的初始向量。
  7. 启动网络代理子进程。
  8. 启动蠕虫感染子进程。
3.3 蠕虫感染的主要流程
  1. 蠕虫程序连接主控服务器的 6765 端口,进行登录验证。
  2. 从主控服务器获取弱口令列表(共300组)。
  3. 蠕虫程序产生 100 个 IP,给每个随机 IP 发 tcp syn 包,探测这些随机 IP 的 23/2323 端口是否打开。
  4. 检测目标设备的 CPU 架构。
  5. 在目标设备上寻找可以读写的目录。
  6. 调用 wget/tftp/echo/printf 程序下载蠕虫。
  7. 向主控服务器上报目标IP攻击的结果,包括目标 IP、端口号、成功/失败原因、弱口令密码表索引值、目标IP的设备架构和软件架构。
3.3.1 登录验证

蠕虫向主控服务器的 6765 端口发送特定的 TCP 数据包,主控服务器根据验证结果,给蠕虫下发验证结果。

3.3.2 获取弱口令表

如果登录验证通过,蠕虫程序会从主控服务器获取弱口令数据。

3.3.3 搜索感染目标

蠕虫扫描随机产生的 IPv4 地址并且尝试连接它们的 23/2323 端口,如果连接成功,再尝试使用主控端提供的 300 组密码进行随机尝试。

3.3.4 判断目标设备的CPU架构

蠕虫程序通过 dump 目标设备 busybox 程序的22字节的 elf 文件头,来判断目标设备的 CPU 架构。根据不同的 CPU 架构,下载不同的蠕虫程序。

3.3.5 软件环境适配

蠕虫程序在软件环境适配方面做了很大的工作,可以适配多种目标设备的软件环境。

3.3.6 监测可读写的目录

测试根目录、/dev/etc/var/var/tmp 目录的读写能力,寻找可以读写的目录。

3.3.7 下载蠕虫

在目标设备上通过 wget 或 tftp 下载对应设备 CPU 架构的蠕虫,并修改程序的可执行权限,然后运行蠕虫。

如果目标设备不存在 wget 或 tftp 程序,则通过 echo 或 printf 方式向目标设备推送下载器,然后在目标设备执行下载器程序,下载并运行蠕虫程序。

蠕虫程序内嵌下载器包括了 armmipspower pcsh架构

下载器可以通过 HTTP GET 请求的方式从黑客服务器上下载“鲸鲨蠕虫”执行。

3.3.8 攻击结果信息上报

蠕虫的感染子进程会将目标 IP 的攻击结果上报给主控服务器。

3.4 网络代理实现流程
  1. 连接主控服务器的 6755 端口,与主控服务器进行登录验证,利用报文校验值进行认证。
  2. 从主控服务器中读取数据,然后从数据中取出目标设备的 IP 和端口号,以及要下发的数据。
  3. 连接新的目标设备的 IP 和端口,将要转发的数据发出去。
  4. 接收目标设备返回的数据。
  5. 将返回的数据发给主控服务器。
3.4.1 登录验证

蠕虫向主控服务器的 6755 端口发送特定的 TCP 数据包,主控服务器根据验证结果,给蠕虫下发验证结果,验证通过后继续后续流程。

3.4.2 接收要转发的数据

从主控服务器接收要转发的数据及目标 IP 和端口号。

3.4.3 连接目标地址

一旦接收到主控服务器发来的攻击目标的 IP 和端口号,蠕虫程序会主动连接目标。

3.4.4 发送转发的数据

蠕虫可以将从主控服务器接收到的数据,发送到目标IP。

3.4.5 转发目标IP接收到的数据给主控服务器

蠕虫将目标返回的流量数据转发给主控服务器。

4. 总结

根据以上的分析可以看出,鲸鲨蠕虫既没有提供攻击模块,也没有提供扩展组件的下载执行,因此对于鲸鲨蠕虫本身而言,黑客当前的目的并不在于攻击而是在于利用蠕虫传播的手段来搭建一个代理网络平台。此外,鲸鲨蠕虫还会将扫描感染阶段的所有设备信息都上传到主控端,无论是已成功感染还是未成功感染的设备,这样黑客可以依据这些信息来制定更有针对性的弱密码表进行下发,以感染更多的设备。该蠕虫构建的网络最大的威胁可能在于,被利用来作为恶意攻击的地下网络,使得原攻击者难以被追踪。

上一篇:【安全预警】CVE-2017-7645:Linux 内核远程拒绝服务漏洞

下一篇:Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)分析