技术博客 > 正文

深度分析 | Mirai新样本:新的伪装方式使其更难被识别

2024-04-01

网宿安全演武实验室近期捕获到Mirai僵尸网络木马,我们深入研究了这种恶意软件的工作原理和它对互联网安全构成的威胁,希望能对IoT行业相关企业,及Mirai的潜在受害企业起到一定的帮助。

Mirai,一种臭名昭著的恶意软件,主要通过利用弱口令策略感染物联网设备,进而形成一个强大的僵尸网络。该网络用于发起破坏性的分布式拒绝服务(DDoS)攻击。自2016年8月首次被发现以来,Mirai已在全球范围内对各种网络基础设施造成了严重破坏,包括知名安全研究者Brian Krebs的网站、法国网络服务供应商OVH以及关键的域名解析服务商Dyn。不仅如此,Mirai的源代码在网络黑市中被公之于众,导致更多的恶意软件项目采用和改进了其技术手段。

Mirai展示了其高效的传播模式。这种恶意软件通过扫描开放的网络端口来定位未加密或使用默认凭证的IoT设备,并利用这些设备的弱点迅速传播。一旦感染,它会将设备加入到庞大的僵尸网络中,这些网络可以被用来发起更大规模的DDoS攻击。

在执行流程方面,Mirai样本表现出高度的自动化和适应性。它可以根据不同的网络环境和目标设备调整其攻击策略,从而最大化感染效果。此外,样本中包含的指令解析机制允许攻击者通过远程指令控制被感染的设备,执行各种恶意活动。Mirai样本还采用了多种反分析手段来逃避安全检测。这包括使用混淆代码、模拟正常网络流量以及在某些情况下自我销毁以清除痕迹。这些复杂的反分析手段使得Mirai成为一种难以检测和根除的网络威胁。

通过对这个特定Mirai样本的深入分析,我们不仅能更好地理解这种恶意软件的工作原理和传播策略,还能为IoT安全和网络防御提供实用的见解。

图1 瞄准IoT设备的Mirai僵尸网络

样本概要
Mirai 恶意软件,通过自动扫描互联网来寻找易受攻击的 IoT 设备,例如家用路由器和网络摄像头。一旦发现目标设备,Mirai 利用预设的字典或已知的安全漏洞尝试登录。成功后,它会部署恶意代码,将设备并入其庞大的僵尸网络中。这些被感染的设备继续扫描其他潜在目标,进一步扩大网络规模。设备在感染后通常能继续正常运行,但可能会出现网络延迟或带宽占用过高的现象。感染设备的 Mirai 样本会与命令和控制(C&C)服务器保持连接,并根据下发的命令发起各种类型的 DDoS 攻击,如UDP Flood、TCP Flood 等,目的是消耗目标服务器的处理能力或网络带宽,导致服务中断。Mirai 的存在不仅凸显了物联网设备安全的重要性,也强调了在使用这些设备时采取基本安全措施的必要性。

样本执行流程如下图:

重新定义CDN | 网宿发布新一代可编程CDN Pro
图2 执行流程

恶意行为分析
Mirai是一种广为人知的恶意软件,它主要针对运行Linux系统的IoT设备(如路由器,摄像头,DVR等)发起攻击。Mirai通过扫描网络,寻找具有已知漏洞或弱口令的设备,然后利用这些弱点进行感染。感染后,设备被纳入由攻击者控制的botnet中,以供日后发起大规模的分布式拒绝服务(DDoS)攻击。

Mirai样本表现出几个显著的恶意活动:

