导语:本文,我们将对攻击的每个步骤进行深入的技术研究,详细介绍恶意软件如何降低有效载荷、提升特权、建立持久性、安装与C2服务器通信以及如何通过路由器漏洞在网络中传播。
到目前为止,Cybereason Nocturnus团队在2019年已经发现了Glupteba木马的几种变体。 Glupteba最初于2011年被发现为恶意代理,它会在受感染设备生成垃圾邮件和点击欺诈流量。从那时起,它已通过几种不同的方法进行传播并用于多种攻击,包括直到2018年的Windigo行动。这些年来,该恶意软件已经成熟,成为了自己的僵尸网络的一部分,并通过广告软件进行传播。
Cybereason Nocturnus小组发现,最近的Glupteba变种在战术,技术和程序上与以前已知的有所不同。这些变体使用Golang编写,Golang是Google在2009年发布的一种开放源代码编程语言,它将多个感染层与各种攻击和工具结合起来,形成了一个完整的攻击。
Cybereason Nocturnus团队发现了Glupteba的多种变体,这些变体的攻击手段非常多,包括加密货币矿工和针对MikroTik路由器的模块。
本文,我们将对攻击的每个步骤进行深入的技术研究,详细介绍恶意软件如何降低有效载荷、提升特权、建立持久性、安装与C2服务器通信以及如何通过路由器漏洞在网络中传播。此外,我们还概述了Glupteba如何使用多种规避方法来避免检测,包括捆绑合法广告软件以感染目标计算机,以及使用live-off-land技术下载主要有效载荷。
Glupteba工具集的大部分是用Golang编写的,这是对恶意软件作者有利的新趋势,因为Golang只能在使用一个存储库的系统上进行编译,但仍可以在其他操作系统上执行。
与以前的变体一样,Glupteba使用rootkit隐藏其行为和工具库,此攻击利用EternalBlue漏洞在网络上的计算机之间传播。
Glupteba变体的介绍
2019年,Cybereason Nocturnus团队在多个客户环境中发现了Glupteba的变种。Cybereason平台能够探测到攻击的每个阶段并提供可见性,并防止任何破坏。然而,需要注意的是,对于那些没有适当安全工具的人来说,攻击是危险的。
根据ESET的遥测,自2017年初以来,Glupteba已在180个不同的国家或地区使用,尤其是乌克兰,俄罗斯和土耳其。在Cybereason,我们已经看到这种攻击袭击了整个亚洲。
在其最新的变体中,我们观察到Glupteba配备了加密货币矿工和路由器漏洞利用,以及用于将其工具箱隐藏在受感染主机上的root kit功能。它通过与合法广告软件下载捆绑并使用无文件技术,这样有效载荷就可以逃避检测,从而感染目标计算机。
攻击分析
Glupteba在目标计算机上的感染流程
初始感染和执行
攻击的初始感染媒介依然使用的是传统方法,包括插入一组流氓软件或合法软件和广告软件,在某些情况下,或者在某些情况下还会进行默默下载。 Cybereason Nocturnus小组观察到,大多数感染是通过在托管免费软件的网站上安装与Glupteba滴管捆绑在一起的广告软件而发生的。
最终用户正在执行的下载广告软件,如Cybereason平台所示
初始有效载荷和下载器:CSRSS.EXE
一开始,对恶意软件的静态检查并没有揭示它被打包的目的。除了在打包的可执行文件中相当常见的奇怪的节名之外,还有大量的可移植可执行(PE)节。还有少量的导入和少量有意义的字符串,这在打包的可执行文件中也很常见。
不同的可移植可执行文件部分
该恶意软件由自定义打包器打包,并在运行时使用PE Overwrite/Self注入对其自身进行打包。 PE Overwrite在恶意软件自己的进程内存中分配一个新区域,并将自定义存根写入其中。它将有效载荷解压缩到PE的各个部分,然后使用HeapAlloc,VirtualAlloc和VirtualProtect Windows API调用将执行转移到该部分。
解包的有效载荷
解包后,很明显可以看出有效载荷是用Golang编写的。 Golang恶意软件的首次出现是在2016年,当时基于Windows的Go恶意软件很少。实际上,Go恶意软件仍然被认为是罕见的,尽管自2016年以来,Go编写的恶意软件类型有所增加。
从2016年至今,用Golang编写的恶意软件的变种趋势
对恶意软件作者来说,用Go编写代码可能是一个优势,因为它可以在一个系统上使用一个存储库进行编译,但仍然可以在其他操作系统上执行。
来自解压后的Go恶意软件的可疑字符串,指示加密采矿,其他有效载荷等
执行后,将使用登录用户的权限启动初始恶意进程。对于以下屏幕截图,该用户具有本地管理员特权。
如Cybereason平台所示,具有管理特权的恶意软件的首次执行情况
Cybereason平台中显示的原始创建者过程
最初感染后,该恶意软件会生成具有较高系统级特权的自身副本。要获得这些特权,它将使用TrustedInstaller运行有效载荷,TrustedInstaller组是大多数Windows系统相关文件(例如,位于System32文件夹下的文件)的所有者组,这些资源上的访问控制列表仅允许TrustedInstaller帐户修改它们。
使用过多的特权(如系统级)运行,可使攻击者更强地控制受感染的计算机,并可能对网络进行控制。
注意:为了获得提升的系统级特权,威胁参与者需要具有本地管理员特权。
该恶意软件使用不同的技术绕过用户访问控制(UAC)并获得更高的完整性级别和特权。根据目标计算机的操作系统,可以采用两种技术。
该恶意软件创建并修改“HKCU\Software\Classes\mscfile\shell\open\command”注册表项以指向其自己的可执行文件,然后滥用CompMgmtLauncher绕过UAC并以管理权限运行。
该恶意软件会创建和修改“HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command”注册表项,并滥用fodhelper.exe。
这些漏洞利用是在没有特定权限的情况下篡改HKCU配置单元,这样可以成功提升恶意软件的特权。
在Cybereason平台中看到的CompMgmtLauncher UAC绕过
在Cybereason平台中看到了fodhelper.exe UAC绕过
在Cybereason平台中看到的TrustedInstaller被恶意使用的证据
如Cybereason平台所示,使用系统级特权派生的子进程
安装滴管
滴管程序执行几个过程以将其自身安装到目标计算机上:
1. 滴管程序会收集有关受感染设备的信息,并将其与其他硬编码的硬编码配置信息(例如要使用的C2服务器)组合在一起,以创建统一的配置数据库。它将数据库存储在注册表中的“HKCU\Software\Microsoft\TestApp”项下,该注册表项在其感染过程的后期阶段会被引用。
2. 滴管程序会创建 mutex \BaseNamedObjects\h48yorbq6rm87zot以确保其仅在系统上运行一次。
3. 滴管程序将自身复制到“C:\Windows\rss”文件夹下。
完成此操作后,它将成功的感染报告给它的命令和控制服务器。
该恶意软件将其配置信息存储在HKCU\Software\Microsoft\TestApp下的注册表中
该恶意软件创建了一个套接字,用来与weekdanys[.]com上的命令和控制服务器通信
在Cybereason平台中看到的对weekdanys[.]com的未解析DNS查找
建立一个立足点,命令和控制并进行恶意传播
该恶意软件使用schtasks.exe实用工具创建计划任务,以实现多个目标,包括持久性和其他工具的下载,它也指出一个执行任务启动C:\Windows\rss\csrss.exe.本身的过程。
第一项任务是建立滴管恶意软件的立足点,它使用下面的屏幕快照中的ON LOGON参数在用户登录计算机时执行任务。
在Cybereason解决方案中可以看到计划的任务创建
一个附加的计划任务将下载并执行另一个有效载荷,随后将其显示为一个附加的Glupteba层。为此,它将下图所示的命令传递给任务的工作。
如Cybereason解决方案中所示,用于下载附加PE有效载荷的计划任务创建
可以看出任务创建使用了certutil.exe,利用certutil.exe 把二进制文件(包括各种文件,exe可执行程序,图片,声音,mp3) 经过base64编码为文本,可以实现把这些文件嵌入到批处理代码中, certutil.exe通常被实施无文件恶意软件的威胁参与者滥用。
在本例中,威胁参与者使用“-urlcache”参数从远程服务器下载各种工具。它从命令和控制服务器 roundworld[.]club下载app.exe。该恶意软件使用taskeng.exe帮助certutil.exe获得持久性并开始执行。用户登录后,taskeng.exe将执行certutil.exe下载并运行删除的有效载荷。
certutil.exe作为taskeng.exe的子进程,如在Cybereason平台中所示
在整个攻击过程中,恶意软件会删除并将其存储在\AppData\Local\Temp\csrss文件夹下。
如在Cybereason平台中所见,恶意软件将工具放到\AppData\Local\Temp\csrss文件夹下
PATCH.EXE和DSEFIX.EXE
创建计划的作业后不久,将启动可执行程序patch.exe。 patch.exe是感染中的附加组件,用于绕过现有的安全控制。它是已编译的开源项目UPGDSED(通用PatchGuard和驱动程序签名强制禁用)的修改版本,这个工具的创建者已经开发了各种各样的工具来绕过微软的各种防御机制。
UPGDSED的核心是PatchGuard和驱动程序签名绕过器,它支持绕过Windows 7 SP1(包括Windows 7 SP1)之后的所有Windows版本。
安装细节详见项目的GitHub页面
编译后的项目二进制文件名为patch.exe,符合其在恶意软件中的命名约定。
patch.exe与Azure Blob通信以获取多个组件,包括dbghelp.dll和symsrv.dll。这种特定行为不是恶意操作的一部分,而是原始工具的运行方式。
在Cybereason平台中看到的Azure DNS请求
如Cybereason平台所示,从patch.exe到远程地址的通信
作为其删除库的一部分,该恶意软件可以访问三个恶意驱动程序文件,驱动程序文件负责在攻击期间的隐蔽性。
删除了在Cybereason平台上看到的恶意驱动程序文件
1. Winmon.sys隐藏了恶意软件进程;
2. Winmonfs.sys隐藏了由恶意软件创建的工具和文件夹;
隐藏的文件和目录功能
3.winmonprocessmonitor.exe监视并终止与可能检测到恶意软件的各种安全或分析解决方案有关的过程。
该恶意软件指在阻止某些进程
patch.exe可执行文件将恶意驱动程序文件滴管在System32文件夹中,并在下次重新启动时使用bcedit.exe将它们注册为活动驱动程序。 bcedit.exe是一个合法的Microsoft工具,可以修改Windows中的系统启动配置。
Patch.exe在Cybereason平台中生成bcedit.exe实例
Cybereason平台收集的bcedit.exe命令行
该恶意软件运行附加工具dsefix.exe,以绕过Microsoft驱动程序验证并安装其自己的驱动程序。
dsefix.exe与patch.exe一样,是同一项目下的开源工具。
GitHub页面上注明了dsefix.exe的项目细节
该恶意软件使用安全描述符定义语言(SDDL)和sc.exe实用程序来创建服务并为这三个恶意驱动程序设置权限。sc.exe是Windows中与Windows服务交互的默认实用程序。
csrss.exe执行sc.exe实用程序以设置权限,如Cybereason Platform中所示
Cybereason平台捕获的sc.exe命令行
cmd.exe /C sc sdset Winmon D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPLOCRSDRCWDWO;;;BA)(D;;WPDT;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) cmd.exe /C sc sdset WinmonFS D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPLOCRSDRCWDWO;;;BA)(D;;WPDT;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) cmd.exe /C sc sdset WinmonProcessMonitor D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPLOCRSDRCWDWO;;;BA)(D;;WPDT;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
该恶意软件使用上述安全描述符更改来保护自己,使其免受已安装的.sys驱动程序的修改,并获得更强大的立足点。通过这些更改,停止已安装的服务将不像以前那么容易。
(D;;WPDT;;;BA) breakdown: D - SDDL_ACCESS_DENIED WP - SDDL_WRITE_PROPERTY, ADS_RIGHT_DS_WRITE_PROP DT - SDDL_DELETE_TREE, ADS_RIGHT_DS_DELETE_TREE
通过更改这些安全描述符,恶意软件将拒绝对任何服务的写入和删除访问。
如下图的示例,在安全描述符更改之前,停止现有的Windows服务即可成功。
在实现安全描述符更改之前,停止现有的Windows服务
相反,更改安全描述符后,尝试停止现有Windows服务失败。
实施安全描述符更改后,停止现有的Windows服务
WINBOXLS-022502.EXE和WINDEFENDER.EXE
该恶意软件会启动另外两个有效载荷,即winboxls-0225-2.exe和windefender.exe。 winboxls-0225-2.exe是UPX打包的二进制文件,解压缩文件会发现另一个庞大的模块(超过4.5k个函数),这也是一个用Golang编写的加密货币矿工。
winboxls-0225-2.exe的功能之一是在环境中扫描可能存在漏洞的MikroTik路由器,它针对易受CVE-2018-14847和与MikroTik路由器交互的软件Winbox的路由器。此漏洞使未经身份验证的远程攻击者可以读取任意文件,而经过身份验证的远程攻击者可以写入任意文件。它于2018年中期被发现,并影响了全球超过一百万个MikroTik设备。
在Cybereason平台中看到的winboxls-0225-2.exe的执行
如果它识别出易受攻击的MikroTik路由器,则会使用CVE-2018-14847对其进行利用,并窃取可用于创建后门的管理凭据。
连接到WMI的恶意软件
恶意软件使用wmi查询来定位默认网关
该恶意软件使用winboxls-0225-2.exe发送数据包
利用winboxls-0225-2.exe的代码
winboxls-0225-2.exe扫描MikroTik端口8291的活动,如在Cybereason平台中所示
一旦所有可用的MikroTik路由器被利用,该恶意软件即会启动并伪装为Windows Defender Helper Service的windefender.exe进行安装。 windefender.exe会读取TestApp注册表项,并从命令和控制服务器获取另一个有效载荷app.exe。
如Cybereason平台所示,windefender.exe会进行自我安装
app.exe是一个附加的恶意软件层,它会读取注册表TestApp以获得有关命令和控制服务器的配置信息,并获取Glupteba的代理垃圾邮件组件cloudnet.exe。
cloudnet.exe通过创建注册表运行项(例如Run和RunOnce)来设置持久性后执行,每次用户登录时它们都会运行程序。建立持久性后,Glupteba开始生成垃圾邮件流量。目前,使用附加层获取有效载荷的确切原因尚不清楚。
由Cybereason平台收集的cloudnet.exe进程的证据
在Cybereason平台上看到的Glupteba产生的流量
初始滴管程序csrss.exe尝试进行自我更新,然后使用EternalBlue扫描网络以进行自我传播。
如Cybereason平台所示,App.exe尝试进行自我更新
从445端口打开了449个连接,这清楚表明在Cybereason平台中存在垃圾邮件流量
总结
Glupteba已经存在了很多年,但是仍在积极地开发和迭代中。基于研究人员目前已经观察到的各种工具和技术,很明显,恶意人员已经在改进恶意软件方面付出了巨大的努力。它实现了加密货币挖矿,并使用先进技术来获取访问权限和持久性。此外,它已经用Go(一种针对恶意软件作者的相对较新的语言)进行了重写,以扩大其覆盖范围。
同时,该恶意软件无法逃避检测并利用相互矛盾的技术。例如,该恶意软件使用驱动程序来隐藏文件和进程,但也使有效载荷保持可见或根本没有删除它们。大量的执行工具使这样的攻击不再像原来那么隐蔽了。
本文翻译自:https://www.cybereason.com/blog/glupteba-expands-operation-and-toolkit-with-lolbins-cryptominer-and-router-exploit如若转载,请注明原文地址: https://www.4hou.com/web/20911.html