深入解析新型加密货币挖矿恶意软件ZombieBoy

延续了2018年加密货币挖矿恶意软件的趋势,我发现了另一种类似于5月初发现的“MassMine”的挖矿恶意软件。我把这个家族称为ZombieBoy,因为它使用了一个名为ZombieBoyTools的工具来释放第一个dll。

与MassMiner类似,ZombieBoy也是一种利用漏洞进行传播的挖矿蠕虫。但也有与MassMiner不同的地方,ZombieBoy使用WinEggDrop而不是MassScan来搜索新主机。ZombieBoy目前仍在不断更新,我几乎每天能获取到新的样本。

ZombieBoy的执行流程概述如下:

ZombieBoy使用了多个运行HFS (http文件服务器)的服务器来获取有效载荷(payload)。经我确认的URL有如下几个:

l ca[dot]posthash[dot]org:443/ l sm[dot]posthash[dot]org:443/ l sm[dot]hashnice[dot]org:443/

此外,它似乎在dns[dot]posthash[dot]org中也有一个C2服务器。

漏洞利用

ZombieBoy在执行期间利用了多个漏洞:

l CVE-2017-9073,Windows XP和Windows Server 2003上的RDP漏洞 l CVE-2017-0143,SMB漏洞 l CVE-2017-0146,SMB漏洞

安装

ZombieBoy首先使用EternalBlue/DoublePulsar漏洞来远程安装主dll。用于安装这两个漏洞的程序被称为ZombieBoyTools,似乎源自中国。它使用简体中文作为自己的语言,并且已经被用来部署了多个中国恶意软件家族(例如,IRONTIGER APT版本的Gh0stRAT)。

ZombieBoyTools的截图

在成功执行DoublePulsar漏洞利用后,它会加载并执行恶意软件的第一个dll。这个dll的执行会导致从ca[dot]posthash[dot]org:443下载一个名为123.exe的文件,并将其保存到“C:\%WindowsDirectory%\sys.exe”,然后执行它。

设置

123.exe在执行时会进行多项操作。首先,它会从文件分发服务器下载第一个模块。根据对123.exe的代码分析,它将此模块引用为“64.exe”,但将其作为“boy.exe”保存到受害者设备上。在保存模块之后,它会对其进行执行。64.exe似乎负责分发ZombieBoy以及包含在其中的XMRIG矿工。

除了从其服务器下载模块外,123.exe还会释放并执行另外两个模块。其中一个模块在代码中引用为“74.exe”。它在受害者设备上保存为“C:\Program Files(x86)\svchost.exe”,这似乎是古老的Gh0stRAT的一种形式。

另一个模块在代码中引用为“84.exe”。它在受害者设备上保存为“C:\Program Files(x86)\StormII\mssta.exe”,似乎是一个未知来源的RAT。

64.exe

64.exe是ZombieBoy下载的第一个模块。64.exe使用了一些非常强大的反分析技术。首先,整个可执行文件使用了打包器Themida进行加密,这使得逆向工程变得非常困难。此外,在ZombieBoy的当前版本中,它会检测虚拟机,并在检测到虚拟机之后不再运行。

64.exe会将70多个文件释放到C:\Windows\IIS中,这些文件由XMRIG矿工、漏洞利用程序以及被它命名为CPUInfo.exe的自身副本组成。

64.exe通过连接到ip[dot]3222[dot]net来获取受害者的ip。然后使用WinEggDrop,一个轻量级TCP扫描程序来扫描网络,以寻找打开了端口445的更多的目标。它还会使用上面获得的IP以及本地IP来传播到本地网络以及公共IP网络中。

64.exe会使用DoublePulsar漏洞来安装SMB后门以及RDP后门。

DoublePulsar截图

另外,64.exe会使用XMRIG来挖掘门罗币(XMR)。在关闭minexmr.com上的一个地址之前,ZombieBoy以大约43KH/s的速度挖矿。根据当前的门罗币价格,这允许攻击者能够每月获得略高于1000美元的收入。

我已找到了另一个新地址,然而,ZombieBoy已经不再使用minexmr.com进行挖矿。

已知的地址:

l 42MiUXx8i49AskDATdAfkUGuBqjCL7oU1g7TsU3XCJg9Maac1mEEdQ2X9vAKqu1pvkFQUuZn2HEzaa5UaUkMMfJHU5N8UCw l 49vZGV8x3bed3TiAZmNG9zHFXytGz45tJZ3g84rpYtw78J2UQQaCiH6SkozGKHyTV2Lkd7GtsMjurZkk8B9wKJ2uCAKdMLQ

通过使用strace,我发现64.exe正在获取有关受害者的信息,例如枚举操作系统的体系结构。

