悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本文讲的是悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币,目标计算机被僵尸网络控制之后同样会通过1433端口入侵其他计算机,僵尸网络因此不断扩大控制范围,最终形成现在这样的规模。
本文讲的是 悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

第一部分 背景

一种利用被入侵服务器进行门罗币挖矿的僵尸网络,该僵尸网络控制的服务器数量高峰时单日达到两万多台。僵尸网络建立初期利用“永恒之蓝”漏洞攻击武器入侵一定数量的计算机并以此作为僵尸网络发展的基础,之后这些计算机扫描其他计算机的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个模块构成,模块之间互有联系,相互协作。以下将对每个模块执行的功能进行分析。

1.  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模块的入口。

2.      update模块分析

update模块是Bot程序进行自更新的模块。当程序执行main模块时,将创建线程执行update模块进行版本检查及必要的更新。update模块每6小时进行一次更新检查。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-1 创建线程执行update模块

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-2 调用Sleep函数以定期执行update模块

进行更新检查时,update模块首先获取程序当前的版本号,之后通过博客地址“http://blog.sina.com.cn/s/blog_16fb721c50102x6hw.html”获得加密后的C&C的ip地址。将加密后的ip地址去除首尾的分隔符(***和@@@),经过base64解密并与0x36异或之后得到真实的ip地址(在本样本中,C&C ip地址为67.229.144.218,以下简称为“ip”)。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-3 博客中加密的ip地址

http://ip:8888/ver.txt中存放最新的Bot程序版本号,update模块读取该版本号并与当前Bot程序的版本号进行对比。当两者相同时,则认为程序已经更新到最新版本,继续执行后续功能;当两者不同时,则对程序进行更新。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-4 对比Bot程序版本和最新版本号

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-5 最新的版本号

若Bot程序未更新到最新版本,则进行更新。最新版本的Bot程序通过路径C://windows/system下的更新程序cabs.exe获取。若cabs.exe不存在,则Bot程序将从http://ip:8888/ups.rar下载cab.exe,并启动该程序进行更新。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-5 下载更新程序cab.exe并启动更新

cabs.exe会判断当前计算机系统是否为Windows Server,只有当当前计算机系统为Windows Server时才会执行更新。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-6 判断当前系统是否为Windows Server

如果当前计算机系统为Windows Server,则访问http://ip:8888/update.txt获取最新的下载列表,并将下载列表下载到c:windowssystem路径下,命名为upslist.txt。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-2-7 下载下载列表

下载列表中包含两个文件ps.jpg和my1.html。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图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进程和服务。

3.      scanner模块分析

