时间:2024-12-21 02:01:53 点击:
第一部分背景
360互联网安全中心监测到一种利用被入侵服务器进行门罗币挖矿的僵尸网络,该僵尸网络控制的服务器数量高峰时单日达到两万多台。僵尸网络建立初期利用“永恒之蓝”漏洞攻击武器入侵一定数量的计算机并以此作为僵尸网络发展的基础,之后这些计算机扫描其他计算机的1433端口(msSQL服务端口),尝试爆破目标计算机的msSQL服务,一旦爆破成功则登陆SQL Server执行恶意代码。目标计算机被僵尸网络控制之后同样会通过1433端口入侵其他计算机,僵尸网络因此不断扩大控制范围,最终形成现在这样的规模。
僵尸网络的蔓延离不开强大的Bot程序,通过代码同源性可以发现该家族的Bot程序的诞生最早可追溯到2014年。在2014年到2017年之间,Bot程序进行多次版本更新,最早的版本只是简单的入侵与远程控制,从2017年4月的版本开始, Bot程序借鉴多款扫描器、爆破工具以及著名僵尸网络mirai的实现,添加了多种针对不同协议的扫描爆破模块,并且实现了一套针对msSQL的“入侵+利用+传播”的攻击模块。Bot程序版本更替及传播量如下图所示。(图示中xx.x.x.x.x(x)表示的是Bot程序的版本,例如17.1.0.0.2(1)表示2017年编译的1.0.0.2版本的Bot程序变种1)
图1-1 Bot程序版本更替及感染量概览图
从图1-1中可以看出,Bot程序自4月底开始传播量开始出现爆发式增长,这正是作者利用“永恒之蓝”漏洞攻击武器进行僵尸网络建立的时间段。此外,Bot程序有一套完善的更新体系,当Bot程序检测到有新版本发布之后,将自动更新至最新版本。从图1种也不难看出,新版本传播量增加之后,老版本的传播量也相应地下降。
Bot程序当前的主要目的是安装门罗币挖矿机,利用服务器资源挖矿。截止目前,作者的门罗币钱包已经有高达1975枚门罗币,当前约合人民币167万。
图1-2 作者门罗币钱包概况
Bot程序高度模块化,集合了多种不同的功能,并且具有完善的更新和持久驻留机制。
对Bot程序的分析将有助于了解该僵尸网络的传播机制。本文将通过对Bot程序的详细分析,挖掘该僵尸网络的工作原理,并据此讨论服务器在面对该僵尸网络时所需的预防措施以及防御策略。
第二部分Bot程序分析
本文选用Bot程序2017年4月份编译的1.0.0.2版本作为分析的样本,样本MD5:10ace2e06cc8b5656d38eb2e6ed4f079。
Bot程序由main模块,update模块,Scanner模块,Cracker模块,ServerAgent模块和cService模块6个模块构成,模块之间互有联系,相互协作。以下将对每个模块执行的功能进行分析。
main模块分析Bot程序是以控制台形式存在的,在介绍main模块之前先介绍Bot程序所接收的启动参数以及参数对应的功能。
表2-1-1 Bot程序所接收的参数及对应的功能
这些启动参数满足以下几条规则:
1.当存在“-start”,“-stop”,“-create”和“-delete”中的多个时,只有第一个参数是有效的,因此作者引入“-run”参数配合“-create”参数以完成创建服务并启动服务的操作。
2.“-delete”参数在删除Bot服务之前会关闭该服务。
3.当未指定“-syn”参数时默认扫描器为TCp_CONNECT模式。
4.当同时存在“-srv”和“-cli”时只有第一个参数是是有效的,两者都不存在时默认为“-srv”。
5.当程序启动参数包含“-s”时,将以服务形式执行main模块,否则以控制台形式执行main模块。
main模块主要是进行一些准备工作以及配置并启用其他模块。在程序准备工作方面,主要包括以下几部分。
(1)获取系统信息。
图2-1-1 获取系统信息
(2)判断系统类型是否为Server。
图2-1-2 判断系统类型
(3)结束并禁用Network list Service和Network Location Awareness。Network list Service用于识别计算机已连接的网络,收集和存储这些网络的属性,并在更改这些属性时通知应用程序;Network Location Awareness用于收集并保存网络配置和位置信息,并在信息改动时通知应用程序。Bot程序关闭并禁用这些服务以防止自身的网络通信被记录。
图2-1-3 结束并禁用Network list Service和Network Location Awareness
(4)结束并禁用SharedAccess和MpsSvc(Intemet连接共享和防火墙服务)以保障Bot程序的网络通信能够正常进行,并且删除日志文件。
图2-1-4结束并禁用SharedAccess和MpsSvc
完成初始化工作之后,main模块将创建新线程执行update模块。update模块检查Bot程序版本并根据情况进行更新。同时,main模块还作为Scanner模块,Cracker模块和ServerAgent模块的入口。
update模块分析update模块是Bot程序进行自更新的模块。当程序执行main模块时,将创建线程执行update模块进行版本检查及必要的更新。update模块每6小时进行一次更新检查。
图2-2-1 创建线程执行update模块
图2-2-2 调用Sleep函数以定期执行update模块
进行更新检查时,update模块首先获取程序当前的版本号,之后通过博客地址“”获得加密后的CC的ip地址。将加密后的ip地址去除首尾的分隔符(***和@@@),经过base64解密并与0x36异或之后得到真实的ip地址(在本样本中,CC ip地址为67.229.144.218,以下简称为“ip”)。
。
图2-2-8 下载列表内容
ps.jpg是末尾拼接了一个pE文件的图片。该pE文件就是最新版本的Bot程序。
图2-2-9 藏有最新版本Bot程序的图片
图2-2-10 图片中监测到的pE文件特征
my1.html是一个批处理脚本,功能与Cracker:mssql模块释放的批处理脚本123.dat基本相同,主要是创建一些需要的文件夹并为之后Cracker模块配置环境。
完成下载之后,cabs.exe会结束Bot程序的进程和服务,更新相关文件之后再重启Bot进程和服务。
scanner模块分析scanner模块修改自masscan(github:网页内容,并根据网页内容获取第二组网址,下载文件并执行。
图2-5-23 第一段shellcode内容
下载的文件包括更新程序cabs.exe和挖矿机lsmosee.exe。挖矿机修改自xmr-stak(github:,该页面是个文件名列表。脚本搜寻系统中是否存在与该页面返回的文件名相同的文件,若存在则结束对应进程并将文件删除。这些文件大多数是一些其他入侵者释放的挖矿机。
图2-5-30 第七段shellcode内容
透过这些文件名我们发现了一个有趣的现象,在被删除的文件中包含了一些和Bot程序释放的挖矿机文件名十分相似的文件,例如C:\\windows\debug\lsmosee.exe(Bot程序释放的挖矿机是c:\\windows\help\lsmosee.exe和C:\\windows\debug\lsmose.exe)。是作者通过这样的方式进行更新,淘汰旧的挖矿机,还是其他入侵者利用Bot程序定时执行C:\\windows\debug路径下程序的特性坐收渔翁之利就不得而知了。
图2-5-31 待删除文件列表
第八段shellcode将123.bat加入启动项中,此处不再赘述。
第九段shellcode从一致,即下载更新程序和挖矿机到计算机中并运行。
Cracker:mssql模块完成了Bot程序几乎所有要完成的功能,包括更新、挖矿、清除同类程序、定时任务以及SQL Server管理员账户的设置。由于作者目前的密码字典中将mssql作为唯一攻击目标,因此Cracker:mssql模块如此完善也是可以理解的。若之后作者开启了其他攻击方式,其他的Cracker模块也将变得更加完善。
Cracker:Telnet
Cracker:Telnet模块是除了Cracker:mssql模块之外较为完善的一个模块。作者充分利用mirai僵尸网络的优点构建了一套类似于mirai的Telnet入侵模块。
在执行Cracker:Telnet模块之前,Bot程序在ServerAgent模块中配置Telnet入侵攻击的payload。ServerAgent模块会根据不同的平台架构从资源段中读取payload并将其转化为十六进制字节码的形式。
图2-5-35 从资源段读取payload
在payload中我们发现一些mirai相关的标识,通过对比发现Bot程序所使用的payload就是mirai僵尸网络的payload(github:
www.4p3.cn 版权所有 赣ICP备2024038979号-2
本网站内容由互联网收集整理,目的在于研究学习传递之用 如有不妥请联系删除 gg.e@163.com