74.exe

74.exe是第一个被123.exe释放的模块,也是整个恶意软件的第二个模块。74.exe的基本功能是负责下载、解密和执行一个名为NetSyst96.dll的Gh0stRat dll。另外,74.exe还解密了一系列要传递给Netsyst96.dll的参数。

参数中的arguments对象如下:

1. Dns.posthash.org 2. 127.0.0.1 3. 5742944442 4. YP_70608 5. ANqiki cmsuucs 6. Aamqcygqqeqkia 7. Fngzxzygdgkywoyvkxlpv ldv 8. %ProgramFiles%/ 9. Svchost.exe 10. Add 11. Eeie saswuk wso

解密过程截图

一旦74.exe解密了参数,它就会检查NetSyst96.dll是否已下载并保存到了C:\Program Files\AppPatch\mysqld.dll。它通过调用CreateFileA并将CreationDisposition设置为Open_Existing来完成此操作。如果找不到mysqld.dll,74.exe将打开与ca[dot]posthash[dot]org:443/的连接,并下载NetSyst96.dll,将其保存为C:\ProgramFiles\AppPatch\mysqld.dll。

NetSyst96.dll有两个导出函数:DllFuUpgraddrs和DllFuUpgraddrs1。在将NetSyst96.dll保存为mysqld.dll后,74.exe会在NetSyst96.dll中找到DllFuUpgraddrs,在调用它之前。

NetSyst96.dll

NetSyst96.dll通常是被加密的,对解密后的文件的分析返回了一些有趣的字符串,可用于识别它。例如,“Game Over Good Luck By Wind”和“jingtisanmenxiachuanxiao.vbs”。

字符串截图展示了一些被释放的文件

NetSyst96.dll可以捕获用户的屏幕截图、录制音频,甚至可以编辑剪贴板。此外,对字符串的分析显示,它导入了键盘按键,这是键盘记录程序的典型特征。首先,Netsyst96.dll会获取环境字符串路径并使用它创建路径C:\Program files (x86)\svchost.exe。接下来,使用CreateToolhelp32Snapshot和NetSyst96.dll在运行的进程中搜索Rundll32.exe,以确定它是否是第一次运行dll。

对于第一次运行,NetSyst96.dll进行了几项操作来创建持久性:

l 将74.exe的副本保存为C:\ProgramFiles(x86)\svchost.exe。

l 使用System/CurrentControlSet/Services/ANqikicmsuucs将“ANqiki cmsuucs”注册为服务。

l 启动服务后,运行svchost.exe。

l 将MARKTIME添加到注册表项,添加上次启动的时间。

l 使用来自CreateToolhelp32Snapshot的快照来搜索正在运行的svchost.exe进程。

l 如果未找到,则会启动它并返回搜索svchost.exe。 l 如果找到一个,将维持svchost.exe的运行。 l 如果找到多个,会调用一个函数来创建一个vbs脚本,以删除额外的svchost.exe。

在连续运行时,NetSyst96.dll更关心的是连接到C2服务器:

1. 查找并验证“System/CurrentControlSet/Services/ANqiki cmsuucs”是否存在。

a) 如果不存在,它会创建一个这样的键值。 b) 如果存在,则会往下执行步骤2。

2. 创建名为“Eeie saswuk wso”的事件。

3. 枚举并更改输入桌面。

4. 将C2服务器IP传递给C2 URL(dns[dot]posthash[dot]org)。

5. 启动WSA(winsock 2.0)。

6. 连接到www[dot]ip123[dot]com[dot]cn并获取dns[dot]posthash[dot]org的ip。

a) 实际的IP可能会发生变化,但到目前为止仍是211.23.47[dot]186。

7. 重置事件。

8. 连接到C2服务器并等待命令。

虽然触发此函数的命令未知,但我确实发现了一个包含31个选项的switch-case,它似乎是NetSyst96.dll的命令选项。有关这个31个选项中部分选项的深入分析,请参阅附录。

84.exe

84.exe是由123.exe释放的第二个模块,也是整个恶意软件的第三个模块。与74.exe类似,它似乎是一个RAT。然而,这也是唯一的相似之处。与74.exe不同,84.exe不需要下载任何其他库,而是从其自己的内存中解密并执行Loader.dll。此外,84.exe会使用一个函数来解密Loader.dll,包括为每个需要解密的字符抛出异常。

其他运行信息:

· 将用户的环境字符串设置为C:\Program Files(x86)\StormII\。

此外,一旦调用了Loader.dll,84.exe就会通过一个名为“Update”的函数将一系列变量传递给Loader.dll。

变量:

1. ChDz0PYP8/oOBfMO0A/0B6Y=

2. 0

