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

阅读量432092

|评论1

|

发布时间 : 2017-09-01 20:51:37

https://p3.ssl.qhimg.com/t01273428a584fea3db.jpg

第一部分 背景

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)

 http://p0.qhimg.com/t014d954858293383bd.png

图1-1 Bot程序版本更替及感染量概览图

从图1-1中可以看出,Bot程序自4月底开始传播量开始出现爆发式增长,这正是作者利用“永恒之蓝”漏洞攻击武器进行僵尸网络建立的时间段。此外,Bot程序有一套完善的更新体系,当Bot程序检测到有新版本发布之后,将自动更新至最新版本。从图1种也不难看出,新版本传播量增加之后,老版本的传播量也相应地下降。

Bot程序当前的主要目的是安装门罗币挖矿机,利用服务器资源挖矿。截止目前,作者的门罗币钱包已经有高达1975枚门罗币,当前约合人民币167万。

 http://p9.qhimg.com/t016d7a519760e8d986.png

图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程序所接收的启动参数以及参数对应的功能。

http://p1.qhimg.com/t01d7796b87ed03ed81.png

表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)获取系统信息。

 http://p7.qhimg.com/t0157fe2455f08e8247.png

图2-1-1 获取系统信息

(2)判断系统类型是否为Server。

 http://p9.qhimg.com/t012f7d7c2f3c705af8.png

图2-1-2 判断系统类型

(3)结束并禁用Network list Service和Network Location Awareness。Network list Service用于识别计算机已连接的网络,收集和存储这些网络的属性,并在更改这些属性时通知应用程序;Network Location Awareness用于收集并保存网络配置和位置信息,并在信息改动时通知应用程序。Bot程序关闭并禁用这些服务以防止自身的网络通信被记录。

 http://p2.qhimg.com/t012e7af8ef6f3ae236.png

图2-1-3 结束并禁用Network list Service和Network Location Awareness

(4)结束并禁用SharedAccess和MpsSvc(Intemet连接共享和防火墙服务)以保障Bot程序的网络通信能够正常进行,并且删除日志文件。

 http://p1.qhimg.com/t01491a81c503b2c900.png

图2-1-4结束并禁用SharedAccess和MpsSvc

完成初始化工作之后,main模块将创建新线程执行update模块。update模块检查Bot程序版本并根据情况进行更新。同时,main模块还作为Scanner模块,Cracker模块和ServerAgent模块的入口。

2. update模块分析

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

 http://p6.qhimg.com/t01c6a5a4eab0853b4f.png

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

 http://p7.qhimg.com/t01d906a338c57279a3.png

图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”)。

 http://p1.qhimg.com/t01c8918271270c0dda.png

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

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

 http://p1.qhimg.com/t01ef75275db865a74d.png

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

 http://p6.qhimg.com/t019750239f74987300.png

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

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

http://p1.qhimg.com/t01c274db679f4eeef6.png 

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

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

 http://p0.qhimg.com/t0125882534be9861ad.png

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

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

http://p6.qhimg.com/t0189e269cf69ccae55.png

图2-2-8 下载下载列表

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

 http://p0.qhimg.com/t01e0f0e07a941b44b6.png

图2-2-9 下载列表内容

ps.jpg是末尾拼接了一个PE文件的图片。该PE文件就是最新版本的Bot程序。

 http://p2.qhimg.com/t015455c28c9fcb1eba.pnghttp://p6.qhimg.com/t015455c28c9fcb1eba.png

图2-2-10 藏有最新版本Bot程序的图片

 http://p8.qhimg.com/t01ef049dfa739a390b.png

图2-2-11 图片中监测到的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。

 http://p6.qhimg.com/t0191c706fd02e126aa.png

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

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

 http://p5.qhimg.com/t011a001514f8b91760.png

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

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

 http://p9.qhimg.com/t011c7b343778626ddc.png

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

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

 http://p8.qhimg.com/t01d4546271c8faa62e.png

图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服务使用的端口)的数据包,推测可能是作者预留的尚未完善的功能。 

 http://p7.qhimg.com/t015b609b10120a553d.png

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

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

4. ServerAgent模块分析

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

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

 http://p0.qhimg.com/t01f83123a9f4f9e044.png

图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部分内容如下图所示。

 http://p5.qhimg.com/t0101bc18eee87c545a.png

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

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

 http://p7.qhimg.com/t01b695a5ddac314f04.png

图2-4-3 ports键概览

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

 http://p9.qhimg.com/t0118b7b42fc88fe8f9.png

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

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

 http://p3.qhimg.com/t01da230748519c4888.png

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

 http://p1.qhimg.com/t013f5ef6fc7e70bd32.png

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

 http://p4.qhimg.com/t01473c0f208f549c8e.png

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

5. Cracker模块分析

Cracker模块是Bot程序中最重要的模块。该模块用于入侵目标计算机并在目标计算机上执行恶意代码。Cracker模块分为多个小模块,在分析的样本中包括Cracker:CCTVCracker:mssqlCracker:RDPCracker: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。

 http://p0.qhimg.com/t010c943a94e89c575d.png

图2-5-1 恢复xp_cmdshell

2. 开启被禁止的xp_cmdshell。

 http://p0.qhimg.com/t01f53e4ddc40d6e639.png

图2-5-2 开启xp_cmdshell

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

 http://p1.qhimg.com/t01b67fcfa661c17c00.png

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

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

 http://p4.qhimg.com/t01a58e65ce4db6316f.png

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

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

 http://p8.qhimg.com/t0193749b1948b73441.png

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

