正如我们在以前的博客中提到的那样,网络犯罪分子通常会将其攻击与时事联系起来。因此,不足为奇的是,我们注意到其中的另一个,其中一个特别使用伦敦的技术事件作为诱饵。
在2020年2月和2020年5月,我们观察到在基于.space和.xyz顶级域的新注册站点上托管的四个基于恶意宏的Microsoft Word文档。由于用于部署最终有效负载的相似策略,技术和过程(TTP),我们将这些攻击归因于同一威胁参与者。
据我们所知,最终的.NET有效负载以前从未在野外被观察到。它的代码段很小,与QuasarRAT重叠。但是,此代码未在运行时使用。我们已根据最终有效负载中的唯一字符串为该RAT分配了名称-ShellReset。
由于我们在野外观察到的实例数量有限,我们怀疑这是一种针对小批量的攻击。威胁行为者在这些攻击中使用的某些主题与原定于今年早些时候在伦敦举行的重要事件有关,包括5G Expo 和Futurebuild。
感染链涉及一些有趣的技术,例如在运行时使用受信任的Windows实用程序在终端上编译有效负载以绕过安全机制,以及从攻击者的服务器下载混淆后的源代码形式的下一个阶段。
在此博客中,我们详细介绍了分发策略和攻击的技术分析。
分销策略
与此运动有关的文档的第一个实例是在2020年2月24日找到的。该实例的托管网址为:hxxps://documentsharing.space/files/5G Expo.doc?clientEmail =
MD5哈希值:93f913f3b9e0ef3f5cedd196eae3f2ae
档案名称:5G Expo.doc
本文档的内容与5G博览会活动有关,该活动计划于2020年3月17日至18日在伦敦举行,如图1所示。
图1:启用宏后,本文档显示5G Expo 2020主题。
在同一天,我们在URL上的同一域中托管了另一个文档实例:hxxps://documentsharing.space/files/FutureBuild.doc?clientEmail =
MD5哈希值:b34b74effbd8647c4f5dc61358e1555f
档案名称:FutureBuild.doc
本文档的内容与本应于2020年3月3-5日在伦敦举行的Futurebuild 2020会议有关。该文件欺骗了内容,使其看起来像是本次会议的入场券,如图2所示。
图2:启用宏后,文档显示Futurebuild 2020主题。
在这两种情况下,用于承载文件的域都是documentharing [。] space。根据域的Whois记录,它已于2019年10月21日注册。
2020年5月观察到了来自同一威胁行为者的文档的后两个实例。
2020年5月19日,我们在URL上找到了一个托管的基于宏的恶意Word文档:hxxps:// misrmarket [。] xyz / files / Get%20Stared.doc?clientEmail =
MD5哈希值:7bebf686b6e1d3fa537e8a0c2e5a4bdc
档案名称:Get%20Stared.doc
本文档的内容是有关个人数据革命的消息,并包括合法站点的列表,如图3所示。
图3:该文档显示有关个人数据革命的消息。
经过进一步的研究,我们发现该文本是从合法网站datacoup.com复制的,如图4所示。攻击者出于社会工程目的使用这种策略使文件的内容看起来相关且合法。
图4:文档中显示的消息是从datacoup.com复制的。
用于承载此文档的网站是一个受骗网站anonfiles.com的欺骗,该网站允许用户匿名上传其文件。该欺骗站点和原始站点的用户界面之间存在细微差别。
图5显示了欺骗站点的用户界面。
图5:anonfiles.com欺骗版本的Web用户界面。
图6显示了原始站点的用户界面。
图6:原始站点anonfiles.com,以及与欺骗版本的区别。
标记为红色的位点区域不在欺骗域中。根据Whois数据,欺骗网站misrmarket [.xyz]已于2020年2月26日注册。
我们在托管文档的所有URL中观察到的常见模式是:“?clientEmail =”
URL的此参数包含目标用户的电子邮件地址。
宏的技术分析
打开基于宏的文档时,它将显示一条消息,要求用户启用宏以查看内容,如图7所示。
图7:文档显示的消息,要求用户启用宏。
启用宏后,将调用宏的Auto_Open()子例程,这将隐藏上图并显示与文档主题(5G Expo,Future Build 2020等)相对应的图像。 。
相关的宏代码部分在启用宏后取消隐藏图像,如图8所示。
图8:用于取消隐藏图像的宏代码。
出于分析目的,我们将使用带有MD5哈希的文件:7bebf686b6e1d3fa537e8a0c2e5a4bdc
宏的内容如图9所示。
图9:文档中的宏代码。
该宏代码执行的主要功能是:
- 它将工作目录和放置的文件的名称设置为ServiceHostV1000。
- 它包含嵌入在宏中的完整C#代码,这些代码将在运行时写入工作目录中的文件ServiceHostV1000.cs。在源代码级别混淆了C#代码。混淆很简单。仅混淆变量,类和方法的名称。
- 它将编译器目录设置为文件csc.exe在计算机上的位置。Csc.exe是C#代码的命令行编译器,默认情况下与Microsoft .NET框架一起安装。宏在计算机上搜索版本3.5和4.0.x。它根据计算机上安装的.NET Framework版本相应地设置编译器目录,如图10所示。
图10:用于在计算机上编译C#代码的宏代码。
- 它使用csc.exe和命令行参数“ -target:winexe -out:”编译代码。编译后的二进制文件将出现在“启动”目录中。
- 它将删除包含源代码的工作目录。
- 它执行编译的二进制文件。
AppLocker绕过
在这种情况下,使用MSbuild.exe来使用.csproj文件编译计算机上的代码,以此作为绕过windows安全机制(例如AppLocker和Device Guard)的方法。几年前,凯西·史密斯(Casey Smith)首次公开了这项技术。
.NET二进制文件分析
MD5哈希值:4e0f9f47849949b14525c844005bb567
档案名称:ServiceHostV1000.exe
.NET二进制文件的主要子例程如图11所示。
图11:.NET二进制文件的主要子例程。
下面是此.NET二进制文件执行的主要操作。
它将HTTP GET请求发送到URL:misrmarket [。] xyz / files / app-provider / getApp,并将Content-type请求标头字段设置为:“ application / json”。
图12显示了来自服务器的响应的内容,其中包含一个JSON文件。
图12:包含JSON数据的服务器响应。
此JSON文件包含三个键:
版本:设置为null。
csproj:包含编译C#项目时msbuild.exe使用的项目文件。
cs:包含在运行时需要编译的C#代码。
- C#代码使用DataContractJsonSerializer类来解析服务器的JSON响应并提取单个成员。.cs和.csproj文件被放置在%USERPROFILE% ServiceTaskV1001位置,文件名为w.cs和w.csproj。
- 为了编译C#代码,它使用msbuild.exe。在计算机上检查以找到msbuild.exe的.NET Framework版本是3.5和4.0.x版本,如图13所示。
图13:检查计算机上.NET Framework版本的代码部分。
基于.NET的RAT分析
有效负载的MD5哈希值:8f62d7499d5599b9db7eeddf9c01a061
系统信息收集
有效负载执行的第一个活动是收集有关系统的信息,如图14所示。
图14:用于收集系统信息的代码部分。
从计算机收集有关以下属性的信息:
- 机器人ID:机器的唯一标识符。此字段的计算将在本博客的后面部分详细介绍。
- CPU名称:处理器详细信息。
- RAM –计算机上安装的RAM总量。
- 用户名
- 主机名
- 系统驱动器名称
- 系统目录路径
- 正常运行时间
- 操作系统类型:此字段设置为Windows。
唯一漫游器ID的计算:有效负载首先计算将用于识别漫游器的机器的唯一标识符。它使用机器的各种属性来计算此ID,如下所述。
WMI查询输出中的一个=“ SerialNumber”字段:SELECT * FROM Win32_DiskDrive
b = WMI查询输出中的“名称”字段:SELECT * FROM Win32_Processor
c = WMI查询输出中的“ Manufacturer”和“ SerialNumber”字段:SELECT * FROM Win32_BaseBoard
d = WMI查询输出中的“ Manufacturer”字段:SELECT * FROM Win32_BIOS
通过链接上述所有值(a,b,c和d),然后计算MD5哈希值并使用所得MD5哈希值的前12个字符来计算最终ID。
可以表示为:MD5(a b c d)[0:12]
唯一的整数值15附加到其上以生成最终ID。
一旦从机器上收集了以上信息,它就会以HTTP POST请求的形式发送到服务器,如图15所示。
图15:代码部分,用于在命令与控制(C&C)服务器上注册bot。
该请求将发送到URL:hxxp:// theashyggdrasil [。] xyz / api / clients / identifyClient,并且Content-Type字段设置为“ application / json”。感染后的第一个网络请求用于使用具有唯一标识符的bot向攻击者的服务器注册。
网络请求如图16所示。
图16:在HTTP POST请求中发送到C&C服务器的系统信息。
C&C沟通
僵尸程序在服务器上注册后,它将GET请求发送到以下路径:/ api / orders / getOrders / <bot_id>以获取需要在机器上执行的命令。来自服务器的响应将采用bot解析的JSON格式。
处理C&C通信的子例程如图17所示。
图17:处理C&C通信的子例程。
该机器人支持四种操作,如下所述。
cmdExec:此操作允许攻击者在计算机上执行代码。通过解析JSON响应,检索具有两个成员的CmdReq结构:
shellId
命令
cmdExec操作的子例程如图18所示。
图18:处理cmdExec命令的子例程。
如果命令等于“ *** reset * shell ***”,则会在计算机上生成cmd.exe的新实例,如图19所示。
图19:用于产生新外壳的子例程。
对于任何其他命令,将使用同一外壳程序执行。
getDir:此命令可以检索计算机上特定路径中存在的所有文件的完整列表。
图20:处理getDir命令的子例程。
此信息将通过HTTP GET请求泄漏到服务器,该请求的路径为:/ api / files / onGetDirRun
uploadFile:此命令用于将文件从计算机上的给定路径上载到攻击者的服务器,如图21所示。
图21:处理uploadFile C&C命令的子例程。
AwsInfoRes是具有两个成员的类:
uploadUrl
fileKey
通过将HTTP GET请求发送到以下路径来从服务器检索此信息:/ api / assets / getAwsUploadUrl
从JSON响应中,提取uploadURL和fileKey值。
通过将HTTP PUT请求发送到AwsInfoRes对象的uploadURL成员中定义的URL,将提取文件。
getScreenshot:此命令使攻击者可以远程获取计算机的屏幕截图,如图22所示。
图22:处理getScreenshot命令的子例程。
QuasarRAT代码重叠
.NET二进制文件中有一小段代码,其代码与QuasarRAT重叠。重叠仅与QuasarRAT的StringHelper类一起使用。
图23显示了.NET二进制代码的这一部分代码。
图23:与QuasarRAT重叠的代码部分。
这些功能类似于QuasarRAT的StringHelper类中定义的功能。但是,在这种情况下,.NET二进制文件中不会调用其中的大多数功能。
云沙箱检测
图24显示了Zscaler Cloud Sandbox成功检测到此基于文档的威胁。
图24:Zscaler Cloud沙箱检测。
除了检测沙箱外,Zscaler的多层云安全平台还可以检测各个级别的指标,如下所示: Win32.RAT.ShellReset
结论
该威胁参与者利用与当前事件(例如会议和展览)相关的主题来传播基于宏的恶意文档。用户应在打开此类文件之前验证其来源。
作为额外的预防措施,用户不应为从不受信任的来源收到的Microsoft Office文件启用宏,因为这些宏具有在计算机上运行恶意代码的能力。
Zscaler ThreatLabZ团队将继续监视此攻击以及其他攻击,以帮助确保客户安全。
MITRE ATT&CK TTP映射
战术 | 技术 |
---|---|
T1064 | 文档中用于代码执行的宏。 |
T1127 | 使用MSBuild.exe通过受信任的Windows实用工具代理代码执行。 |
T1060 | 启动基于目录的持久性。 |
T1113 | 捕获桌面的屏幕截图。 |
TA0010 | 数据从计算机泄漏到服务器。 |
T1083 | 文件和目录发现。 |
T1059 | 使用cmd.exe在计算机上远程执行命令。 |
妥协指标(IOC)
基于宏的文档的哈希
93f913f3b9e0ef3f5cedd196eae3f2ae
b34b74effbd8647c4f5dc61358e1555f
7bebf686b6e1d3fa537e8a0c2e5a4bdc
1d94b086996c99785f78bf484295027a
托管文档的URL
hxxps://documentsharing.space/files/5G Expo.doc?clientEmail =
hxxps://documentsharing.space/files/FutureBuild.doc?clientEmail =
hxxps://misrmarket.xyz/files/Get Stared.doc
hxxps://consumerspost.xyz/files/Swissin-Voucher.doc
用于下载下一阶段的URL
hxxps://misrmarket.xyz/files/app-provider/getApp
hxxps://misrmarket.xyz/files/app-provider/getLatestVersion
hxxps://centeralfiles.xyz/files/app-provider/getApp
hxxps://centeralfiles.xyz/files/app-provider/ getLatestVersion
感染后域
theashyggdrasil.xyz
感染后域中使用的API端点
/ api / cmd / onCmdRun
/ api / clients / identifyClient
/ api / assets / onCreated
/ api / assets / getAwsUploadUrl
/ api / files / onGetDirRun
/ api / orders / getOrders /
翻译自原文https://www.zscaler.com/blogs/research/shellreset-rat-spread-through-macro-based-documents-using-applocker-bypass