一、背景
近期,360安全大脑监测发现一批僵尸网络样本,在Mirai泄露源码的基础上融合XXTEA算法进行加密,针对ARM、MIPS、x86等多种架构的IoT/Linux设备。
第一批捕获到的样本为CatDDoS团伙[1]所运营的Mirai僵尸网络变种。以样本adda181984cda825dbfa1cb071a066f5为例,其源码基础结构如下:
与泄露的Mirai源码相比,Mirai.CatDDoS中不包含用于进行Telnet爆破的scanner.c模块,同时将用于字符串与0xdeadbeef异或解密的table.c模块替换为了xxtea.c实现。16字节的XXTEA算法key为:
交叉引用共3处。第一处为解密样本运行后向控制台输出的字符串,XXTEA解密后为“Hello, world!”:
其余两处则用于解密样本中包含的C2地址,分别为:retardedclassmate.dyn和servernoworky.geek。这两个C2地址曾出现于描述CatDDoS团伙近期攻击活动的报告[2]中。
由于C2为OpenNIC域名,无法经由公共DNS服务器进行解析,样本中硬编码了用于C2解析的OpenNIC DNS服务器:
C2的端口则在25596~25616之间随机选择。通信机制方面,Mirai.CatDDoS基本沿用了Mirai的原始设计,只是将Mirai上线时的固定4字节\x00\x00\x00\x01修改为了固定的8字节:
捕获到的实际流量如下:
在ATTACK_VECTOR方面,Mirai.CatDDoS实现了比Mirai更为丰富的DDoS攻击类型,对比如下:
Mirai
Mirai.CatDDoS
序号
攻击方法
序号
攻击方法
0
attack_udp_generic
0
attack_udp_plain
1
attack_udp_vse
1
attack_tcp_syn
2
attack_udp_dns
2
attack_tcp_stomp
3
attack_tcp_syn
3
attack_tcp_ack
4
attack_tcp_ack
4
attack_tcp_tcp
5
attack_tcp_stomp
5
attack_tcp_bypass
6
attack_gre_ip
6
attack_tcp_socket
7
attack_gre_eth
7
attack_udp_pps
8
attack_app_proxy
8
attack_tcp_ovh
9
attack_udp_plain
9
attack_gre_ip
10
attack_app_http
10
attack_udp_ovhhex
11
attack_udp_openvpn
12
attack_method_udprape
13
attack_udp_r6
14
attack_tcp_ovhtest
根据相关特征,我们又关联到了一批相似的同类样本,在代码功能、结构设计上更为简洁、更加类似原始Mirai,推测可能为更早期的bot版本。从C2的命名方式上来看,符合了CatDDoS团伙的一贯作风——即对“猫”的情有独钟。新旧版本之间的一些异同点对比如下:
旧版本
新版本
解密算法
^(异或)
XXTEA
密钥
0xDEADBEEF
78 56 34 12 21 43 65 87
68 24 57 13 98 BA DC FE
C2****地址
catsarecool.gopher
ilikecats.parody
ihateyou.indy
catsliketo.pirate
kittycattos.dyn
retardedclassmate.dyn
servernoworky.geek
端口
9932
25596~25616随机选择
bot****上线
00 00 00 01
31 73 13 93 04 83 32 04
DDoS****指令
集成tcp、udp等共15种攻击方法
Mirai.CatDDoS近期的DDoS攻击趋势如下所示:
Mirai.Octopus是另一批使用了XXTEA加密算法的Mirai变种僵尸网络,Octopus源自于攻击者留下的特殊UA特征。
Mirai.Octopus沿用了Mirai源码中的诸多设计,例如绑定本地端口实现单一实例运行、进程名随机化、阻止watchdog重启设备、report服务器接收爆破结果等等。同时二次开发了不少新的恶意功能,包括:
Nday 漏洞传播
持久化机制
使用异或 + XXTEA加密算法
除了Mirai中原有的23端口Telnet弱口令爆破机制,Mirai.Octopus还新增了一批N day漏洞利用exploit进行传播,分别是:
CVE-2018-10561, CVE-2018-10562
CVE-2014-8361
CNNVD-201306-024
CVE-2017-17215
Eir D1000 远程命令执行漏洞
CVE-2015-2051
CCTV/DVR “language/Swedish” 远程命令执行漏洞
CVE-2016-20016
CVE-2013-7471
CVE-2016-6277
Mirai.Octopus中采用了以下几种不同的方式来实现持久化:
1. 创建恶意systemd服务:/etc/systemd/system/nginnx.service和/usr/lib/systemd/system/nginnx.service
2. 在/etc/rc.d/rc.local文件中启动恶意脚本:/etc/38241
3. 添加crontab定时任务
Mirai.Octopus中除了包含Mirai原有的异或密钥table_key外,主要使用XXTEA算法对部分敏感字符串进行了加密,XXTEA key为硬编码的字符串:
解密出的字符串中包含了C2地址:octopus1337.geek和octopus-xeonk.pirate,以及当前版本号:v1.0.0。
Mirai.Octopus在指令结构方面大体上与Mirai相似,C2地址的端口为65535。支持的攻击向量与Mirai对比如下:
Mirai
Mirai.Octopus
序号
攻击方法
序号
攻击方法
0
attack_udp_generic
0
attack_udp_generic
1
attack_udp_vse
1
attack_tcp_syn
2
attack_udp_dns
2
attack_tcp_ack
3
attack_tcp_syn
3
attack_udp_plain
4
attack_tcp_ack
4
attack_udp_vse
5
attack_tcp_stomp
5
attack_tcp_bypass
6
attack_gre_ip
6
attack_udp_custom
7
attack_gre_eth
7
attack_udp_bypass
8
attack_app_proxy
8
attack_tcp_legit
9
attack_udp_plain
9
attack_std
10
attack_app_http
10
attack_method_tcpstomp
11
attack_tcp_sack2
12
attack_tcp_wra
13
attack_tcp_socket
14
attack_method_greip
15
attack_method_greeth
16
attack_icmpecho
17
attack_method_pps
18
attack_method_nudp
19
attack_udp_openvpn
20
attack_udphex
附录 IOC
MD5:
adda181984cda825dbfa1cb071a066f5
c1ca3665f762e11a727ad8899b628fd8
9f72a19d57ff74b9ed98639ff10ba4fa
ec744ef35a1650b27a3c314fe4b95412
5cf5e2b114b7253de95483615ac840d8
1074c5e50a96b50fd60ec36053981b7b
1ad8e1b5927c4166e815d3c0eafabee7
1fab9849b2fe8327382a1591d4e7cb0d
844d7d1e8e6fc47b989f5986769bb3f0
f0022798b0fec29fa0153d9ca61e8bc3
25cf45b475f738c97530512b9c94f52e
d31c417346d0012c234fde8f2be517e8
C2:
retardedclassmate.dyn
servernoworky.geek
catsarecool.gopher
ilikecats.parody
ihateyou.indy
catsliketo.pirate
kittycattos.dyn
MD5:
c17c9689c528e0000c13da92d83acab4
cda4e1668750ff2c682b8af5796153bf
C2:
octopus1337.geek
octopus-xeonk.pirate
Report server:
107.182.129.217
Download server:
85.217.144.71
参考