概述
2022 年 11 月初,奇安信威胁情报中心威胁监控系统监测到一起未知家族恶意样本传播事件。经过我们分析,捕获的恶意样本借鉴了 Mirai 和 Gafgyt 家族的恶意代码,支持多种自己命名的 DDoS 攻击方式,可以通过 Telnet 服务弱口令暴破传播,同时还集成了与 Omni 家族相似的多个漏洞 Exp ,目前正在网上快速传播。
根据攻击者创建的特殊文件夹名称,我们把这个家族命名为RobinBot。
通过对 RobinBot 历史样本的关联分析,我们梳理了它的发展过程,并且发现了其还有一个功能相似的跨平台jar 版本同家族样本。业界公开曝光的 Java 编写的跨平台 DDoS 木马并不多,这次我们对 RobinBot 一探究竟。
我们对 RobinBot 初步的监控结果显示,其作者尝试过下发指令攻击自己控制的 IP 资产。综合分析可以看出 RobinBot 作者具有一定的能力和想法,并在积极尝试中。
C 版样本关键行为分析
RobinBot 的 C 语言版本样本借鉴了 Mirai 和 Gafgyt 家族的恶意代码,并自己命名了多种 DDoS 攻击方式。目前 RobinBot 的样本还在频繁地更新迭代,本文以下面样本为例进行分析:
文件名 | 文件类型 | 文件大小 | 文件MD5 |
x86 | ELF 64-bit LSB executable, x86-64 | 75128552 bytes | 500009D8F68330A8F82B59884A9AFE47 |
对抗分析
RobinBot 具有常规的对抗分析措施,借鉴自 Mirai 家族。
GDB 反调试:
进程随机重命名:
关闭 Watchdog,防止设备重启:
借鉴自 Mirai 的 table 机制
RobinBot 的代码中还借鉴了 Mirai 的 Table 机制,试图隐藏自身携带的关键信息:
解码用到的 Key:
经过我们分析,这个 Table 在代码中还没启用,不排除将来作者更新样本,把这个机制真正用起来。
Kill 指定端口的进程
RobinBot 还会杀掉 Telnet 23 端口、SSH 22 端口和 HTTP 80 端口对应的进程:
传播方式
RobinBot 支持沿袭自 Mirai 的弱口令暴破方式传播,同时还集成了类似 Omni 家族的 12 个漏洞 Exp,大大提升传播能力。
RobinBot 的 Telnet 弱口令暴破机制,复用了 Mirai 的口令表加密机制:
暴破结果的 Reporter 服务器地址与 C&C 相同,但端口改成了 1337:
RobinBot 集成了 12 个经典的 IoT 设备漏洞 Exp 来增强自身的传播能力:
漏洞说明如下:
漏洞标签 | 漏洞 ID | QVD ID | 漏洞说明 | 影响设备 |
GPON8080 | CVE-2018-10561 | QVD-2018-4807 | Dasan GPON 路由器认证绕过漏洞 | Dasan GPON 路由器 |
GPON80 | CVE-2018-10562 | QVD-2018-5435 | Dasan GPON 路由器认命令注入漏洞 | Dasan GPON 路由器 |
REALTEK | CVE-2014-8361 | QVD-2014-0175 | Realtek Miniigd UPnP SOAP 远程命令执行漏洞 | 多种使用 Realtek SDK 并且启用 miniigd 守护进程的网络设备 |
NETGEAR | EDB-ID-43055 | QVD-2013-7961 | Netgear DGN1000 1.1.00.48 - "Setup.cgi" 远程命令执行漏洞 | Netgear DGN1000 路由器 |
HUAWEI | CVE-2017-17215 | QVD-2017-0070 | Huawei HG532 路由器任意代码执行漏洞 | Huawei HG532 路由器 |
TR064 | CVE-2016-10372 | QVD-2020-74040 | Eir D1000 无线路由器 WAN 侧远程命令注入漏洞 | Eir D1000 无线路由器 |
HNAP | CVE-2015-2051 | QVD-2015-0260 | D-Link 设备 HNAP SOAPAction-Header 远程命令执行漏洞 | D-Link 设备 |
CROSSWEB | EDB-ID-39596 | — | 多种 CCTV/DVR 设备的命令执行漏洞 | 超过 70 家供应商的 CCTV, DVR 设备 |
JAWS | CVE-2016-20016 | QVD-2022-27838 | MVPower DVR TV-7104HE 1.8.4 115215B9 Shell 命令执行漏洞 | MVPower DVR 设备 |
DLINK | EDB-ID-28333 | QVD-2013-8037 | D-Link 设备 UPnP SOAP TelnetD 模块远程命令执行漏洞 | D-Link 设备 |
R7000 | CVE-2016-6277 | QVD-2016-0403 | Netgear R7000/R6400 "cgi-bin" 模块远程命令执行漏洞 | Netgear R7000/R6400 路由器 |
VARCON | CNVD-2017-29245 | QVD-2022-34316 | Vacron NVR 设备远程命令执行漏洞 | Vacron NVR 设备 |
C&C 通信
RobinBot 当前样本的 C&C 服务器地址89.203.251.188:7267,上线包为 "12354544\\n\\n":
指令解析
RobinBot 的指令机制与 Gafgyt 家族类似,属于明文形式的指令。指令共有三大类:执行恶意命令、发起 DDoS 攻击、辅助功能指令(更新、清理)。
当指令字符串以 "console" 开头时,代表执行恶意命令,"at" 开头代表发起 DDoS 攻击:
对于目前支持的 6 种 DDoS 攻击指令,RobinBot 作者有自己的命名方式:
支持的 DDoS 方法包括:固定及随机 Payload 的 TCP 协议攻击、固定 Payload 的 UDP 协议攻击以及专门针对 Minecraft 服务器的 DDoS 攻击。上述大部分攻击方式,疑似专为 MineCraft 平台定制,即攻击者运营该 DDoS 僵尸网络,可能专门为了攻击游戏服务器。
值得一提的是,RobinBot 支持的 T-TCP 和 U-UDP DDoS 攻击方式,单次攻击的 Payload 都是 8000 Bytes 的重复数据,形式如下:
C 版样本演进
经过我们对 RobinBot 历史活动的回溯分析,大概理清了 RobinBot C 语言版样本的发展历程。
我们最早找到了 RobinBot 在2022年5月份的样本,把它定为最初版本,与本次发现的最新版本大致框架一致,此时的样本中还未添加有 Mirai 的代码,所含的 Telnet 暴破功能也与 Mirai 不同。支持的功能包括远程命令执行、DDoS 攻击、Telnet 弱口令暴破。
上线包如下:
DDoS 方法也仅有 TCP 和 UDP 两种:
在2022年6 月份,作者更新了第二版的样本,与初始版本相比加入了 Mirai 的 Table 机制以及其特有的弱口令暴破函数。但是不包含漏洞利用的部分,并且上线包略微不同:
作者在 2022年7 月份更新了第三版,加入了漏洞利用,此时仅集成两个漏洞的 Exp,分别是针对Dasan GPON 设备的CVE-2018-10562,和针对ZyXEL 设备的CVE-2017-18368:
并且,第三版的上线包也有所变化:
在2022年11 月份我们捕获的最新版样本中,作者去除了 ZyXEL RCE 的利用,添加了 Omni 家族曾经整合利用过的 12 个漏洞 Exp 进行传播,同时删除了前两个版本中包含的上报扫描结果 IP 更新的功能。
综合来看,RobinBot C 语言版样本的更新流程如下图所示:
Java 版 DDoS 木马
在我们对攻击者的资产进行梳理过程中,通过一系列关联分析,我们发现 RobinBot 的作者所属某一资产下发的一个独特的 PE 样本。该样本会调用 curl 命令下载并执行一个 Jar 文件:
RobinBot 的名字,正是我们参考上图 Jar 文件落盘路径中的 "Robin" 而命名。经过对上述 Jar 文件的深入分析,确定该样本是上述 C 语言版本的 Java 版本,功能近似,但具备了跨平台运行的能力。
我们以下述样本为例进行分析(下文称RobinBot-Jar):
文件名 | 文件大小 | 文件MD5 |
asdasasjdhaisuolhdasiuhdai.jar | 4435413 bytes | 27F7000F552B88FCF71E423EC59524B5 |
区分平台运行
该样本可以在 Linux 和 Windows 平台上运行,针对 Windows 平台会有额外的操作:
额外的 Inject 函数功能是把自身移动到 Startup 文件夹以 Cmd 命令的方式进行自启动,文件名为 "0ff1995" + 随机字符串,该操作同时也用来区分样本是否是首次运行:
下发远程命令时样本也会区分平台进行命令执行:
设置系统 HTTP User-Agent
RobinBot-Jar 还会设置系统的 HTTP User-Agent 为 "Chrome":
C&C 通信
创建与 C&C 通信的线程:
上线包如下,其中包含样本版本、受害机器系统 OS 及用户名:
指令解析
RobinBot-Jar 的指令设计,与 C 语言版本的木马几乎一致,也是类似 Gafgyt 家族的明文协议,并且 "console" 开头的指令代表执行命令,"at" 开头代表执行DDoS指令:
不同的地方在于作者自定义的 DDoS 方法名:
JAVA版样本支持的DDos方法除了与C版相同的以外,还包括:HTTP Flood、OVH Flood、针对 Roblox 视频游戏平台的 DDoS 攻击、基于 Bootstrap 的 DDoS 攻击。
代理设置
RobinBot-Jar 发起 DDoS 攻击时,会选用 Socks 代理。对于代理的设置,可以是过指令下发指定的代理服务器:
也可以选择公开的第三方代理:
其他指令
此外还包含其他命令如下:
指令 | 功能 |
kill | 退出运行 |
update | 样本版本更新 |
clearyoubro | 清理病毒文件 |
如果收到退出指令,RobinBot-Jar 会调用 System.exit() 退出运行:
收到更新的指令后,RobinBot-Jar 会通过硬编码的 URL 进行更新:
收到清理的指令后,针对 Windows 平台会进行专门的清理工作:
JAVA 版样本演进
经过回溯分析我们发现,JAVA 版本要比 C 版更早进行传播,最早于去年年底开始活动,期间多次伪装成 Minecraft 相关工具及插件,包括 KauriVPN、PlaceholderAPI、Vulcan 等等,中途还曾将 C2 地址修改为 localhost 进行测试。
指令监控
在对 RobinBot 分析期间,我们对它进行了初步监控,并观察到它下发的若干攻击指令,发现该僵尸网络处于快速扩张 + 测试阶段:
分析数据发现作者对其自身IP进行过DDos攻击,说明此僵尸网络还在测试阶段并未正式投入使用。
其余攻击目标中有多个游戏相关联的资产,其中一个攻击目标*.jonesdev.xyz,该资产为"Sonar Anti Bot"所有,用于 Minecraft 服务器的实验性反机器人插件:
IoCs
MD5:
AA4BCF5BC044BAB50D347961BB2A630C
F883F7F9FB16E9E547ABF7FA10D18256
9138DF8AF500832C9814D052DCD70585
500009D8F68330A8F82B59884A9AFE47
8D815662DC16F11AEE1776AAA0157800
27F7000F552B88FCF71E423EC59524B5
2675386F03B1835AF146493CB328C3EC
941CEE0D62BF9E4BFCE7DA0DAFD75CED
BAA15F059F950C400FE32539E56128C4
D65BD6175517E0BCB6A6FC077CDCB655
C2:
89.203.251.188:7267
89.203.251.188:1337
193.23.161.194:3214
89.203.251.217:7267
176.97.210.195:7267
声明:本文来自奇安信威胁情报中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。