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

Track-聂风   ·   发表于 2018-08-14 10:58:26   ·   漏洞文章

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

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

ZombieBoy的执行流程概述如下:

zombie_6_620_348.png

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

zombie_1_620_332.png

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后门。 

zombie_2_618_153.png

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 

zombie_3_620_387.png

解密过程截图

一旦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”。 

zombie_4_620_538.png

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

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的不可靠、无信号、自动重置事件,句柄:0×84。

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会尝试运行新创建的服务。如果尝试成功,则继续主循环。如果不成功,则退出。

zombie_5_620_195.png

接下来,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  使用句柄0×90创建名为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\*


*本文作者:Hydralab,转载自FreeBuf.COM

打赏我,让我更有动力~

0 条回复   |  直到 2018-8-14 | 2794 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.