概述
作为僵尸网络的开山鼻祖和集大成者以及后世不断效仿学习的mirai僵尸网络,在僵尸网络分析过程中拥有极高的地位和代码重复率。
学习mirai代码在分析的时候可以带来很多启发,同时也学到了很多东西。
僵尸网络主要的攻击方式有两种
- ddos
- 挖矿
ddos攻击是最常见的一种盈利方式,通过向购买者提供ddos服务来获利,这也是一般的僵尸网络的经营方式。
有些家族同时兼具挖矿的功能,使用的也大多是xmrig开源挖矿程序,攻击目标主要集中在游戏、新闻媒体、制造业。这些行业的服务器性能良好,可以为挖矿提供物理支持。
mirai 构成
主要有三个模块构成:
├─dlr
│ └─release
├─loader # 将payload安装到目标设备
│ ├─bins
│ └─src
│ └─headers
├─mirai # mirai的核心代码
│ ├─bot # 在设备上运行的主体,主要的恶意代码
│ ├─cnc # 和后端服务器通信,用来接收命令等
│ └─tools # 其他的辅助工具
└─scripts
└─images
攻击流程
mirai僵尸网络的基本攻击流程如下:其他botnet的攻击流程也不尽相同,我们能拿到的样本基本都是下面的样本。
├─mirai # mirai的核心代码
│ ├─bot
首先利用各种方式向设备种投递木马,之后被感染设备通过爆破或者其他方式来扫描攻击其他的互联设备,达到扩散的目的。这样就得到了大量的受控主机,从而提高攻击的威力。
期间木马可以根据写好的东西自动扩散,或者是通过cnc控制主机进行指令下发和信息数据回传。
mirai基本都是C语言编写的,cnc模块使用go编写。
常见功能
botnet的样本基本具备如下功能
- ddos
- 挖矿
- 公网、内网扫描
- telnet或者ssh等爆破
- 自删除
- 喂狗
- ……
样本特点
不仅仅是mirai,其他botnet也具有如下特点。
- 自删除
- 配套启动、扩散、删除的shell脚本
- 各种系统调用
- 手动实现的库函数
- 持久化
- 利用api获取受害者公网ip
- ……