6. 通过沙盒执行shell。

 http://p9.qhimg.com/t01e364a301b86bff6f.png

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

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

 http://p6.qhimg.com/t01be0da6e6f83feb91.png

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

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

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

 http://p3.qhimg.com/t012f22df6c0fa3ef29.png

图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,并在该文件中写入内容。

 http://p0.qhimg.com/t0158ee429b8cd0fbc6.png

图2-5-9 创建PerfStringse.ini

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

 http://p3.qhimg.com/t01d8a3abfc1bbbf33e.png

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

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

 http://p7.qhimg.com/t01e06015e08873bb46.png

图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中。

 http://p2.qhimg.com/t0166976a7a7a7a8bfa.png

图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程序也将启动。

 http://p3.qhimg.com/t01c377a6d12d4f78ae.png

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

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

 http://p8.qhimg.com/t01598db416b878af02.png

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

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

 http://p2.qhimg.com/t011da7dfa91f8946fb.png

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

 http://p3.qhimg.com/t016918bc57a43ba6d7.png

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

 http://p2.qhimg.com/t011138a6fbf3e6ac29.png

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

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

 http://p7.qhimg.com/t010030e40f50255f98.png

图2-5-18 msinfo.dat内容

 http://p8.qhimg.com/t0165cb4f5fe7f7f86a.png

图2-5-19 msinfo.bat内容

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

 http://p5.qhimg.com/t014a55ef65648df70f.png

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

 http://p7.qhimg.com/t0152e6547a303b4df6.png

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

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

 http://p1.qhimg.com/t01f431a3c7983aaac5.png

图2-5-22 添加SQL SA

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

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

 http://p2.qhimg.com/t01cc51bf0f523db29c.png

图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分钟执行一次,猜测作者将挖矿机保存到此目录下是为了保证挖矿机能够稳定运行。

 http://p5.qhimg.com/t0118c55b6f56998881.png

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

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

 http://p7.qhimg.com/t019d7c7021a093664f.png

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

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

 http://p8.qhimg.com/t01714f4630a895a9d7.png

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

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

 http://p8.qhimg.com/t01a5b41130d0de83d3.png

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

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

 http://p5.qhimg.com/t01ee2d5c6bbd53c862.png

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

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

 http://p9.qhimg.com/t01b28a3938cbf03605.png

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

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

 http://p2.qhimg.com/t01146bc1a726a1654d.png

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

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

 http://p4.qhimg.com/t01f4594734e36e87ce.png

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

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

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

 http://p1.qhimg.com/t01a4700a5ee34b69c4.png

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

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

 http://p3.qhimg.com/t0155280bae2732f982.png

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

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

 http://p4.qhimg.com/t01a616b188e078bb3e.png

图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并将其转化为十六进制字节码的形式。

 http://p7.qhimg.com/t01d4c6683301008f77.png

图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)。

 http://p6.qhimg.com/t0163e7a087957763db.png

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

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

 http://p6.qhimg.com/t01311a20a1e244fdda.png

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

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

 http://p6.qhimg.com/t01b5a531a72fa3f52c.png

图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模块只是进行爆破而未加入任何入侵以及代码执行的功能。

 http://p6.qhimg.com/t01a62ed5b6c3a7e643.png

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

5.4  Cracker:CCTV

Cracker:CCTV模块是一个CCTV摄像头入侵模块。该模块会向

http://Targetip:port/shell?...

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

 http://p6.qhimg.com/t01dce0eca478a4ec25.png

图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。

 http://p6.qhimg.com/t01d3b9d6a6d33cb895.png

图2-5-41 Cracker:MySQL模块

 http://p5.qhimg.com/t0174e12d86aba814cd.png

图2-5-42 Cracker:SSH模块

 http://p1.qhimg.com/t0156418ecee17a7634.png

图2-5-43 Cracker:WMI模块

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

6. cService模块分析

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

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

 http://p9.qhimg.com/t01d0c0d38d17503d4e.png

图2-6-1 创建Bot服务

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

 http://p4.qhimg.com/t018cfe57c7ec17f8dc.png

图2-6-2 删除Bot服务

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

 http://p9.qhimg.com/t01aaddfcfa4cde2ace.png

图2-6-3 启动Bot服务

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

 http://p4.qhimg.com/t015ee224fd6ff875b8.png

图2-6-4 停止Bot服务

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

 http://p2.qhimg.com/t011c0915cb8e86b948.png

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


第三部分 防御总结

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

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

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

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

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

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

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


附录

1. 相关文件MD5

MD5

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

2. 相关ip地址和域名

ip地址、域名

67.229.144.218
13.59.110.123
209.58.186.145
www.cyg2016.xyz
js.mys2016.info
down.mys2016.info
ftp.oo000oo.me
wmi.oo000oo.club
down.oo000oo.club
js.f4321y.com
up.f4321y.com
wmi.mykings.top
js.mykings.pw
xmr.5b6b7b.ru
js.5b6b7b.ru
64.myxmr.pw

3. 密码字典

MySQL

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

Telnet

!!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

ssh

root
root root
root 123
root 123456
root i826y3tz
root password
ubnt ubnt
ubnt admin
root gwevrk7f@qwSX$fd

wmi

administrator

RDP

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

本文由360安全卫士原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/86751

安全客 - 有思想的安全新媒体

分享到:微信
+12赞
收藏
360安全卫士
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66