恶意扫描活动:Mirai首先会在公共互联网上进行大规模的扫描活动,尝试通过SSH或telnet连接到设备。这种活动对网络造成了极大的负担,因为它消耗了大量的网络带宽。
利用弱口令攻击:Mirai维护了一个预定义的默认用户名和密码列表,用于尝试连接目标设备。如果设备使用了预定义列表中的默认用户名和密码,则Mirai会成功连接并感染设备。因此,Mirai能够感染大量没有进行适当安全设置的设备。
自我复制和传播:一旦设备被感染,Mirai会立即开始寻找下一个目标,进行自我复制和传播。Mirai使用设备的计算和网络资源进行这些活动,这可能会使设备性能下降,并消耗大量的网络带宽。
建立和参与Botnet:被感染的设备会被纳入Mirai的botnet中。攻击者可以远程控制这些设备,发起大规模的DDoS攻击。被感染的设备可以同时进行恶意扫描和DDoS攻击。
大规模DDoS攻击:Mirai的主要目的是利用botnet发起大规模的DDoS攻击,目标可能包括大型网站、在线服务、或者网络基础设施。例如,2016年的Dyn攻击就是由Mirai botnet发起的,影响了大量的网站和服务。
自我清理和隐蔽:Mirai在感染设备后会尝试关闭一些网络端口和服务,以防止其他恶意软件或攻击者入侵。此外,Mirai会在内存中运行并清理其在文件系统中的痕迹,以避免被发现和清除。
Mirai样本通过这些恶意活动,成功地建立了全球范围内的大型botnet,并发起了一些严重的DDoS攻击。这些攻击对互联网的稳定性和安全性造成了巨大的威胁。因此,Mirai提醒我们必须提高IoT设备的安全性,包括改变默认的用户名和密码,定期更新和打补丁,以及使用防火墙和其他安全措施保护设备。

反分析手段
Mirai对字符串进行了加密处理,加载时进行解密并放置table中等待使用,这使得静态无法看到具体内容。

重新定义CDN | 网宿发布新一代可编程CDN Pro
图3 混淆字符串解密初始化

进程隔离:利用fork()创建一个新的子进程,并调用setsid()在子进程中创建新的会话以使该子进程成为新会话的首进程,这有助于从控制终端隔离进程,增加其隐蔽性。然后关闭了标准输入、输出和错误描述符,这是为了避免输出信息到控制台,降低被检测到的几率。

重新定义CDN | 网宿发布新一代可编程CDN Pro
图4 fork创建子进程

这段 hide_process 代码的主要目的是通过修改系统中的特定文件来隐藏一个进程的真实身份,使得分析或识别该进程变得更加困难。具体操作包括生成一个随机文件名,并将此名字用于创建从 /proc/[PID]/exe(指向当前进程可执行文件的符号链接)到一个临时文件的新符号链接,以此掩盖进程的实际来源。同时,该函数还打开并修改了 /proc/self/cmdline 文件,这是一个描述进程启动命令的文件,将其内容改为指向前面提到的随机文件名。这种策略使得外部观察者在查看进程信息时,看到的是一个似乎无关紧要或完全不同的启动命令和源文件,从而达到混淆进程身份的目的。

重新定义CDN | 网宿发布新一代可编程CDN Pro
图5 进程伪装

指令分析
样本在和C2建立连接后会持续等待C2给的指令,接收到指令后将buf传递给后续函数进行解析。

重新定义CDN | 网宿发布新一代可编程CDN Pro
重新定义CDN | 网宿发布新一代可编程CDN Pro

图6 循环接收指令

attack_parse接收到指令后会将buf进行解析,将内容赋予不同变量后,调用攻击函数attack_start(duration, vector, targs_len, targs, opts_len, opts);

重新定义CDN | 网宿发布新一代可编程CDN Pro
图7 调用攻击函数

其中各变量的意义如下:

duration:此变量是攻击的持续时间,它被解析为一个32位整数(uint32_t),并被网络字节顺序转换为主机字节顺序。
vector:此变量表示攻击的类型,也就是攻击向量(Attack Vector),它被解析为一个8位无符号整数(uint8_t)。也是表2中的攻击类型。
targs_len:这是目标数量(Target Count)。它表示目标列表中的条目数,也是一个8位无符号整数。
targs:这是一个数组,保存了所有攻击目标的信息,包括IP地址和网络掩码。它的每一项都是struct attack_target结构的实例。
opts_len:这是选项数量(Option amounts),也是一个8位无符号整数,表示选项列表中的条目数。
opts:这是一个数组,保存了所有攻击选项的信息。它的每一项都是struct attack_option结构的实例。
在struct attack_option结构中:

key:这是选项类型(Option Type),表示特定的攻击选项的标识符。
val_len:这是选项值的长度(Option Length),它表示后面要读取的选项值的长度。
val:这是选项的值(Option Value),表示特定的攻击选项的值。根据val_len读取特定长度的数据。
以下是指令格式解析:

重新定义CDN | 网宿发布新一代可编程CDN Pro
表1 指令集

