近期,360安全大脑监测发现一类ELF样本正在发起大规模DDoS攻击,致使肉鸡和被DDoS攻击设备资源耗尽直至拒绝服务,严重影响正常业务运行。通过对其通信协议字段构造、核心攻击函数调用等细节深入剖析及关联分析后,我们认为其为RapperBot僵尸网络新变种,详见第三节归属研判。
该新变种会采取如下手段以增强其隐蔽性:
1)入侵成功后先潜伏以降低用户警觉(期间保持与C2的心跳连接,有时长达数小时),收到C2攻击指令后,可对特定目标发起9种类型DDoS攻击;
2)多样性:x86、arm新变种使用不同协议字段(通过包含样本架构的运行参数进行区分);
3)对敏感资源信息和网络通信作加密处理,并在数据包尾部附加无意义随机字节码以掩盖其恶意目的。
监测发现,被攻击设备主要分布在中国、美国、俄罗斯等国家。同时,该变种还会针对金融、电信运营商、游戏公司等高价值目标发起大规模DDoS攻击。
RapperBot新变种主要通过SSH暴破、漏洞利用等方式进行传播,入侵成功后便植入并运行RapperBot僵尸程序,通过与C2服务器建立通信以接收C2指令对目标主机发起DDoS攻击。
RapperBot在入侵成功后,会运行恶意脚本以植入RapperBot僵尸程序(覆盖arm、x86、x86_64、mips等主流架构)。本文先对其x86新变种bec7596cfb1225900673398abb24ffa8进行分析。
新变种仍利用STUN协议以获取肉鸡公网地址和端口信息。
在for循环中,通过模5运算依次得到对应加密C2域名的index,并通过xor解密(同配置表加密方式),得到如下5个C2域名。
成功建立TCP连接后,bot与C2必须经过三个阶段的交互,才能建立完整通信。
Stage 1:bot向C2发送上线包(收集的肉鸡信息作了异或处理)。
Stage 2:bot向C2发送包含4字节数据的心跳包,维持连接。
Stage 3:bot继续发送包含4字节数据的心跳包,等待C2指令。
如下是RapperBot通信过程中三个阶段解密前后对比图,为便于查看对比, xor_key(第5个字节)已异或处理:
Bot构造上线包时,需要获取如下6个关键字段:
Payload中第2个WORD可区分数据报类型,上线包:00 5A;bot其他请求包:00 04,解密后的数据包各字段释义见右侧Bookmarks(对应标签颜色)。
认证通过后,C2发送cmd_code=2且不带data的响应包(已解密):
若C2响应包data_len>0(第3、4字节),说明data部分做了加密处理,解密方法与上线包类似。
接着,bot发送包含4字节数据的心跳包(cmd_code=3,4字节数据为00 xx 01 00,xx有06/07/08/09/0a五种取值),C2则响应不带data的心跳包以保持连接,解密后的数据包如下:
RapperBot会对C2响应包进行解密,并根据cmd_code值(payload第6字节)执行不同操作,各指令码具体含义如下:
含义 | |
1 | bot上线包 |
3 | |
C2响应包cmd_code=4时,bot进入DDoS攻击流程,即根据data字段第11字节值(攻击向量)调用对应攻击函数。
*(data_buf+10)=00,调用0804C9D0 => udp_flood ()
*(data_buf+10)=01,调用0804AFD0 => udp_flood_forged ()
*(data_buf+10)=02,调用0804A7B0 => gre_ip_udp_flood ()
*(data_buf+10)=01,调用08049E50 => gre_eth_udp_flood ()
*(data_buf+10)=04,调用0804C020 => syn_flood ()
*(data_buf+10)=05,调用0804B650 => ack_flood ()
*(data_buf+10)=06,调用08049350 => ack_push_flood ()
*(data_buf+10)=07,调用08048B90 => tcp_socket_flood ()
*(data_buf+10)=08,调用08048510 => http_flood ()
C2下发攻击指令包时包含连续2个响应包(心跳+攻击指令包)。
当下发的指令包中cmd_code=4、攻击向量=8时,bot会构造http flood报文,其攻击暴雪游戏网站登录页面的指令包如下(解密后):
攻击俄罗斯联邦储蓄银行的指令包如下:
RapperBot的arm架构新变种的协议字段,相比x86新变种有细微差异,主要体现在:
如下是RapperBot 2023.6.13日入侵shell脚本与本文中2024.7.14日入侵脚本的对比图,二者脚本存放路径、脚本文件名(.f)相同、启动参数(./.f xxx)相似。
RapperBot v2024.03月版本与本文变种样本对配置表字符串均使用不同xor_key进行加密。
结合360安全大脑数据,请求ip:74.125.137.127以使用STUN协议获取公网地址的elf样本共194个,只有RapperBot、本文变种两类样本。
1)收集的信息及字段长度
bot运行参数 |
2)指令码对比
对比发现,二者有4个相同的指令功能,尽管cmd指令号不同,但cmd_code均为1~6之间的整数。
RapperBot早期版本 | ||
关闭C2连接 | ||
如下是同为arm架构的本文样本与RapperBot早期版本C2攻击指令包的对比图,可以看到二者在字段结构及参数上非常相似,只是字段顺序上有细微差异以及RapperBot早期版本无xor_key字段。
1)服务器应配置高强度的登录密码(大小写字母、数字和特殊字符的组合密码),并定期更换密码;
2)修改ssh端口为其他端口(非22端口);
3)若非业务需要,不要在公网开放业务端口,采用本地或内网访问,设置访问白名单等方式进行加固;
4)及时更新主机漏洞补丁,将应用软件升级到安全版本。
C2:
iranistrash[.]libre
nexuszeta[.]lib
turtlesforsale[.]dyn
churchofhollywood[.]libre
imhere[.]libre
85.208.108[.]16
85.209.153[.]111
下载服务器:
4v[.]wtf
94.156.68[.]206
162.252.175[.]123
141.98.11[.]189
179.43.134[.]167
108.181.0[.]237
MD5:
bec7596cfb1225900673398abb24ffa8
74d1fb23184554b11b6575c765fd50b8
0aa56811fc4ddb2b81ceeea2ba546621
05d6b46354d13eda89de4dee8fcc76aa
6acd2d34ce299ef016d1e6979e75e45e
7b3c32637ac8157dfb200ecc59129663
77a2f77700c1624e1e9e54bf351850fa
83e0d1b46d9037feeff48d7fb1dcbf34
05009c6cb89d7d39c8ecbdc4505a832d
9502b4e10d20cfd1d46087a2ac8c005f
a51b72d6bf8a22d797ccd5bcd7b17466
a114d61f6656dc5e16a37bee637ad7a1
https://blog.nicter.jp/2024/06/rapperbot_campaign/
https://www.fortinet.com/jp/blog/threat-research/ddos-botnets-target-zyxel-vulnerability-cve-2023-28771