3. 6gkIBfkS+qY=

4. dazsks fsdgsdf

5. daac gssosjwayw

6. |_+f+

7. fc45f7f71b30bd66462135d34f3b6c66

8. EQr8/KY=

9. C:\Program Files(x86)\StormII

10. Mssta.exe

11. 0

12. Ccfcdaa

13. Various integers

在传递给Loader.dll的字符串中,有三个是加密的。解密后的字符串如下:

1. [ChDz0PYP8/oOBfMO0A/0B6Y=] =”dns[dot]posthash[dot]org”

2. [6gkIBfkS+qY=] =”Default”

3. [EQr8/KY=] = “mdzz”

Loader.dll

Loader.dll是一个具有一些有趣功能的RAT,例如搜索CPU写入速度的能力,以及搜索系统中的防病毒软件。

它由84.exe启动,Loader.dll执行的第一件事是从84.exe中的“Update”获取变量。此时,Loader.dll创建了几个重要的运行时对象(runtime object):

l 名为Null的不可靠、无信号、自动重置事件,句柄:0x84。 l 用于执行操作DesktopInfo的函数的线程。 l 一个具有句柄0x8C和标记DF_ALLOWOTHERACCOUNTS的inputDesktop,它被设置为调用线程的Desktop。

然后,Loader.Dll会在SYSTEM/CurrentControlSet/Services/Dazsks Fsdgsdf中搜索系统中的“dazsksfsdgsdf”,用于确定这是否是第一次运行恶意软件。

首次运行:

l Loader.dll会使用ImagePath = C:\Program Files(x86)\StormII\mssta.exe来创建服务DazsksFsdgsdf。 l Loader.dll会尝试运行新创建的服务。如果尝试成功,则继续主循环。如果不成功,则退出。

接下来,Loader.Dll将进行以下操作:

l 使用参数DazsksFsdgsdf启动services.exe服务。 l 继续第一次运行中提到的主循环。

在检查了循环序号之后,Loader.dll将进入程序的主循环。

主循环:

l 创建一个名为“ccfcdaa”的不可靠、自动重置、无信号的事件,句柄为0x8C。 l 解密ChDz0PYP8/oOBfMO0A/0B6Y=to ‘dns[dot]posthash[dot]org’。 l 启动WinSock对象。 l 使用句柄0x90创建名为null的不可继承、无信号、手动重置事件对象。 l 汇编 Get 请求:“Get/?ocid = iefvrt HTTP/1.1”。 l 连接到dns[dot]posthash[dot]org:5200。 l 使用GetVersionEx获取有关操作系统的信息。 l 加载ntdll.dll并调用RtlGetVersionNumbers。 l 将System\CurrentControlSet\Services(null)保存到注册表。 l 获取套接字名称。 l 使用Hardware\Description\System\CentralProcessor\取CPU刷新速度 l 调用GetVersion以获取系统信息。 l 调用GlobalMemoryStatusEx以获取可用全局内存的状态。 l 使用GetDriveTypeA枚举从“A:/”开始的所有可用磁盘驱动器。 l 获取每个枚举驱动器上可用的总可用空间量。 l 初始化COM库。 l 使用marktime函数将当前时间追加到服务“dazsksfsdgsdf”。 l 获取在WOW64下运行的系统的系统信息。 l 使用大多数中文防病毒软件文件名和CreateToolHelp32Snapshot列表,创建正在运行的进程的快照,然后识别任何正在运行的防病毒程序。 l 解密EQr8/KY= to“mdzz”。 l 将上面获得的所有数据发送到在dns[dot]posthash[dot]org:5200中的C2服务器。

缓解措施

想要减轻ZombieBoy攻击所带来的影响的最佳方法是一如既往地避免被攻击,这就是为什么我建议你将系统更新到最新版本的原因。具体来说,MS17-010补丁将有助于阻断恶意软件的传播。

如果你被不幸被ZombieBoy感染了,那么你应该做的第一件事就是深呼吸几次。接下来,我建议使用你使用防病毒软件扫描你的系统。

在扫描完成之后,你应该找出并终止ZombieBoy当前正在运行的任何已知的进程,例如:

l 123.exe

l 64.exe

l 74.exe

l 84.exe

l CPUinfo.exe

l N.exe

l S.exe

l Svchost.exe (注意文件的位置。任何不来自C:\Windows\System32的Svchost.exe进程都应被终止)。

此外,删除以下注册表项:

l SYSTEM/CurrentControlSet/Services/Dazsks Fsdgsdf

l SYSTEM/CURRENTCONTROLSET/SERVICES/ANqiki cmsuuc

同样的,删除所有被恶意软件释放的文件,例如:

l C:\%WindowsDirectory%\sys.exe

