Mbedbot:TLS加密的后门化僵尸网络

发布时间 2023-09-27

启明星辰与广州大学网安学院发现了一个后门化的物联网DDoS僵尸网络,并将其命名为Mbedbot。本文将从其执行流程、通信协议、控制命令及后门等技术分析角度入手,对该僵尸网络进行全面介绍,以作为各行业及相关企业制定网络安全策略的参考。


2023年7月初,启明星辰在参与国家重点研发计划项目“大规模异构物联网威胁可控捕获与分析技术(2022YFB3104100)”的研究过程中,发现了一个后门化的物联网DDoS僵尸网络家族。


代码结构上,该僵尸网络复用了Mirai的DDoS攻击相关代码,并在其基础上增加https ddos以及tcp syn攻击能力。与其它基于Mirai源码的主流僵尸网络不同的是,除DDoS功能之外,该僵尸网络还实现了远程文件管理、进程操作等诸多后门功能。


并且,其使用tls协议与C2进行加密通信。因其所用tls类库为mbedtls,所以我们把此僵尸网络家族命名为Mbedbot。



技术分析



目前为止,我们暂时只捕获到arm4架构的样本,未发现其它架构的样本。Mbedbot整体代码很简洁,没有太多花哨的地方,完成常见操作流程后,即进入和C2的交互通信。


1、执行流程


运行后,打印字符串"listening tun0",并通过监听31212端口,实现单一实例运行。之后通过异或解密出字符串资源,与Mirai的字符串高度重合:



随后,初始化DDoS攻击向量,共支持11个DDoS攻击方式。初始化代码以及各个DDoS代码完全复用自Mirai:




但Mbedbot比Mirai多一个针对https协议的DDoS攻击类型attack_app_https,同样使用mbedtls库,这也是首次发现支持https协议的DDoS攻击。




完成上述操作后,进入和C2交互通信的循环函数。在交互函数里,首先通过异或解密出C2地址,并使用tls协议和C2建立通信。tls类库为mbedtls,其前身是PolarSLL,现已被ARM公司收购,由ARM技术团队维护更新。



使用tls加密之前收集的系统信息,发送给C2,随后等待执行C2下发的各类命令。



2、通信协议



Mbedbot的通信协议相对简单。在和C2建立tls通信之后,先向C2发送4字节的上线数据长度,2字节的数据类型"\xFF\xFF",再发送受害系统信息(上线数据)。




可见,Mbedbot收集的系统信息很全面。其中:


huuid是硬编码的字符串,指示C2服务器(host)身份id;


buuid则随机生成,表示受害主机(bot)身份id;


version用于指示版本信息。


发送上线数据之后,执行select函数,尝试接收C2下发的各类命令。其中,Mbedbot每15分钟会向C2发送一次硬编码的“心跳“包,用以更新主机存活状态。发送心跳包如下:



同时C2返回的17字节心跳包数据,如下:





其中前16字节"\xD9\x01....\x3B\x3F"是随机生成的SessionID,第16字节是命令码,\xFF表示是心跳包数据。



3、控制命令&后门


Mbedbot实现了很多后门功能,包括文件类(创建读取上传下载执行),执行shell进程,DDoS攻击,结束指定进程,重置C2服务器,退出自身进程等。





Mbedbot的命令格式比较简单,前16字节是C2随机生成SessionID,同一通信会话是唯一的。第16字节是命令码,其后是命令参数。




以如下命令为例:



FC12…57D2,16字节SessionID;


0x0F,1字节命令码,此命令用来设置并重新连接新的C2服务器。


fakembedbotc2.com,命令参数,将C2服务器重设为此。


随后,受害主机尝试解析并连接fakembedbotc2.com:





以下是各命令码及其对应后门功能:




结 语



Mbedbot完整复用了Mirai的DDoS代码,并在其基础上新增两个“自研“的tcp syn攻击以及https ddos攻击能力。并且,针对自身的后门功能进行了丰富,以尝试加强对bot主机的控制能力。


此外,相较于其它僵尸网络,Mbedbot直接使用tls加密和C2的通信,尽管通信协议本身并不复杂,但在tls加持下,能够有效的规避常规特征指纹检测。



IOC



66.42.52.39:443

92.38.135.146:77

dftiscasdwe.w8510.com:443