Dark Nexus僵尸网络分析
导语:本文分析一款新的IoT僵尸网络——Dark Nexus。
Bitdefender 安全研究人员发现了一款新出现的IoT僵尸网络——Dark Nexus。Dark Nexus利用被黑的智能设备来发起DDoS攻击,通过平台来提供DDoS 租赁服务。
研究人员发现Dark Nexus 通过凭证填充对路由器(Dlink、ASUS等知名品牌)、视频录像机、温感摄像机等不同种类的设备发起攻击,使其加入到僵尸网络中来。截止目前,Dark Nexus 入侵了至少1372个主机充当逆向代理,涉及中国、韩国、 泰国、巴西和俄罗斯。
图1 dark_nexus僵尸网络全球受害者分布情况
架构
恶意软件二进制文件使用了一款开源的工具链Aboriginal Linux进行跨平台编译,可以使二进制文件适用于不同的IoT平台。这些二进制文件的大部分都有一个基于UPX的打包器,并且去表了符号和调试信息。但是研究人员发现arm7 二进制中含有一些调试信息。研究人员利用这些调试信息发现了该恶意软件的架构。其中包含以下源文件,分别对应僵尸主机的模块和特征:
· lockdown.c
· main.c
· networking.c
· resolve.c
· socks5.c
· mass_exploiter.c
· reverseproxy.c
· spreader.c
· syn_bruter.c
可执行文件使用了UPX的定制版本进行打包,以防止研究人员进行逆向分析。
通信协议
通信数据包的第一个字节表示命令的类型:
· 0x9a,退出
· 0x69 (‘i’) ,将目标加入到暴力破解目标列表中
· 0xfe,ping C2主机 (发送一个字节0x15)
· 0x4b (‘K’) - kill_attacks
· 0x43 (‘C’) - cmd_not_attack; 第二个字节和表示的含义如下:
· 1: 在新进程中执行命令
· 3: kill运行的fork
· 7: 重启
· 16: 按端口kill进程
· 17:kill逆向代理
· 18: 启动逆向代理
Killer模块
与其他僵尸网络相比,攻击是标准的DDoS攻击。其中browser_ http_req 是非常复杂和可配置的,会尝试将流量伪装成流量器生成的正常流量。Killer模块在特定进程中运行,因为是最后一个初始化的,因此指导所有其他复制的进程的PID,随后会用作白名单。
传播
僵尸主机使用了2个模块来进行一个传播,一个是同步模块,另一个是异步模块。在开启同步扫描器时,僵尸主机会生成一个执行init_syn_bruter函数的进程。在异步机制中,C2会发布一个特定的命令,指明IP和端口。这些信息保存在一个队列——dynamic_queue_head中。僵尸主机会维护一个大小为250的连接列表——bruting_conns。主僵尸主机进程会服用这些连接创建的socket。此外,还会周期性地检查所有连接的timeout,包括到C2的连接。在与C2通信时,就发送一个注册消息。
同步sync (init_syn_bruter)和异步async (fd_event) 机制中都实现了Telnet 协议,并尝试通过预定义的凭证以暴力破解的方式来进行认证。当同步暴力破解器报告受害者给报告服务器时,事实上是发送了一个感染payload,异步机制只通过C2 socket发送一个含有IP、端口和发现的凭证的消息。在一些版本中,异步报告器也会报告给报告服务器(维持蠕虫行为)。通信方法也是不同的,有些样本中是通过TCP 12000或13000端口,有些是通过UDP的12000或13000端口,有的是通过C2 socket(TCP 30047端口)。
攻击者IP:
· 66.175.210.74
· 51.15.120.245
· 45.33.73.134
· 190.115.18.144
· 190.115.18.28
· 51.159.52.250
· 190.115.18.86
· 192.168.100.210
· 192.168.100.27
· 192.168.110.135
· 45.33.84.114
· 45.56.102.170
僵尸主机用于暴力破解的凭证列表如下所示:
驻留
在不断进化发展过程中,dark_nexus使用了不同的驻留方法。在5.1之前版本中,该功能是在僵尸主机启动过程中执行的:
图2 反编译的驻留函数,负责停止cron服务
为确保驻留,这些命令会通过停止cron服务和移除用来重启设备的可执行文件的权限来防止设备重启。新版本中使用了另一种驻留函数,在/etc/init.d/rcS 文件中放置了一些命令。首先,从/proc/self/exe中读取僵尸主机代码,并将echo命令格式化并输出到/tmp/dvr_enc 文件,然后执行:
echo -ne “\x7f\x45\x4c...” > /tmp/dvr_enc chmod 777 /tmp/dvr_enc /tmp/dvr_enc reboot
驻留函数中执行的另一个shell命令是iptables -F,负责清除iptables规则,确保与C2之间的通信或发送的DDoS payload不会被过滤。
代理模块
在初始化后,僵尸主机会从命令行中提取参数IP和端口,是感染当前设备的公共IP端口,其父设备以HTTP服务器的形式运行。
图3 设备父设备信息提取的代码
然后僵尸主机会随机生成一个端口,并在新进程中启动其HTTP 服务器(init_reverse_proxy)。并且从host服务器上下载僵尸二进制文件——hoho.[arch],保存到设备上。该操作是循环发生的,以确保本地保存的二进制文件与HTTP服务器上的是同步更新的。代码会使用中心服务器作为其后台。当与后台的连接发生问题时,后台就会更新到指向感染链中父节点的IP和端口。
在蠕虫组件中,代理也用于感染过程:不管用了什么方法,受害者会被重定向到从攻击者处下载一个合适的二进制文件,而非中心化的服务器。
代码模块含有2个字符串,可以用来确保僵尸主机的版本:
· 服务器对GET请求/的响应内容就是这个形式:hoho_fastflux/v4.0
· 发送给后台的请求中使用的代理:User-Agent: checker/v4.0/p
基础设施
僵尸网络的基础设施由以下部分组成,分别是:
· 多个C2服务器。负责发布命令给僵尸主机,使用的域名有:
· switchnets[.]net:30047
· thiccnigga[.]me:30047
· 报告服务器。发现有漏洞的服务后,僵尸主机就会将IP和端口报告给报告服务器。在一些版本中,报告服务器是一个域名或硬编码的IP地址,端口是12000.域名与C2使用的相同,IP对应每次解析的地址。
· 托管服务器。样本托管在switchnets.net:80上,可以用HTTP提取。在使用二进制下载器的感染向量中,IP是硬编码的。在dark_nexus版本中有一个反向代理特征,每个受害者都作为托管服务器的代理,在随机端口上提供一般。当端口报告给C2时,僵尸主机就会注册。此外,在感染过程中,同步扫描器会给出其IP和反向代理端口号给受害者。受害者就指导了父服务器的IP和端口,并使用其作为源来周期性地更新其样本集。
图4 dark nexus感染和服务交互图
发表评论