若c2下发DDoS攻击指令,则会根据Attack Vector执行不同类型的DDoS攻击。

重新定义CDN | 网宿发布新一代可编程CDN Pro
表2 DDoS攻击类型

ATT&CK映射图谱

重新定义CDN | 网宿发布新一代可编程CDN Pro
图8 mirai botnet ATT&CK映射图谱

Mirai及其变种的主要历史事件
2016年

Mirai攻击浪潮:Mirai首次显著登场,利用成千上万的IoT设备发起了大规模DDoS攻击,严重影响了多个主流网站。
德国Deutsche Telekom攻击:约90万宽带用户受到影响,攻击主要针对特定型号的路由器。
利比里亚互联网服务中断:Mirai变种导致该国互联网服务中断,虽规模较小但展示了其破坏力。
2017年

巴西金融机构攻击:Mirai变种袭击多个金融机构,尽管未造成大规模破坏。
2018-2019年

IoT设备攻击增加:Mirai及其变种持续活跃,频繁攻击IoT设备,但未有大规模事件报道。
2020-2022年

针对企业和教育机构的网络攻击:Mirai变种主要针对特定的企业和教育机构进行网络攻击。
2023年

InfectedSlurs僵尸网络:新的网络InfectedSlurs出现,使用Mirai利用零日漏洞进行传播,涉及多个机构的合作进行调查。

总结
在本次对 Mirai 恶意软件的样本分析中,我们深入探究了这种恶意软件的工作原理和其对互联网安全构成的威胁。Mirai 主要通过感染具有弱安全设置的 IoT 设备,如家用路由器和网络摄像头,来构建一个庞大的僵尸网络。这个僵尸网络能够被用来发起强大的分布式拒绝服务(DDoS)攻击,导致目标网站或网络服务严重中断。

感染后的清理和修复

一旦发现 Mirai 感染,立即采取以下步骤进行清理和修复:

隔离:将感染的设备从网络中隔离,以防止恶意软件的进一步传播。
固件更新:对受感染的设备进行固件更新,以消除安全漏洞。
密码更改:更换所有设备的默认密码,使用强度高的密码。
全面扫描:对网络中的所有设备进行安全扫描,确保没有其他设备被感染。
持续监控:加强网络监控,以识别和预防未来的感染活动。
综合防护策略
为了有效防御 Mirai 和类似的网络威胁,建议采取以下综合防护措施,并考虑使用专业的安全产品。

避免受到Mirai感染:
定期更新 IoT 设备的固件
更改所有设备的默认密码
限制不必要的网络访问
使用专业的网络监控工具监测异常流量
制定和练习应急响应计划
定期进行员工安全培训,提高对常见网络威胁的认识
防范由Mirai发起的网络攻击
由于Mirai僵尸网络之庞大性和恶意软件的成熟性,由Mirai发起的DDoS攻击规模通常较大,且多为混合型DDoS攻击,包含网络层及应用层攻击。游戏、金融、电商、互联网等行业是受害重灾区,一旦企业被锁定为目标,单凭一己之力恐怕难以应对。

在一切都云化的今天,购买硬件拼带宽的日子早已一去不复返,目前主流的方式是采用基于CDN或者云的安全产品来应对,云端弹性伸缩的能力给了企业更大的主动权。

网宿全站防护平台,为上千家明智的企业提供了这样弹性伸缩的能力。全站防护构建于网宿2800+全球节点之上,通过自主开发的高性能防火墙,将数据处理性能和吞吐量提高40倍,大大提升网络层攻击的处理性能,自主研发的防护算法能够100% 、0时延清洗网络层DDoS攻击,为企业提供天然的安全屏障。

针对复杂的应用层攻击,网宿全站防护平台构建了以中心智能决策大脑为总控的秒级防护体系,在中心与边缘之间建立高效的数据流转通道,实时分析全局流量,形成监控分析(业务流量&攻击流量)——生成基线(边缘&中心防护基线)——监控分析(不同流量的变化趋势)——修正基线——监控分析……这样持续的闭环,以保持防护策略始终处于最优状态。

IOCs
MD5: f0565a0d95bf3aad12f6f1ff414e1c44

C2: 185.224.128.187

本文内容的版权持有者为网宿科技股份有限公司(“网宿科技”),未经许可,不得转载。