Mirai僵尸网络变种“Aquabot“分析
近期,安天CERT捕获到一个Mirai僵尸网络新变种,针对MIPS、ARM和X86等多种架构,利用弱口令感染目标,并等待控制指令进行DDoS攻击。由于该僵尸网络文件名以“Aqua*”命名,我们将其命名为Aquabot。
经分析,Aquabot僵尸网络至少迭代过2个版本。其中v1以Mirai开源框架为基础开发,主要功能为进程管理、弱口令扫描和DDoS攻击。2023年11月捕获的最新v2样本在v1基础上针对进程管理、隐匿和传播等功能进行迭代,同时增加了检测设备进程启动参数,以防止设备重启、关机和断电从而延长其生存时间的功能。
随着安全威胁泛化,物联网僵尸网络得到了快速发展,Aquabot僵尸网络基于Mirai开源框架、模块复用和定制化开发完成了多次迭代。由于IoT设备型号各异、存储空间局限、自身安全防护能力有限,难以“外挂”第三方安全产品,并且需要保持长期联网在线运行,对此,安天建议:
1. 加强关口前移,融合原生安全能力
建议IoT设备生产方在规划、研发、生产制造阶段融入安全基因,预先嵌入安天智能安全内核和威胁检测引擎,面向能源、交通、制造等智能场景,形成出厂即具备原生威胁检测和高水平的初始安全基线,持续保障用户的业务安全、稳定运行,进一步提升品牌竞争力和影响力。
2. 强化网络威胁监测与响应
建议IT运营者部署网络威胁检测与响应系统(NTA或NDR)可以结合Aquabot僵尸网络相关信标进行告警。安天探海威胁检测系统集成了恶意代码检测引擎、网络行为检测引擎、威胁情报检测引擎、威胁检测模型、自定义场景检测引擎等,可有效检测网络扫描探测、远程漏洞利用、攻击载荷投放、僵尸网络活动、病毒扩散传播、木马远程控制、web 攻击等行为。
图2-1使用威胁情报库检出威胁行为
图2-2 使用网络行为特征检出威胁行为
图2-3 使用模型检出僵尸网络漏洞扫描行为、弱密码破解用户口令行为
3. 加强IoT设备访问控制和运维
建议IT运营者保持系统和固件均升级为最新版本、优化默认安全配置策略、设置合理的访问控制策略、完善远程运维连接的管控和审计等。
建议IT运营者修改设备出厂默认口令并设置安全口令,建议使用16位或更长的密码,包括大小写字母、数字和符号在内的组合,同时保证不同型号的设备使用不同的安全口令,并定期更换口令,避免长时间使用同一口令。
4. 遭受攻击及时应急处置
病毒名称 | Trojan/Linux.Mirai.asx |
原始文件名 | x86 |
MD5 | 14C46C7F8F8185793BEF4F919C24DC05 |
文件大小 | 41.55 KB (42544 bytes) |
文件格式 | ELF |
VT首次上传时间 | 2023-09-16 18:32 |
VT检测结果 | 42/63 |
3.1 初始化
样本运行后修改进程名为“configd”,并在控制台上输出内容“silly man infected”。
通过检测watchdog传统路径,阻止其对设备进行重启和关机等操作。
图3-2 检测watchdog路径
采用异或算法解密运行所需字符串,算法和密钥数组如下图所示。
图3-3 加密算法及密钥
3.2 进程管理
通过复用Mirai源码中“killer_kill_by_port”函数,实现对受感染设备的进程管理。扫描“/proc/net/tcp”文件过滤特定端口,关闭对应进程,并通过“bind”占用端口。过滤端口如下。
序号 | 过滤端口号 | 端口用途 |
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 上报登陆成功的扫描结果
3.4 命令控制
若攻击者下发了DDoS攻击指令,则会对指定目标发起DDoS攻击。
图3-9 DDoS攻击
样本共集成udp、tcp、gre和app等类型的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请求,消耗服务器资源。 |
病毒名称 | Trojan/Linux.Mirai.asx |
原始文件名 | Aqua.x86 |
MD5 | 8aea7da471d61d2aaa8fb81172f85fdb |
文件大小 | 61.30 KB (62772 bytes) |
文件格式 | ELF |
VT首次上传时间 | 2023-11-08 06:57 |
VT检测结果 | 38/63 |
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服务器。 | 移除该模块。 |
Aquabot僵尸网络X86架构样本行为技术点的ATT&CK框架图谱如下所示:
图5-1 技术特点对应ATT&CK的映射
Aquabot僵尸网络X86架构样本涉及ATT&CK框架中9个阶段的11个技术点,具体ATT&CK技术行为描述表:
ATT&CK阶段/类别 | 具体行为 | 注释 |
侦察 | 主动扫描 | 生成随机IP地址,并对该IP地址实施扫描。 |
资源开发 | 获取基础设施 | 使用弱口令漏洞获取基础设施,构建僵尸网络。 |
初始访问 | 利用有效账户 | 使用弱口令字典对随机IP地址的设备尝试登陆,成功则上报IP地址、用户名和密码等信息,用于投递后续载荷。 |
持久化 | 电源设置 | 检测安全狗或进程启动参数,阻止其对设备进行重启、关机和断电等操作。 |
防御规避 | 混淆文件或信息 | 采用异或算法解密运行所需字符串和弱口令字典。 |
隐藏行为 | 修改进程名,删除“self”文件隐匿进程。 | |
凭证访问 | 暴力破解 | 使用弱口令字典尝试登陆。 |
发现 | 发现进程 | 过滤并关闭特定端口的进程、过滤并关闭特定目录下特定进程。 |
发现远程系统 | 以发现远程基础设施为目标,对随机IP地址扫描。 | |
命令与控制 | 使用应用层协议 | 使用web协议传输远控指令。 |
影响 | 网络侧拒绝服务 | 发起udp_generic、tcp_syn和udp_vse等DDoS攻击。 |
IoCs |
5E4539E71DB8A8D5AAB7B417B12C3A11 |
EDA6C9945F449A1FFE07A09096FAC532 |
DBB63B126B96D69B4E974B0C4D8ABF19 |
C4973FD941C001EFCE069EA8952A9C42 |
A4F59DA4725333E671B7257F8C7D5146 |
A06B5BE74AF6D4A8BB534DCE0E4D8960 |
8FFD26C19F4890863D0F969D04F38F5B |
8AEA7DA471D61D2AAA8FB81172F85FDB |
6FCF2A40B1463B118E38F0802B54E003 |
6C9B401F6FB9D1D3BD4DCFD93B45F0F8 |
61DE0F87AEEE052D05C74024C974F393 |
5F47FB7E60D05ED2A90319F21742E4E4 |
5F1C6B75883C1315FD8ADF0A1B90F1D8 |
412CA37E49E4477F45BFB5E45268B862 |
1C2940D4F116A329147FC80C590B8817 |
14C46C7F8F8185793BEF4F919C24DC05 |
Boats.dogmuncher.xyz |
89.190.156.145 |