僵尸永远不死:RapperBot僵尸网络近况分析

概述

RapperBot 是一个活跃的僵尸网络家族,最早由 CNCERT 于 2022 年 7 月公开并命名。FortiGuard Labs 在 2022 年 11 月的报告中将其活动时间追溯至 2021 年。2025 年 2 月,RapperBot 参与了针对 Deepseek 的攻击;自 3 月起其攻击行为显著活跃,日均攻击目标超过百个,观测到的 bot 数量超过 5 万。

该家族不仅持续迭代,还在样本中留下了带有挑衅意味的信息。例如,样本中曾留下未使用的字符串https://www.youtube.com/watch?v=4fm_ZZn5qaw,该Youtube视频的内容是一首Rap歌曲《I Am Da Bag》。一些样本中还留下字符串要求关注rapper2tallforfood。也曾向逆向工程师询问是否在分析其样本时听了其音乐,并公然挑衅我们的前团队 NETLAB360

它甚至承诺将在下次更新中“留下新消息”,但遗憾的是我们未再收到,样本中的留言信息如下:
pastebin_netlab.png
图中 pastebin URL https://pastebin.com/dfHYSqVz使用Base64解码后的内容如下:

This is rapperbot, rapperbot is in its testing and development stages. Take nothing here seriously.
Brian Krebs approves of this project; he is our number one supporter.
FUCK DOTA3.TAR.GZ (outlaw) AND FUCK xorddos for using those dumb ass low IQ root kits. (they have no idea what's to come)
I love Olivia Rodrigo, soon I will be rich enough to meet her.

Question, Did you guys listen to my music whilst reverse engineering my binary? (https://www.youtube.com/watch?v=4fm_ZZn5qaw)
I can only imagine the Chinese (NETLAB360) researchers not understanding it at all and trying to decode the meaning behind it.

Anyway, 2tall out!
See you guys in the next update, I'll most likely leave another note.

在近期样本中,我们注意到 RapperBot 似乎开始对受害者进行敲诈,要求缴纳“保护费”以避免 DDoS 攻击。

Donate $5,000 in XMR to (48SFiWgbAaFf75KsRSEEr4iDcxrevFzVmhgfb6Qudss52JK8cCR8bwmUxNBPN2VmqDTucJL3eabiZc5XRYVGkbh6BH58Ytk) to be blacklisted from this and future botnets from us. Contact: horse@riseup.net with TxID and IP Range/ASN.

XLAB 对该家族保持长期追踪,以下将与社区分享我们的一些最新发现。

BOT规模

在我们分析Rapperbot样本时发现它生成的32个C2域名有部分域名尚未被注册。我们于2024年4月3日主动注册了其中若干个尚未被使用的C2域名,通过对访问我们注册域名的僵尸主机(BOT)进行统计和分析,我们能够间接获取该Rapperbot僵尸网络的BOT规模、分布范围等信息。

在最近一个月的观测中,BOT IP数量峰值达到5w+,BOT活跃趋势如下:
sinkhole_1mon.png

BOT分组信息:

wordart.png

BOT感染地区分布:

rapperbot.geo.png

感染设备

根据XLAB全球鹰测绘系统提供的数据分析,Rapperbot恶意软件目前主要感染的设备类型集中在具有公网访问能力的物联网终端,尤其是网络摄像头、家用及企业级路由器等。这些设备通常存在默认弱口令或固件漏洞,容易成为攻击者的入侵目标。根据统计,其感染的设备中排名靠前的WEB界面标题(Web Title)如下:

WEB Title application
DVR Components Download DVR/NVR/Camera
Network Surveillance DVR/NVR/Camera
NETSurveillance WEB DVR/NVR/Camera
WEB SERVICE DVR/NVR/Camera
ASUS Login Router
AXIS DVR/NVR/Camera
RouterOS router configuration page Router

DDoS攻击目标

RapperBot的攻击目标遍布各个行业领域,包括公共管理、社会保障和社会组织、互联网平台、制造业、金融服务业等。从地域分布上看,中国地区的目标数量最多。也曾在热点时间攻击过其他重要平台。比如:春节期间攻击知名人工智能平台DeepSeek3月中旬攻击社交媒体平台Twitter

rapperbot.ccm.png

样本传播

根据我们的数据观察,RapperBot 主要通过 Telnet 弱口令以及利用已知漏洞进行传播。目前其主要利用的漏洞包括但不限于以下几种:

VULNERABILITY AFFECTED
TELNET_Weak_Password
KGUARD DVR TCP_MSGHEAD_CMD KGUARD DVR
CNVD-2021-79445 Ruijie NBR700
CVE-2021-46229 D-Link Di-7200G
CVE-2023-4473 Zyxel NAS326
Reolink BaiChuan RCE Neolink
CVE-2020-9054 ZyXEL NAS
Shenzhen TVT Shenzhen TVT DVR
CCTV-DV Multiple Vendors CCTV-DVR
CVE-2020-24581 D-link DSL-2888A
LILIN DVR LILIN DVR

样本分析

经过对该家族样本追踪,我们发现开发者每隔几个月会对样本进行更新并进入活跃状态,在长达1年多的时间里我们捕获了该家族的7个变种:

time sha1 ps decrypt method login length
2023-07-21 8a9a098dabcc09c8a770777f12c71017bb26940b listening tun0 mirai字符串解密,key固定(0xDEADBEEF) 36
2023-10-15 d4bca8193b808dcdbdb79367ac688f6f424da36f listening tun0 rapperbot自定义字符串解密 171
2023-12-27 a742f069f604aa302dbfe6ccf0bc481726e76fb6 listening tun0 rapperbot自定义字符串解密 114
2024-03-10 09dc5f47374410bb05cfd72bc1fa6523a35ec6dc listening tun0 mirai字符串解码,多个解密key 60
2024-06-14 bc21342317fca22076406873013959ed111cf8dc Firmware update in progress mirai字符串解码,多个解密key 90
2024-10-10 cc687e707919c4176ab03bdc76ab01bbaa7c0e22 Firmware update in progress mirai字符串解码,多个解密key 120
2025-03-30 4a0aa2b7f357164dbd49c0c6ab71a3c73e148aaa Firmware update in progress rapperbot自定义字符串解密 120

该家族不同变种的样本大同小异,修改内容集中在消息的数据结构、DNS-TXT记录的解析方法、字符串解码上;功能上以DDoS为主,从2024年10月开始添加了代理功能。

C2获取

与大多数botnet不同,rapperbot通过DNS-TXT记录中解析C2域名,目前我们发现了4种TXT记录格式:

time period TXT record format
2023.07 - 2024.04 IP,IP,IP
2024.06 - 2024.10 <IP><IP><IP>
2024.10 - 2025.03 IP|IP|IP|
2025.03 - now EncryptedString

在端口方面,早期的几个版本使用固定端口,如111110249999等;在最新样本中则从随机的35个端口中选择一个:

443,4443,993,995,25565,1935,3478,27015,7777,3724,5222,7000,5223,4444,3074,27014,27050,3544,6666,2222,22022,2022,19153,3389,37777,6036,34567,5000,10554,554,18004,9000,35000,10001,9001

加解密算法

字符串解密算法

RapperBot使用过三种加密算法,早期使用和Mirai相同的算法,后续开发出独特自定义解密算法和Mirai解密算法的加强版,并在多个版本中轮换使用:

  1. 改进Mirai源代码的字符串解密方法,为每个字符串添加不同的4字节解密密钥,并且继续延用Mirai的解密函数
    strinit.PNG

  2. 自定义的解密方法,key的长度不固定且进行了二次加密,再对data进行多字节异或
    rapperbot_old_strdecode.png

C2/DNS-TXT解密算法

从2025年3月开始,rapperbot使用自定义的加密算法加密TXT记录和C2域名:
通过解密字符串表,我们可以得到3个的字符串:

str desc
ipWPeY43MhfFBt8ZCSN2KTdD6nEkmGjwx7vJR5rogzbcqHsXUQuyVA9L 解密算法用到的table
WF6i6VEcfjnyqtGKxism65YwRE9VYzzzbtLgLD4tWEsnZLgbJfuE94qtvTqGgVG3ScFtsfcxqTNtYKRWQTqNBqp6VLMv2p 被加密的二级域名列表
WMKFVCnSHDrC89fvKgCShwmRjEx8 被加密的三级域名列表

顶级域名字符串没有写入字符串表,而是通过栈写入全局变量:
tlds_data.png
tlds_stack_asm.png

经过独特的算法解密后可以得到C2域名的各个部分,解密算法及解密结果如下:

def decodeTXT(data:str):
    key = "ipWPeY43MhfFBt8ZCSN2KTdD6nEkmGjwx7vJR5rogzbcqHsXUQuyVA9L"
    a = key.find(data[0])
    b = key.find(data[1])
    seed = 56*a+b
    magic = 1000000000 + 0x62B846D
    S = bytearray(range(56))
    T = bytearray(56)
    tseed = seed
    for i in range(55, 0, -1):
        tseed = (magic * tseed + 0x3039)&0xffffffff
        index = tseed%(i+1)
        S[i], S[index] = S[index], S[i]
    for i in range(56):
        T[S[i]] = i
    res = bytearray()
    for i in data[2:]:
        index = (T[key.find(i)] - (len(data)-2) - seed)%56
        res.append(index)
    length = ceil(len(res) * log2(56) / 8)
    res3 = bytearray(length)  
    for t1 in res:
        carry = t1
        for i in reversed(range(len(res3))):
            temp = res3[i] * 56 + carry
            res3[i] = temp & 0xFF  
            carry = temp >> 8  

    while len(res3) > 0 and res3[0] == 0:
        del res3[0]
    return res3 if len(res3) > 0 else bytearray(b'\x00')
三级域名:KDXA|EICp|kHbW|YFrV
二级域名:ByxWGIMPbwiSkniw|gwYhHCOrybwjWuzh|GaihWstPZUoMtfnU|zkUAFIMFDwVETXJQ
一级域名:info|live

使用"|"分割域名的各个部分,最终会生成32个C2域名,随机选择一个进行DNS-TXT解析,TXT记录字符串使用相同的解密算法解密:

TXT记录:i7do6u4FtLeeMjmnwWczxKJmtoRRvgCCqiinWW9EUtVpLx38db5xrCfr8mHmsxmutZ4C8fXL2jhGVzfdUQmvvnzZW7pCJmUpi


解密后:5.230.39.10|5.230.68.153|82.24.200.59|82.24.200.68|62.146.235.220|5.230.227.190|5.230.227.191|5.230.227.237|5.230.227.238

网络协议

Rapperbot的网络协议相对简单,不涉及密钥交换和复杂加密,payload只进行了单字节异或(key不固定)。
在多个变种只对上线信息和消息编码进行修改。

上线信息

RapperBot在不同版本的上线包格式不同,有时会增加字段,有时会减少字段,但都包含hostnamesourcestunIPlocalIP,并用非0随机数填充未使用空间,在最新版本中添加了网络信息字段,总大小为120,以下是相关结构描述:

login.png

消息编码

在网络通信方面,不同版本的消息格式存在微小差异,但通常都由3部分组成:Header、Payload、RandData。以最新样本为例,Header添加了校验码字段,RandData则由字符串表q1x4fyntb3i0umw2gzcr9a5jkv7o8pl6eohds随机生成:
packet.png

消息结构体:

struct rapperbot_packet{
	int32 total_size;
	int32 payload_size;
	int16 checkcode;
	int8 xorkey;
	int8 packet_type;
	int8 payload[payload_size];
	int8 randdata[total_size-payload_size];
};

已知的消息类型及作用:

PacketType Desc
1 Login
2 Confirm
3 Pong
4 HeartBeat
5 Start Attack
6 Stop Attack
9 Proxy Enable
10 Proxy Disable
11 Proxy Create
12 Proxy Start
13 Proxy Close

Contact Us

Readers are always welcomed to reach us on twitter.

IOC

XMR wallet address:
48SFiWgbAaFf75KsRSEEr4iDcxrevFzVmhgfb6Qudss52JK8cCR8bwmUxNBPN2VmqDTucJL3eabiZc5XRYVGkbh6BH58Ytk

C2 Domain:
iranistrash.libre
churchofhollywood.libre
iguessimhere.libre

KDXA.ByxWGIMPbwiSkniw.info
KDXA.ByxWGIMPbwiSkniw.live
KDXA.gwYhHCOrybwjWuzh.info
KDXA.gwYhHCOrybwjWuzh.live
KDXA.GaihWstPZUoMtfnU.info
KDXA.GaihWstPZUoMtfnU.live
KDXA.zkUAFIMFDwVETXJQ.info
KDXA.zkUAFIMFDwVETXJQ.live
EICp.ByxWGIMPbwiSkniw.info
EICp.ByxWGIMPbwiSkniw.live
EICp.gwYhHCOrybwjWuzh.info
EICp.gwYhHCOrybwjWuzh.live
EICp.GaihWstPZUoMtfnU.info
EICp.GaihWstPZUoMtfnU.live
EICp.zkUAFIMFDwVETXJQ.info
EICp.zkUAFIMFDwVETXJQ.live
kHbW.ByxWGIMPbwiSkniw.info
kHbW.ByxWGIMPbwiSkniw.live
kHbW.gwYhHCOrybwjWuzh.info
kHbW.gwYhHCOrybwjWuzh.live
kHbW.GaihWstPZUoMtfnU.info
kHbW.GaihWstPZUoMtfnU.live
kHbW.zkUAFIMFDwVETXJQ.info
kHbW.zkUAFIMFDwVETXJQ.live
YFrV.ByxWGIMPbwiSkniw.info
YFrV.ByxWGIMPbwiSkniw.live
YFrV.gwYhHCOrybwjWuzh.info
YFrV.gwYhHCOrybwjWuzh.live
YFrV.GaihWstPZUoMtfnU.info
YFrV.GaihWstPZUoMtfnU.live
YFrV.zkUAFIMFDwVETXJQ.info
YFrV.zkUAFIMFDwVETXJQ.live



Download Domain:
pool.rentcheapcars.sbs
o0s.cc
4v.wtf
zyb.ac

Hardcode backup C2:
86.104.72.130	Canada|Ontario|Toronto	AS208913|Mouk, LLC
194.156.98.15	China|Hongkong|Hongkong	AS44477|STARK INDUSTRIES SOLUTIONS LTD
94.131.118.154	France|Ile-de-France|Paris	AS44477|STARK INDUSTRIES SOLUTIONS LTD
5.231.3.32	Germany|Hessen|Frankfurt am Main	AS12586|GHOSTnet GmbH
5.231.4.35	Germany|Hessen|Frankfurt am Main	AS12586|GHOSTnet GmbH
185.248.144.209	Italy|Lazio|Rome	AS44477|STARK INDUSTRIES SOLUTIONS LTD
45.150.65.202	United States|New Jersey|Secaucus	AS44477|STARK INDUSTRIES SOLUTIONS LTD