scanner模块修改自masscan(github:https://github.com/robertdavidgraham/masscan)。masscan是一个快速、灵活的端口扫描器,在windows下发包速度可达到每秒30万包。

在调用scanner模块进行扫描之前,Bot程序会配置一个excludefile,该文件指定ip段黑名单,在该范围中的ip地址将不会被扫描。ip黑名单以字符串的形式存放在Bot程序的资源段中,scanner模块在临时文件夹下创建excludefile,读取资源后将ip黑名单写入excludefile。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-3-1 读取ip黑名单资源并写入excludefile

在Bot程序2017年四月份编译的1.0.0.2版本和五月份编译的1.0.0.3版本的其中一个变种中未发现ip黑名单,在五月份编译的1.0.0.3版本的另一个变种中发现了ip黑名单。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-3-2 存放在Bot程序资源段中的ip黑名单

对于每一个a类ip,scaner模块排除掉部分b段。由于全网扫描容易遭到监控,通过排除部分ip地址可以减少被发现的风险。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-3-3 scanner模块排除部分ip地址后扫描全网

scanner模块能够扫描的端口包括1433端口,3306端口,135端口,22端口,445端口,23端口,80端口和3389端口。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-3-4 部分scanner模块扫描的端口

scanner模块可通过两种模式进行端口扫描,分别是TCP_SYN扫描和TCP_CONNECT扫描。使用何种扫描模式由参数“-syn”决定,如果启动参数包含“-syn”则选择使用TCP_SYN模式进行端口扫描,否则选择TCP_CONNECT模式进行端口扫描。当选择TCP_SYN模式进行端口扫描时,Bot程序只发送SYN帧,端口开放回应SYN&ACK帧,端口关闭回应RST帧,;当选择TCP_CONNECT模式进行端口扫描时,Bot程序尝试连接目标端口,端口开放则连接成功,否则连接失败。

Scanner模块创建的最大扫描线程数由“-t”参数决定,“-t”的最大值为1800。在scanner模块创建扫描线程的同时会同时创建名为“CrackerWMI”的线程,但是在Bot程序发送的数据包中并未发现目的端口为135(wmi服务使用的端口)的数据包,推测可能是作者预留的尚未完善的功能。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-3-5 两种不同的扫描模式

scanner模块会记录开放特定端口的ip地址,并且与ServerAgent模块和Cracker模块进行交互完成“端口扫描+爆破+入侵”一系列工作。

4.      ServerAgent模块分析

ServerAgent模块由两部分功能组成。一是向C&C发送扫描结果;二是对端口扫描和爆破进行相应的配置工作。

ServerAgent模块在scanner模块扫描过程中连接C&C。当scanner模块扫描到开放的端口之后,ServerAgent模块将把对应的ip地址和端口号发送至C&C。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-1 ServerAgent模块连接C&C

此外,ServerAgent模块下载密码字典并为Cracker模块配置密码字典,当scanner模块扫描到某ip地址的特定端口为开放状态时,将通过该字典进行爆破。字典的下载地址为http://ip:8888/wpd.dat,当下载完成之后,ServerAgent模块将从http://ip:8888/wpdmd5.txt获取正确的密码字典的MD5值并与下载的字典wpd.dat的MD5值进行对比以确定下载文件的正确性。下载的密码字典wpd.dat是经过加密的,ServerAgent模块读取密钥“cm9vdCpwd2Q=”,对密钥进行base64解密后,使用其解密wpt.dat。解密后的wpd.dat部分内容如下图所示。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-2 密码字典的部分内容

wpd.dat实际上是一个xml文件,里面包含mysql,mssql,telnet,wmi,ssh,rdp的密码字典以及不同的入侵方式执行的shell。此外,wpd.dat中存在一个名为ports的键,当该键的某个子健键值为1时,ServerAgent模块将配置scanner模块使其扫描该子键对应的端口。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-3 ports键概览

在默认的wpd.dat中,只有mssql子键的值设为1,因此scanner模块只扫描mssql服务对应的端口(端口号1433)。黑客可以通过配置wpd.dat文件增加、减少、修改扫描端口的数目和类别。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-4 从抓包数据发现Bot程序只扫描1433端口

有趣的是,ServerAgent模块选择随机的ip段作为每一轮扫描的ip范围,这和mirai僵尸网络的做法十分相似。如下所示,get_random_ip函数生成的随机ip段为220.176.171.93~220.182.171.87,因此本轮扫描中scanner模块对该ip段进行扫描。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-5 ServerAgent模块计算并选取随机ip段

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-6 测试中生成的随机ip段

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-4-7 从抓包数据中发现此轮扫描中Bot程序扫描其随机生成的ip段

5.      Cracker模块分析

Cracker模块是Bot程序中最重要的模块。该模块用于入侵目标计算机并在目标计算机上执行恶意代码。Cracker模块分为多个小模块,在分析的样本中包括Cracker:CCTV,Cracker:mssql, Cracker:RDP,Cracker:Telnet四个小模块。按照入侵的端口的不同,Cracker模块提供不同的攻击方式。下面将介绍每一种攻击的实现。

5.1  Cracker:mssql

由于Bot程序默认的密码字典wpd.dat中指定扫描的服务为msSQL,因此Cracker:mssql模块是所有Cracker模块中功能最为完善的。在大部分被感染的服务器的msSQL服务中都可以发现该模块所执行的恶意动作。

Cracker:mssql模块首先使用爆破字典爆破目标的msSQL服务。如果成功爆破目标,则登陆SQL Server执行下一步操作。

登陆SQL Server之后,需要在SQL Server中获得执行shell的权限,因此Cracker:mssql模块使用多种方式尝试获得执行shell的权限,包括:

1.  恢复xp_cmdshell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-1 恢复xp_cmdshell

2.  开启被禁止的xp_cmdshell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-2 开启xp_cmdshell

3.  xp_cmdshell被删除后,使用SP_OACreate执行shell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-3 使用SP_OACreate执行shell

4.  开启CLR enabled选项,使用SQL Server CLR执行shell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-4 开启CLR enabled选项

5.  注册regsvr32.dll执行远端代码所需的组件,使用regsvr32.dll执行shell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-5 注册相关组件

6.  通过沙盒执行shell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-6 通过沙盒执行shell

7.  开启SQL Agent服务,使用SQL Agent服务执行shell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-7 开启SQL Agent服务

Cracker:mssql模块所执行的主要功能主要包括以下几方面:

1.  在c:windowssystem32wbem下创建批处理文件123.dat,并在该文件中写入内容。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-8 创建123.bat

该批处理文件执行的功能包括对一些程序运行所涉及到的文件和文件夹进行权限设置;使用regsvr32.dll执行远端代码;判断是否存在item.dat,若存在则调用rundll32执行该程序。item.dat是修改自PCShare(github:https://github.com/isuhao/pcshare)的远程控制程序,C&C通过item.dat控制Bot。

2. 创建文件PerfStringse.ini,并在该文件中写入内容。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-9 创建PerfStringse.ini

该文件是个组策略模板文件,主要是禁止一些涉及到的文件的访问权限。在创建该模板文件之后调用secedit.exe配置组策略。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-10 调用secedit.exe配置组策略

3.  在c:windowssystem下创建文件myusa.dvr,并在文件中写入内容。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-11 创建myusa.dvr

myusa.dvr是个ftp下载脚本,主要功能是从down.mys2016.info下载文件1.dat到本地c:windowssystem路径下,命名为myusago.dvr;下载1.bat到本地c:windowssystem路径下,命名为backs.bat。

myusago.dvr也是个ftp下载脚本,从down.mys2016.info下载多个文件到本地;backs.bat用于记录系统时间并写入1.txt中。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-12 myusago.dvr内容

下载的文件中,item.dat是C&C用于控制Bot的远程控制软件;ms.rar实际上就是Bot程序的更新程序cab.exe;ss.bat和Cracker:mssql模块释放的123.bat是同一个文件;未找到op7key.rar文件,猜测与爆破字典类似。

从myusago.dvr下载的文件不难看出,Bot程序除了执行Cracker:mssql模块中硬编码的恶意代码之外,还通过云端下载相应的恶意程序,这保障与Bot程序相关联的恶意代码能够持续驻留。在分析的过程中我们发现,用于进行环境配置和程序运行控制的123.bat批处理脚本是更新最为频繁的,从2017年4月份起更新次数超过了10次。

myusago.dvr和myusa.dvr将作为ftp的参数写入命令行中并加入SQL Agent的Job中,每天执行一次。

4.  将Bot程序加入SQL Agent的job中,并附带参数“-syn 1000”。每次SQL Agent启动时Bot程序也将启动。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-13 将Bot程序加入SQL Agent的Job中

5.  以Job的形式每20分钟运行一次C:Progra~1mainsoftinstall.exe。该程序是一个挂机赚分软件。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-14 以Job形式执行install.exe

6.  以Job的形式每20分钟执行C:windowsdebug,C:Progra~1shengda和C:Progra~1kugou2010路径下的所有exe。从我们的监控中发现,Bot程序所释放的挖矿机以及能给黑客带来直接收益的程序都存在于这几个路径中,黑客通过定时启动这些程序保证收益的源源不断。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-15 定时执行C:windowsdebug下的exe

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-16 定时执行C:Progra~1shengda下的exe

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-17 定时执行C:Progra~1kugou2010下的exe

7.  创建ftp下载脚本msinfo.dat,该脚本从down.mys2016.info下载文件到C:windowsdebug路径下,并命名为bss.exe。之后通过批处理脚本msinfo.bat调用ftp执行下载脚本,下载完成后启动bss.exe,并删除这两个脚本。bss.exe疑似是个远控木马。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-18 msinfo.dat内容

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-19 msinfo.bat内容

8.  将item.dat和123.bat加入启动项中。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-20 将item.dat加入启动项中

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-21 将123.bat加入启动项中

9.   确定权限允许之后,删除SQL用户,并设置SQL SA(超级管理员)帐户及密码,同时添加多个SQL帐户。完成这步操作之后,黑客正式接管该计算机的SQL Server,管理员无法再通过之前的帐户登录SQL Server。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-22 添加SQL SA

Cracker:mssql模块还通过SQL Server执行多段shellcode,大部分的shellcode都以SQL Agent的Job形式存在并定期执行。

第一段shellcode使用wmi中的ActiveScriptEventConsumer类执行脚本代码。该脚本读取http://www.cyg2016.xyz:8888/test.html网页内容,并根据网页内容获取第二组网址,下载文件并执行。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-23 第一段shellcode内容

下载的文件包括更新程序cabs.exe和挖矿机lsmosee.exe。挖矿机修改自xmr-stak(github:https://github.com/fireice-uk/xmr-stak-cpu),以32位形式编译,作者在此挖矿机中添加了一个模块,当需要64位挖矿机时,该模块将从C&C下载64位的挖矿机lsmose.exe到本地执行。本样本中,32位挖矿机的路径为“C:windowshelp”,而64位挖矿机的路径修改为“C:windowsdebug”。由于作者添加了SQL Agent的Job,使“C:windowsdebug”路径下的exe文件每20分钟执行一次,猜测作者将挖矿机保存到此目录下是为了保证挖矿机能够稳定运行。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-24 下载挖矿机和更新程序

第二段shellcode使用js脚本执行恶意代码,脚本功能与第一段shellcode中的jscript代码相同。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-25 第二段shellcode内容

第三段shellcode同样使用wmi脚本执行jscript代码,所执行的功能与创建的批处理文件123.bat的功能相同,猜测作者此举为了防止文件123.bat被杀毒软件清除而执行的备用方案。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-26 第三段shellcode内容

第四段shellcode是第三段shellcode的js版本。不难发现,作者对于每段shellcode都准备了wmi和js两种版本,以确保脚本执行的稳定性。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-27 第四段shellcode内容

第五段shellcode通过恢复cmdshell,恢复SP_OACreate等方式保证能通过SQL Server执行shell,猜测作者通过Job定期执行这段shellcode以保证shell能长期存活。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-28 第五段shellcode内容

第六段shellcode删除C:Documents and SettingsDefault UserLocal SettingsTemporary Internet FilesContent.IE5路径下的文件。由于下载文件时都会在该目录下留下对应的tmp文件,作者此举是为了防止用户通过该目录发现可疑文件,可见作者对痕迹的清理十分细心。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-29 第六段shellcode内容

第七段shellcode使用js脚本访问http://www.cyg2016.xyz:8888/kill.html,该页面是个文件名列表。脚本搜寻系统中是否存在与该页面返回的文件名相同的文件,若存在则结束对应进程并将文件删除。这些文件大多数是一些其他入侵者释放的挖矿机。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-30 第七段shellcode内容

透过这些文件名我们发现了一个有趣的现象,在被删除的文件中包含了一些和Bot程序释放的挖矿机文件名十分相似的文件,例如C:windowsdebuglsmosee.exe(Bot程序释放的挖矿机是c:windowshelplsmosee.exe和C:windowsdebuglsmose.exe)。是作者通过这样的方式进行更新,淘汰旧的挖矿机,还是其他入侵者利用Bot程序定时执行C:windowsdebug路径下程序的特性坐收渔翁之利就不得而知了。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-31 待删除文件列表

第八段shellcode将123.bat加入启动项中,此处不再赘述。

第九段shellcode从http://down.mys2016.info:280下载文件到C:WINDOWS路径下,并命名为ps.exe。ps.exe实际上是PsExec,一款强大的远程执行工具,黑客在每台入侵的计算中部署该工具,使每台计算机成为一个控制端,方便构建一个庞大的僵尸网络。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-32 第九段shellcode内容

第十段shellcode主要是完成SQL提权的一系列操作。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-33 第十段shellcode内容

第十一段shellcode是利用SQL Server CLR执行shell的payload,从payload中可以发现其访问http://www.cyg2016.xyz:8888/clr.txt并执行该页面中返回的内容。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-34 payload的部分内容

该页面和http://www.cyg2016.xyz:8888/test.html一致,即下载更新程序和挖矿机到计算机中并运行。

Cracker:mssql模块完成了Bot程序几乎所有要完成的功能,包括更新、挖矿、清除同类程序、定时任务以及SQL Server管理员账户的设置。由于作者目前的密码字典中将mssql作为唯一攻击目标,因此Cracker:mssql模块如此完善也是可以理解的。若之后作者开启了其他攻击方式,其他的Cracker模块也将变得更加完善。

5.2  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:https://github.com/jgamblin/Mirai-Source-Code/tree/master/loader/bins),这些payload适用于不同的平台架构(arm,arm7,m68k,mips,mpsl,ppc,sh4,spc,x86)。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-36 payload中mirai的相关标识

除了payload与mirai相同之外,Cracker:Telnet模块也基本修改自mirai源码,包含密码爆破功能和入侵功能。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-37 Cracker:Telnet模块中的mirai特征

mirai在通过Telnet入侵之前会配置一个ip地址用于作为report服务器地址,用于返回扫描结果,在分析中我们也发现了一个疑似report服务器ip地址。如果Bot程序的启动参数中包含“-srv”,则ServerAgent模块会从密码字典中读取名为telnetip的子键的键值,该键值是个ip地址,之后被传入Cracker:Telnet模块中。如果启动参数中包含“-cli”,Bot程序会从当前目录下的wpdconfig.ini文件中读取ip地址。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-38 密码字典中的report服务器地址

由于Cracker:Telnet模块与mirai相差无几,在此不再赘述,感兴趣的读者可以查看mirai源码(github:https://github.com/jgamblin/Mirai-Source-Code)。

5.3  Cracker:RDP

Cracker:RDP模块修改自hydra(github:https://github.com/vanhauser-thc/thc-hydra)的RDP部分。hydra是一款支持多种网络服务的强大的暴力破解工具,Cracker:RDP模块使用了其源码中的rdp.c文件,用于对开放了RDP服务端口的计算机进行爆破。不同于Cracker:mssql模块和Cracker:Telnet模块,Cracker:RDP模块只是进行爆破而未加入任何入侵以及代码执行的功能。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-39 Cracker:RDP模块扫描端口

5.4  Cracker:CCTV

Cracker:CCTV模块是一个CCTV摄像头入侵模块。该模块会向http://Targetip:port/shell?…(…的内容猜测是用户名&密码)发送GET请求,一旦请求返回的状态值不为400,401,403,404或500,则认为该ip地址和端口号对应的CCTV摄像头可以被入侵。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-40 Cracker:CCTV模块扫描CCTV摄像头

由于在密码字典wpd.dat中并没有配置CCTV相关的键值,猜测该模块是和Cracker:Telnet模块结合使用的。由于mirai中含有识别特定IOT设备的代码,而Cracker:Telnet模块又是修改自mirai,猜测当Cracker:Telnet模块发现某台设备为CCTV摄像机时则通过Cracker:CCTV模块进行入侵。

5.5 其他模块

在Bot程序早期的版本中(2016年10月编译的版本)还发现了Cracker:MySQL模块,Cracker:SSH模块和Cracker:WMI模块,这些模块的功能都是在被入侵的计算机中执行shell。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-41 Cracker:MySQL模块

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-41 Cracker:WMI模块

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-5-41 Cracker:WMI模块

不过这几个模块在之后的版本中都被移除了,而原本功能简单的Cracker:mssql模块在之后的版本中得到了完善。

6.      cService模块分析

cService模块用于管理Bot服务,Bot服务是Service形式的Bot程序。

当Bot程序的启动参数中包含“-create”时,cService模块创建名为“xWinWpdSrv”的服务,该服务以“-s –syn 1500”作为启动参数启动Bot程序。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-6-1 创建Bot服务

当Bot程序的启动参数包含“-delete”时,cService模块删除“xWinWpdSrv”服务。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-6-2 删除Bot服务

当Bot程序的启动参数包含“-start”时,cService模块启动“xWinWpdSrv”服务。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-6-3 启动Bot服务

当Bot程序的启动参数包含“-stop”时,cService模块停止“xWinWpdSrv”服务。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-6-4 停止Bot服务

Bot程序模块众多,并且各模块之间关系紧密,相互配合。此外,Bot程序与其他组件相辅相成,以保证攻击者对计算机的持久控制以及僵尸网络的不断壮大。以下将用一个关系图描述Bot程序与其他组件之间的关联。

悄然崛起的挖矿机僵尸网络:打服务器挖价值百万门罗币

图2-6-5 Bot程序与其他组件关系图

第三部分 防御总结

从僵尸网络当前的攻击重点来看,防范其通过1433端口入侵计算机是非常有必要的。此外,Bot程序还有多种攻击方式尚未使用,这些攻击方式可能在未来的某一天被开启,因此也需要防范可能发生的攻击。对此,我们总结以下几个防御策略:

1.对于未遭到入侵的服务器,注意msSQL,RDP,Telnet等服务的弱口令问题。如果这些服务设置了弱口令,需要尽快修改;

2.对于无需使用的服务不要随意开放,开放的服务是黑客入侵的前提。对于必须使用的服务,注意相关服务的弱口令问题;

3.特别注意445端口的开放情况。由于黑客曾经使用永恒之蓝漏洞入侵计算机,不排除黑客故技重施。及时打上补丁更新操作系统是非常有必要的。

4.关注服务器运行状况,注意CPU占用率和进程列表和网络流量情况可以及时发现系统存在的异常。此外,注意系统账户情况,禁用不必要的账户。

5.对于网络摄像头持有者,建议修改默认密码以防止黑客直接使用默认密码爆破。

该僵尸网络现今主要依靠端口扫描和弱口令爆破进行传播,但其在“永恒之蓝”漏洞攻击武器出现之初就利用该武器入侵了一定数量的计算机,可见其对于最新曝光的漏洞利用以及攻击方法的掌握十分迅速,因此需时刻警惕其可能发起的重大攻击。

附录

1. 相关文件MD5

042ac6f93597e80112a1c42fdb79e3df 
42c0b80fe0a28401f2b64a522f1dea84 
d7378a709dc4deb1a034676c43de503a 
ad0496f544762a95af11f9314e434e94 
5707f1e71da33a1ab9fe2796dbe3fc74 
5af3bab901735575d5d0958921174b17 
6a936ad69c708f3ac70da2f76b8b619e 
fe04395c95cdd102aeabbf6b915c1a5e 
f068b7be8685c91bddbb186f6fad7962 
10ace2e06cc8b5656d38eb2e6ed4f079 
a38a1e11f7222f7c48aaf33e20c78f48 
6b13994f83dad0d45764911a88564a7b 
f249446c28ab983c395ca4e198db3528 
7b7b1c2a2201aebf22aaf8fe7901c0e9 
ca748d5eac754e0b0026474ae7a51f3f 
e81e96be9d90a1a1a0871196d0374c26 
75f6543447b4726c56d183951526b379 
98d615c222293ca937ab4b1b4a7c8118 
c3a5859a5d438ff3f62d81ec3894d9ca

2. 相关ip地址和域名

67.229.144.218 
13.59.110.123 
209.58.186.145 
www.cyg2016.xyz 
js.mys2016.infodown.mys2016.info 
ftp.oo000oo.mewmi.oo000oo.clubdown.oo000oo.club 
js.f4321y.comup.f4321y.com 
wmi.mykings.topjs.mykings.pw 
xmr.5b6b7b.rujs.5b6b7b.ru 
64.myxmr.pw

3. 密码字典

root 
root   root 
root   123 
root   123456 
phpmind   phpmind 
root   admin123 
root   password 
root   root123 
root   123456*a 
mysqld   654321*a 
msSQL
sa 
sa sa 
sa 123 
sa 123456 
sa password 
sa 525464 
sa shabixuege!@# 
vice vice 
sa 3xqan7,n`~!@ ~#$%^&*(),.; 
sa 4xqan7,m`~!@ ~#$%^&*(),.; 
mssqla 4xqan7,n`~!@ ~#$%^&*(),.; 
mssqla 4xqan7,m`~!@ ~#$%^&*(),.; 
mssqla 3xqan7,mm`~!@ ~#$%^&*(),.; 
mssqla 3xqan7,m`~!@ ~#$%^&*(),.; 
mssqla 3xqan7,n`~!@ ~#$%^&*(),.; 
mssqla 4xqan7,mm`~!@ ~#$%^&*(),.; 
sa 4xqbn7,m`~!@ ~#$%^&*(),.; 
mssqla 4xqbn7,mm`~!@ ~#$%^&*(),.; 
sa 4yqbn7,m`~!@ ~#$%^&*(),.; 
mssqla 4yqbn7,mm`~!@ ~#$%^&*(),.; 
sa 4yqbm7,m`~!@ ~#$%^&*(),.; 
mssqla 4yqbm7,mm`~!@ ~#$%^&*(),.; 
kisadmin ypbwkfyjhyhgzj 
hbv7 zXJl@mwZ 
bwsa bw99588399 
ps 740316 
uep U_tywg_2008 
sa sa123 
sa sasa 
sa 12345 
sa sunshine 
sa trustno1 
sa 111111 
sa iloveyou 
sa sql2005 
sa DiscoJack 
sa 1 
401hk 401hk!@# 
sa admin@123 
sa sa2008 
sa 123123 
sa 1111 
sa 1234 
sa 12345678 
sa 1234567890 
sa passw0wd 
sa abc 
sa abc123 
sa abcdefg 
sysdba masterkey 
sa bing_1433 xing 
sa ^_^$$wanniMaBI:: 1433 vl 
sa sapassword 
sa linwen5555 
su vice_1433 vice 
sa Aa123456 
sa ABCabc123 
sa sqlpassword 
sa 1qaz2wsx 
sa 1qaz!QAZ 
sa sql2008
!!Huawei @HuaweiHgw 
system ping ;sh 
root 1001chin 
root xc3511 
root vizxv 
admin admin 
5up 5up 
root 
root jvbzd 
root root 
root 123 
root hg2x0 
root 123456 
admin admin1234 
root admin 
superadmin Is$uper@dmin 
admin 
support support 
admin 123456 
1234 1234 
Admin Admin 
admin ho4uku6at 
admin 123 
admin 1234567 
admin 12345 
root 12345 
admin root 
e8telnet e8telnet 
telecomadmin nE7jA%5m 
e8ehomeasb e8ehomeasb 
telnetadmin telnetadmin 
e8ehome e8ehome 
Zte521 Zte521 
root Zte521 
user password 
admin password 
root password 
user user 
root 888888 
root grouter 
root 666666 
guest 12345 
admin ZmqVfoSIP 
admin 888888 
admin guest 
admin 666666 
Admin 111111 
admin oelinux123 
Administrator meinsm 
adminlvjh adminlvjh123 
default antslq 
root telnet 
guest admin 
netgear netgear 
realtek realtek 
root 88888888 
service service 
root cat1029 
system system 
root oelinux123 
root tl789 
telnet telnet 
root GM8182 
user qweasdzx 
root hunt5759 
root rootpassword 
zte zte 
root cisco 
root telecomadmin 
root 12345678 
root default 
huawei admin@huawei.com 
root solokey 
root twe8ehome 
dvr dvr 
supervisor supervisor 
root 1234567890 
root 0123456789 
root rootroot 
Manager manager 
admin admin888 
useradmin useradmin 
ubnt ubnt 
root dvr 
cusadmin highspeed 
cisco cisco 
admin smcadmin 
h3c h3c 
admin benq1234 
admin 12345678 
root PASSWD 
root passwd 
ROOT PASSWD 
huawei huawei 
root h3c 
root nmgx_wapia 
toor toor 
Huawei Huawei 
admin private 
root private
root 
root root 
root 123 
root 123456 
root i826y3tz 
root password 
ubnt ubnt 
ubnt admin 
root gwevrk7f@qwSX$fd
administrator
administrator 123 
administrator 123456 
administrator 
administrator 1234 
administrator 12345 
administrator 5201314 
administrator 1qaz2wsx 
administrator Aa123456 
administrator qwe123!@# 
administrator qwe!@# 
administrator 123qweqwe 
administrator 654321 
administrator admin 
administrator 0 
administrator password 
administrator 123123 
piress adminlv123 
administrator p@ssw0rd 
administrator 112233 
administrator !@#123 
administrator 1qaz2wsx3edc 
administrator !@#qwe 
administrator zxcvbnm 
administrator login 
administrator admin123 
administrator 3389 
administrator pass




原文发布时间为:2017年9月4日
本文作者:xiaohui 
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
13天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
1月前
|
弹性计算 监控 数据可视化
ECS网络流量监控
ECS网络流量监控
61 2
|
1月前
|
域名解析 关系型数据库 MySQL
怎样用自己电脑搭建网络服务器!不花一分钱
怎样用自己电脑搭建网络服务器!不花一分钱
51 1
|
2月前
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
|
1月前
|
Linux Shell 网络安全
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
46 1
|
16天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
1月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
30 0
|
1月前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
162 1
|
1月前
|
物联网 大数据 云计算
未来趋势:无服务器计算的崛起
随着云计算技术的发展,无服务器计算作为一种新兴的计算模式正逐渐受到关注。本文将探讨无服务器计算的定义、优势以及在后端开发中的应用,并展望其在未来的发展趋势。
|
1月前
|
JSON 缓存 中间件
Go语言网络编程:深入探索HTTP服务器开发
【2月更文挑战第12天】本文将详细探讨使用Go语言开发HTTP服务器的过程,包括HTTP协议的理解、Go标准库中`net/http`包的使用、路由处理、中间件、静态文件服务、JSON处理以及性能优化等方面。通过本文,读者将能够掌握构建高效、可扩展HTTP服务器的关键技术。