Mirai僵尸网络变种“Aquabot“分析
时间 : 2023年12月25日 来源: 安天CERT
1.概述
近期,安天CERT捕获到一个Mirai僵尸网络新变种,针对MIPS、ARM和X86等多种架构,利用弱口令感染目标,并等待控制指令进行DDoS攻击。由于该僵尸网络文件名以“Aqua*”命名,我们将其命名为Aquabot。
经分析,Aquabot僵尸网络至少迭代过2个版本。其中v1以Mirai开源框架为基础开发,主要功能为进程管理、弱口令扫描和DDoS攻击。2023年11月捕获的最新v2样本在v1基础上针对进程管理、隐匿和传播等功能进行迭代,同时增加了检测设备进程启动参数,以防止设备重启、关机和断电从而延长其生存时间的功能。
经验证,安天探海威胁检测系统(简称PTD)能够实现对该僵尸网络C2通信的精准检测。
2.安全建议
随着安全威胁泛化,物联网僵尸网络得到了快速发展,Aquabot僵尸网络基于Mirai开源框架、模块复用和定制化开发完成了多次迭代。由于IoT设备型号各异、存储空间局限、自身安全防护能力有限,难以“外挂”第三方安全产品,并且需要保持长期联网在线运行,对此,安天建议:
1. 加强关口前移,融合原生安全能力
建议IoT设备生产方在规划、研发、生产制造阶段融入安全基因,预先嵌入安天智能安全内核和威胁检测引擎,面向能源、交通、制造等智能场景,形成出厂即具备原生威胁检测和高水平的初始安全基线,持续保障用户的业务安全、稳定运行,进一步提升品牌竞争力和影响力。
2. 强化网络威胁监测与响应
建议IT运营者部署网络威胁检测与响应系统(NTA或NDR)可以结合Aquabot僵尸网络相关信标进行告警。安天探海威胁检测系统集成了恶意代码检测引擎、网络行为检测引擎、威胁情报检测引擎、威胁检测模型、自定义场景检测引擎等,可有效检测网络扫描探测、远程漏洞利用、攻击载荷投放、僵尸网络活动、病毒扩散传播、木马远程控制、web 攻击等行为。
图2-1使用威胁情报库检出威胁行为
图2-2 使用网络行为特征检出威胁行为
图2-3 使用模型检出僵尸网络漏洞扫描行为、弱密码破解用户口令行为
3.3. 加强IoT设备访问控制和运维
建议IT运营者保持系统和固件均升级为最新版本、优化默认安全配置策略、设置合理的访问控制策略、完善远程运维连接的管控和审计等。
建议IT运营者修改设备出厂默认口令并设置安全口令,建议使用16位或更长的密码,包括大小写字母、数字和符号在内的组合,同时保证不同型号的设备使用不同的安全口令,并定期更换口令,避免长时间使用同一口令。
4. 遭受攻击及时应急处置
若出现网络异常堵塞或其它情况,联系安天应急响应团队(CERT@antiy.cn)处置威胁,或拨打安天7*24小时服务热线400-840-9234寻求帮助。若遭受攻击,建议及时隔离被攻击IoT设备或主机,并保护现场等待安全工程师对IoT设备和计算机进行排查。
3.样本分析
本文选取Aquabot X86架构的样本为主要分析对象。Aquabot-v1主体上沿用了Mirai僵尸网络结构框架,主要功能分为初始化、进程管理、弱口令扫描和命令控制四部分。
表3-1 Aquabot-v1样本标签
病毒名称 |
Trojan/Linux.Mirai.asx |
原始文件名 |
x86 |
MD5 |
14C46C7F8F8185793BEF4F919C24DC05 |
文件大小 |
41.55
KB (42544 bytes) |
文件格式 |
BinExecute/Linux.ELF |
VT首次上传时间 |
2023-09-16
18:32 |
VT检测结果 |
42/63 |
3.1 初始化
样本运行后修改进程名为“configd”,并在控制台上输出内容“silly man infected”。
图3-1 修改进程名并在控制台输出内容
通过检测watchdog传统路径,阻止其对设备进行重启和关机等操作。
图3-2 检测watchdog路径
采用异或算法解密运行所需字符串,算法和密钥数组如下图所示。
图3-3 加密算法及密钥
3.2 进程管理
通过复用Mirai源码中“killer_kill_by_port”函数,实现对受感染设备的进程管理。扫描“/proc/net/tcp”文件过滤特定端口,关闭对应进程,并通过“bind”占用端口。过滤端口如下。
表3-2 过滤端口列表
序号 |
过滤端口号 |
端口用途 |
1 |
23 |
23端口是Telnet的端口。Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。 |
2 |
80 |
80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,主要用于WWW(World Wide Web)万维网传输信息的协议。 |
3 |
81 |
Web服务器的替代端口。 |
4 |
88 |
88端口是针对Kerberos身份验证系统而开放的。Kerberos是一种安全的身份验证系统,可确保计算机系统中的用户和应用程序可以安全访问网络上的资源。 |
5 |
10023 |
无默认服务。 |
6 |
39148 |
无默认服务。 |
7 |
60568 |
无默认服务。 |
8 |
39200 |
无默认服务。 |
样本利用“readdir”函数遍历并对比“/proc”下进程名,通过“/proc/pid/cmdline”获取进程文件描述符并逐字节比对,当进程名满足“由数字、大小写字母组成,长度≥6,数字的数量≥2”时对比成功,结束相关进程。在Mirai源码中此功能是用于结束其他僵尸网络进程。
图3-4 查杀进程
3.3 弱口令扫描
样本通过生成随机的TCP源端口、配置IPv4头和配置TCP头,初始化弱口令扫描模块。
图3-5 配置网络信息
而后通过如下算法生成随机IP地址,随机选择弱口令字典中的用户名密码组合,对该IP地址进行Telnet登录测试。
图3-6 生成随机IP并尝试登陆
弱口令字典数量为46组,使用异或0x22加密存储,解密后的弱口令字典如下图所示。
图3-7 弱口令字典
当登录成功时,将IP地址、用户名和密码等信息上报C2服务器。
图3-8 上报登陆成功的扫描结果
样本利用“readdir”函数遍历并对比“/proc”下进程名,通过“/proc/pid/cmdline”获取进程文件描述符并逐字节比对,当进程名满足“由数字、大小写字母组成,长度≥6,数字的数量≥2”时对比成功,结束相关进程。在Mirai源码中此功能是用于结束其他僵尸网络进程。
若攻击者下发了DDoS攻击指令,则会对指定目标发起DDoS攻击。
图3-9 DDOS攻击
样本共集成udp、tcp、gre和app等类型的DDoS攻击,部分类型功能情况如下。
表 3-3 DDOS攻击类型
序号 |
攻击方法名称 |
功能 |
1 |
udp_generic |
向目标系统发送大量的UDP数据包来超载其网络资源。 |
2 |
udp_vse |
查询洪水攻击,通过发送大量查询请求来超载服务器资源。 |
3 |
tcp_syn |
半开连接攻击,耗尽服务器资源。 |
4 |
tcp_ack |
在tcp连接建立之后,发送带有ack标志位的数据包。 |
5 |
tcp_stomp |
ack flood 攻击变体。 |
6 |
gre_ip |
修改的greeth flood。 |
7 |
gre_eth |
基于GRE协议的洪水攻击。 |
8 |
udp_plain |
udp flood攻击变体。 |
9 |
app_http |
向目标服务器发送大量的HTTP请求,消耗服务器资源。 |
4.样本迭代对比
经分析,Aquabot僵尸网络至少迭代过2个版本。v2在v1基础上改动,2023年11月份捕获的最新v2样本主要针对传播、隐匿、持久化和进程管理等功能进行迭代。
表 4-1 Aquabot-v2样本标签
病毒名称 |
Trojan/Linux.Mirai.asx |
原始文件名 |
Aqua.x86 |
MD5 |
8aea7da471d61d2aaa8fb81172f85fdb |
文件大小 |
61.30 KB (62772 bytes) |
文件格式 |
BinExecute/Linux.ELF |
VT首次上传时间 |
2023-11-08 06:57 |
VT检测结果 |
38/63 |
v2版本使用硬编码域名作为上线地址,根据域名创建时间推测,最初迭代时间为2023年9月25日。
图4-1 v2迭代时间
迭代内容主要为:
(1) 传播能力:v2版本移除弱口令扫描功能。
(2) 隐匿能力:v2版本会修改进程名为“httpd”,增加删除“/proc/self”文件实现隐匿进程的功能。
图4-2 进程隐匿对比
(3) 持久化能力:v2版本移除了安全狗重启检测功能;增加检测进程启动参数,阻止对设备进行重启、关机和断电等操作。
图4-3 持久化实现方式对比
(4) 进程管理能力:v2版本移除通过“/proc/net/tcp”过滤特定端口关闭进程功能;增加通过“/proc/%d/maps”“/proc/%d/exe”“/proc/%d/stat”“/proc/%d/cmdline”等方式过滤并关闭“/tmp”“/var/run”“/mnt”“/root”目录下,进程符号链接中不包含“sh”“ps”的进程。
图4-4 进程管理对比
Aquabot僵尸网络迭代对比如下。
表 4-2 Aquabot僵尸网络迭代对比
|
Aquabot-v1 X86 |
Aquabot-v2 X86 |
进程隐匿 |
修改进程名为“configd”。 |
修改进程名为“httpd”、删除“self”文件。 |
控制台输出 |
“silly man infected” |
“about to cum inside a femboy btw” |
反调试 |
反GDB调试。 |
反GDB调试。 |
解密算法 |
^=(异或)。 |
^=(异或)。 |
密钥 |
|
|
上线 |
复用mirai上线代码,使用IP作为上线地址。 |
复用mirai上线代码,优先使用域名作为上线地址。 |
持久化 |
检测watchdog传统路径,阻止其对设备进行重启和关机等操作。 |
检测进程启动参数,阻止其对设备进行重启、关机和断电等操作。 |
命令与控制 |
共集成udp、tcp、gre和app等类型的DDoS攻击。 |
共集成udp、tcp、gre和app等类型的DDoS攻击。 |
进程管理 |
通过“/proc/net/tcp”过滤39148、10023、23、81、80、88、60568、39200端口的方式关闭进程并通过“bind”占用端口。 通过“/proc/pid/cmdline”获取进程文件描述符并逐字节比对,当满足“由数字和大小写字母组成、长度≥6、数字的数量≥2”时,关闭该进程。在Mirai源码中此功能是用于结束其他僵尸网络进程。 |
通过“/proc/%d/maps”“/proc/%d/exe”“/proc/%d/stat”“/proc/%d/cmdline”等方式过滤并关闭“/tmp”“/var/run”“/mnt”“/root”目录下,进程符号链接中不包含“sh”“ps”的进程。 |
弱口令扫描 |
配置网络信息使用弱口令字典扫描随机IP地址(弱口令字典使用异或0x22加密存储),当弱口令登陆成功则将IP地址、用户名和密码等信息上报C2服务器。 |
移除该模块。 |
5.样本对应的ATT&CK映射图谱
Aquabot僵尸网络X86架构样本行为技术点的ATT&CK框架图谱如下所示:
图5-1 技术特点对应ATT&CK的映射
Aquabot僵尸网络X86架构样本涉及ATT&CK框架中9个阶段的11个技术点,具体ATT&CK技术行为描述表:
表 5-1 ATT&CK技术行为描述表
ATT&CK阶段/类别 |
具体行为 |
注释 |
侦察 |
主动扫描 |
生成随机IP地址,并对该IP地址实施扫描。 |
资源开发 |
获取基础设施 |
使用弱口令漏洞获取基础设施,构建僵尸网络。 |
初始访问 |
利用有效账户 |
使用弱口令字典对随机IP地址的设备尝试登陆,成功则上报IP地址、用户名和密码等信息,用于投递后续载荷。 |
持久化 |
电源设置 |
检测安全狗或进程启动参数,阻止其对设备进行重启、关机和断电等操作。 |
防御规避 |
混淆文件或信息 |
采用异或算法解密运行所需字符串和弱口令字典。 |
隐藏行为 |
修改进程名,删除“self”文件隐匿进程。 |
|
凭证访问 |
暴力破解 |
使用弱口令字典尝试登陆。 |
发现 |
发现进程 |
过滤并关闭特定端口的进程、过滤并关闭特定目录下特定进程。 |
发现远程系统 |
以发现远程基础设施为目标,对随机IP地址扫描。 |
|
命令与控制 |
使用应用层协议 |
使用web协议传输远控指令。 |
影响 |
网络侧拒绝服务 |
发起udp_generic、tcp_syn和udp_vse等DDoS攻击。 |
6.IoCs
IoCs |
5E4539E71DB8A8D5AAB7B417B12C3A11 |
EDA6C9945F449A1FFE07A09096FAC532 |
DBB63B126B96D69B4E974B0C4D8ABF19 |
C4973FD941C001EFCE069EA8952A9C42 |
A4F59DA4725333E671B7257F8C7D5146 |
A06B5BE74AF6D4A8BB534DCE0E4D8960 |
8FFD26C19F4890863D0F969D04F38F5B |
8AEA7DA471D61D2AAA8FB81172F85FDB |
6FCF2A40B1463B118E38F0802B54E003 |
6C9B401F6FB9D1D3BD4DCFD93B45F0F8 |
61DE0F87AEEE052D05C74024C974F393 |
5F47FB7E60D05ED2A90319F21742E4E4 |
5F1C6B75883C1315FD8ADF0A1B90F1D8 |
412CA37E49E4477F45BFB5E45268B862 |
1C2940D4F116A329147FC80C590B8817 |
14C46C7F8F8185793BEF4F919C24DC05 |
Boats.dogmuncher.xyz |
89.190.156.145 |