l C:\windows\%system%\boy.exe

l C:\windows\IIS\cpuinfo.exe

l 在IIS中释放的70多个文件

l C:\Program Files(x86)\svchost.exe

l C:\Program Files\AppPatch\mysqld.dll

l C:\Program Files(x86)\StormII\mssta.exe

l C:\Program Files(x86)\StormII*

IOCs

样本

MD5

文件大小

IP

IOC

ZombieBoy[主Dll]

842133ddc2d57fd0f78491b7ba39a34d

82.4kb

-

-

123.exe

7327ef046fe62a26e5571c36b5c2c417

782.3kb

下载自: ca.posthash[dot]org:443

C:\%WindowsDirectory%\sys.exe

[Injector123]

785a7f6e1cd40b50ad788e5d7d3c8465

437.9kb

-

-

64.exe

79c6ead6fa4f4addd7f2f019716dd6ca

6.4MB

挖矿服务器: Minexmr.com 下载自: ca.posthash[dot]org:443/ sm.posthash[dot]org:443/

C:\windows\%system%\boy.exe C:\windows\IIS\cpuinfo.exe 漏洞利用必要的文件和 WinEggDrop被释放到 C:\windows\IIS

74.exe

38d7d4f6a712bff4ab212848802f5f9c

9.7kb

C2服务器: dns.posthash[dot]org:52009/

C:\Program Files(x86)\svchost.exe SYSTEM/CURRENTCONTROLSET/SERVICES/ANqiki cmsuuc

Netsyst96.dll

6de21f2fd11d68b305b5e10d97b3f27e

1.0MB

下载自: ca.posthash[dot]org:443/ C2服务器: Dns.posthash[dot]org:52009/

C:\Program Files\AppPatch\mysqld.dll,

84.exe

91ebe2de7fcb922c794a891ff8987124

334.7kb

C2 服务器: dns.posthash[dot]org:5200/

C:\Program Files(x86)\StormII\mssta.exe SYSTEM/CurrentControlSet/Services/Dazsks Fsdgsdf C:\Program Files(x86)\StormII*

Loader.dll

9a46a3ae2c3762964c5cbb63b62d7dee

135.2kb

C2服务器: dns.posthash[dot]org:5200/

SYSTEM/CurrentControlSet/Services/(null); 查询的文件: Hardware\Description\System\CentralProcessor\ ; SYSTEM/CurrentControlSet/Services/BITS;

*本文作者:Hydralab,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JadePeng的技术博客

jenkins X实践系列(1) —— 背景知识

Jenkins X 是一个高度集成化的CI/CD平台,基于Jenkins和Kubernetes实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整...

6132
来自专栏PhpZendo

什么是依赖注入

本文是依赖注入(Depeendency Injection)系列教程的第一篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:

2871
来自专栏张戈的专栏

零门槛!使用Docker快速部署ES集群

自从接触 Docker 之后,对 Docker 简直是爱不释手,做什么都是行云流水。遇到部署开源软件需求,第一时间想到的都是有没有现成的 Docker 镜像?能...

2.6K4
来自专栏技术博文

Linux下ps命令详解

linux上进程有5种状态:  1. 运行(正在运行或在运行队列中等待)  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)  3. 不可中断(...

3804
来自专栏Ceph对象存储方案

Ceph的磁盘管理tips

换盘的时候一定要验明正身,原生的ceph-disk方式对磁盘分区的信息标记实在是太粗糙,很容易看花眼,比如下面这个例子,虽然通过PARTLABEL可以区分jou...

2477
来自专栏禁心尽力

SpringBoot整合Mybatis之进门篇

已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结。        之前...

1.4K6
来自专栏程序猿DD

Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】

前言 在上一篇《服务容错保护(hystrix断路器)》的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的。而这些请求情况的...

2097
来自专栏向治洪

基于xmpp聊天室实现,国外牛人作品

XMPP的官网:http://xmpp.org/ 测试帐号注册:https://register.jabber.org PC端下载地址注册之后就会看到下载地址 ...

3365
来自专栏程序员互动联盟

linux设备驱动第四篇:linux驱动调试方法

上一篇我们大概聊了如何写一个简单的字符设备驱动,我们不是神,写代码肯定会出现问题,我们需要在编写代码的过程中不断调试。在普通的c应用程序中,我们经常使用prin...

48215
来自专栏FreeBuf

新手指南:DVWA-1.9全级别教程(完结篇,附实例)之XSS

* 本文原创作者:lonehand,转载请注明来自FreeBuf.COM 目前,最新的DVWA已经更新到1.9版本(http://www.dvwa.co.uk...

1.2K5

扫码关注云+社区

领取腾讯云代金券