早在2022 年 2 月 1 日,unit42观察到针对乌克兰一家能源组织的攻击。 CERT-UA 公开将这次攻击归咎于 UAC-0056 组织。这次有针对性的攻击包括一封发给该组织一名员工的鱼叉式网络钓鱼邮件,邮件使用了一个社会工程主题。这封邮件附带了一个Word文档,其中包含一个恶意JavaScript文件,可以下载并安装一个名为SaintBot(下载软件)和OutSteel(文件窃取软件)的有效负载。研究人员发现,这次攻击至少可以追溯到2021年3月,当时研究人员发现,该组织的目标是乌克兰的一个西方政府实体,以及几个乌克兰政府组织。
OutSteel工具是一种简单的文件窃取工具。它根据文件类型搜索可能的敏感文档,并将文件上传到远程服务器。OutSteel的使用可能表明,该威胁组织的主要目标是收集涉及关键基础设施的政府组织和公司的数据。SaintBot工具是一个下载器,它允许攻击者下载并在受感染的系统上运行其他工具。SaintBot为攻击者提供了对系统的持久访问,同时授予了进一步增强其攻击的能力。
虽然 OutSteel 和 SaintBot 有效负载在攻击中很常见,但攻击者使用不同的社会工程主题和感染链来破坏系统。攻击者利用时事和其他相关主题诱骗收件人打开文档、单击链接、启用恶意内容或直接运行可执行文件来破坏他们的系统。 2021 年 3 月和 2021 年 4 月的早期攻击使用加密货币和 COVID 主题,而在2021年5月至7月和2022年2月的攻击中,我们观察到攻击者使用了执法相关主题和虚假简历。在持续数月的攻击中使用与执法相关的主题表明,在没有热门话题或当前事件的情况下,威胁组织更喜欢这种社会工程主题。
使用电子邮件作为攻击载体在该威胁组织进行的所有攻击中保持不变。虽然鱼叉式网络钓鱼邮件是一个常见的组件,但每次攻击都使用一个略有不同的感染链。例如,攻击者在钓鱼邮件中包含了指向包含恶意快捷方式(LNK)的压缩文件的链接,PDF文档、Word文档、JavaScript文件和控制面板文件(CPL)可执行文件形式的附件。甚至电子邮件附带的Word文档也使用了各种技术,包括恶意宏、嵌入JavaScript和利用CVE-2017-11882来安装有效负载到系统上。除了CPL可执行文件外,大多数传播机制都依赖于PowerShell脚本从远程服务器下载和执行代码。
钓鱼邮件有以下特点:
该电子邮件表明该攻击者参与了攻击活动,这可能是该攻击者为说服目标个人打开附件而进行的社会工程努力的一部分。恶意Word文档显示如下内容:
附件的内容也与邮件的主题一致,因为它似乎是乌克兰警察的一份经过编辑的刑事调查报告。该文档指示用户单击带有感叹号的图标,以显示文本上被黑色条隐藏的修订内容。每一个被认为是编辑过的内容片段都有一个图标,当双击时,会运行嵌入在文档中的恶意JavaScript (SHA256: b258a747202b1ea80421f8c841c57438ffb0670299f067dfeb2c53ab50ff6ded)。当用户双击图标时,Word会将以下文件写入系统,并使用Windows脚本主机(wscript)运行它:
JavaScript文件将运行以下进程,然后运行PowerShell脚本:
PowerShell one-liner
上面的 PowerShell one-liner 将从以下 URL 下载一个可执行文件,将其保存到 %PUBLIC%\GoogleChromeUpdate.exe 并执行它:
根据CERT-UA的说法,这个PowerShell one-liner程序也出现在1月31日发生的另一次攻击中。
根据我们对这次鱼叉式网络钓鱼攻击导致的有效负载的分析,其中包括SaintBot下载程序和OutSteel文件窃取程序,我们怀疑这个威胁组织的攻击目标涉及从能源组织窃取数据。
CERT-UA发现,他们使用名称UAC-0056来跟踪这个活动,研究表明,这些攻击与之前针对乌克兰和格鲁吉亚的其他组织以及其他国家在乌克兰本土的资产的攻击活动有不同程度的重叠。这些重叠涉及使用SaintBot下载程序、共享基础设施和其他公共元素。下图显示了与该组织相关的已知攻击的时间表,具体地说,是发送鱼叉式网络钓鱼邮件的日期以及每封邮件的主题行。
已知的与UAC-0056有关的攻击时间表,显示了鱼叉式钓鱼邮件的发送日期和主题行
时间表显示,2021年4月至7月期间发生了几起攻击。附录 A 中提供了与 UAC-0056 相关的已知先前攻击的详细信息。附录中描述的攻击包括:
2021 年 3 月:使用比特币和 COVID 主题针对格鲁吉亚目标的攻击活动;
2021 年 4 月:针对乌克兰政府组织的以比特币为主题的鱼叉式网络钓鱼电子邮件;
2021 年 5 月:针对乌克兰政府组织的以执法为主题的攻击;
2021 年 6 月:针对乌克兰政府组织的执法主题攻击;
2021 年 7 月:在乌克兰对西方政府实体进行鱼叉式网络钓鱼尝试。
2月2日攻击的有效负载分析
如上所述,攻击者利用Discord的内容传播网络(CDN)来托管他们的有效负载,这是威胁组织在其许多攻击中使用的常用技术。 Discord 的使用使威胁行为者受益,因为 Discord 的服务器在游戏、社区团体和其他合法用途中的流行导致许多 URL 过滤系统对其域高度信任。 Discord 的服务条款不允许恶意使用其 CDN,该公司一直在努力寻找并阻止对其平台的滥用。
在此攻击中,该URL托管了一个恶意可执行文件(SHA256: f58c41d83c0f1c1e8c1c3bd99ab6deabb14a763b54a3c5f1e821210c0536c3ff),它是一个加载程序。这是整个感染链中几个阶段的第一阶段,每个阶段都有不同程度的复杂性。最终,这个感染链会导致安装和执行一个名为 OutSteel 的文档窃取程序、一个名为 SaintBot 的加载程序木马、一个批处理脚本变成一个禁用 Windows Defender 的可执行文件和一个合法的 Google Chrome 安装可执行文件。
初始加载程序
传播文档中最初由 JavaScript 下载的可执行文件是一个初始加载程序木马,其开发人员使用组织字段中包含“Electrum Technologies GmbH”的证书(SHA1:60aac9d079a28bd9ee0372e39f23a6a92e9236bd)签名。这与 Electrum 比特币钱包有关,如下所示:
这个第一阶段加载程序是接下来几个阶段的简单包装程序,这些后面的阶段将在将DLL加载到内存并调用其入口点之前,从其资源中简单地解密DLL。
加载解密的SHCore2.dll并调用入口点
用于打包和混淆此初始加载程序的打包程序允许用户从其他 .NET 二进制文件以及复制证书中复制 .NET 程序集。这解释了如何从合法库以及附加的 Electrum 证书中获取大部分有效负载。
解密后的名为 SHCore2.dll 的 DLL 也被混淆了,但有趣的是,混淆程序并没有完全删除类名,如下图所示。这使我们能够快速收集有关示例函数的一些信息。虽然看起来 DLL 是最终的有效负载,但它只是另一个阶段,它将解密并执行总共四个嵌入的二进制文件。
SHCore2.dll类
其中包含一些有趣的反分析功能,拒绝在虚拟机内部执行,在某些情况下,在裸机系统上执行。虽然这使得执行动态分析变得困难,但在执行任何虚拟机检查之前,示例确实调用了Class5_Decrypter类中的函数,该类负责解密嵌入的有效负载。这允许我们调试示例,并在解密后提取这些有效负载。
在SHCore2.dll内存中解密“配置”文件
由阶段解密和执行的四个嵌入式二进制文件包括OutSteel, SaintBot,一个运行批处理脚本禁用Windows Defender和Google Chrome安装程序的可执行文件,如下表所示。
加载程序中的嵌入式二进制文件
与攻击相关的其他文件
下面是对初始加载程序执行后发挥作用的四个附加文件的更详细分析。
OutSteel
OutSteel是一个使用脚本语言AutoIT开发的文件上传和文件窃取程序。它与上表中列出的其他二进制文件一起执行。它首先扫描本地磁盘,搜索包含特定扩展名的文件,然后将这些文件上传到硬编码的命令和控制(C2)服务器。在此示例中,它到达的 C2 服务器是 185[.]244[.]41[.]109:8080,终端为 /upld/。
OutSteel主文件搜索循环
扫描是通过使用CMD命令来执行的,如下所示:
cmd.exe /U /C DIR " \Users\Admin\*.docx " /S /B/ A
OutSteel使用上面的命令收集的文件扩展名列表如下表所示,选择这些扩展名可能是为了收集潜在的敏感文件。这些文件类型包括Microsoft Office套件应用程序的文档、Microsoft Access数据库文件、Microsoft Outlook数据文件和各种归档文件类型。
OutSteel收集的文件扩展名
命令输出将由 AutoIT 有效负载读取,每个文件将使用 HTTP.au3 库上传到 C2。
脚本完成将所有相关文件上传到 C2 后,它将尝试从辅助硬编码 C2 eumr[.] 站点将文件下载到 %TEMP%\svjhost.exe。下载的有效负载是 SaintBot .NET 加载程序的示例,也是从 SHCore2 DLL 中提取的,如果下载成功,将通过命令行执行。
OutSteel下载SaintBot并执行rmm.bat
在当前目录中创建一个名为rmm.bat的.bat文件后,脚本就结束了,该文件将在终止任何正在运行的cmd.exe进程之前删除自身和原始负载。
rmm.bat文件内容
此时,AutoIT脚本退出,将SaintBot留在内存中。
windows_defender_disable.bat
此批处理文件用于禁用 Windows Defender 功能。它通过通过 CMD 执行多个命令来修改注册表项并禁用 Windows Defender 计划任务来实现这一点。此脚本是开源的,可在 GitHub 上获得,因此此特定示例没有自定义元素。这样做是为了降低 Windows Defender 检测到删除的有效负载的风险。
SaintBot .NET 加载程序
SaintBot .NET 加载程序也由几个阶段组成,具有不同程度的混淆。它首先执行单个 PowerShell 单行程序,这会导致执行 cmd.exe,并设置超时时间,一旦超时完成,加载程序将恢复。
PowerShell one-liner 的执行
加载程序的第一层将从其资源中提取一个经过逆向的 .NET 二进制文件,然后翻转、加载到内存中并执行它。
资源内的逆向二进制
第二层包含比第一层更多的混淆,还通过大约 140 个不同的类通过模糊来实现混淆。这些类中还存储了几个虚拟机和沙盒检查,例如检查加载模块列表中是否存在 Sbiedll.dll,将设备名与 HAL9TH 进行比较,将用户名与 JohnDoe 进行比较,以及检查 BIOS 版本是否存在已知虚拟设备标识符。
反虚拟机检查
绕过这些检查的最快方法是在Invoke()函数上设置一个断点,并修改内存中的任何值,以确保示例没有发现匹配的值。
一旦通过了所有检查,加载程序的第二阶段将从其资源中提取 SaintBot 二进制文件并对其进行解密。这样就可以开始加载不同的 API 调用,包括 VirtualAllocEx、WriteProcessMemory、CreateProcessA 和 SetThreadContext。这些调用用于在将解密的 SaintBot 二进制文件注入其中之前以挂起状态生成 MSBuild.exe,修改线程上下文以指向恶意入口点并恢复进程。
加载进程注入 API
SaintBot 有效负载
SaintBot 是最近发现的恶意软件加载程序,由 MalwareBytes 于 2021 年 4 月记录。它包含根据攻击者的请求下载更多有效负载的功能,通过几种不同的方式执行有效负载,例如注入生成的进程或加载到本地内存中。它还可以在需要时在磁盘上进行自我更新——并删除其存在的任何痕迹。
SHA-256:e8207e8c31a8613112223d126d4f12e7a5f8caf4acaaf40834302ce49f37cc9c
在 MSBuild 进程中执行后,SaintBot 将执行多项反分析检查以及区域设置检查。如果这些检查中的任何一个失败,名为 del.bat 的批处理脚本会被放到 %APPDATA% 文件夹中并执行,进而从系统中删除任何与 SaintBot 有效负载链接的文件。
系统区域设置检查
如果检查通过,有效负载尝试从%LOCALAPPDATA%\zz%USERNAME%路径中找到slidesshow .mp4,其中slidesshow .mp4实际上是ntdll.dll的副本。如果没有找到该文件,SaintBot会认为系统上还没有安装该文件,因此会跳转到安装过程。这涉及到在%LOCALAPPDATA%文件夹中创建一个目录,名称设置为zz%USERNAME%。然后,将本地的ntdll.dll二进制文件复制到新创建的文件夹中,并重新命名为slidesow .mp4。与此同时,删除了一个名为 %USERNAME%.vbs 和 %USERNAME%.bat 的 .vbs 和 .bat 脚本。安装例程完成后,有效负载将再次自行执行并退出。
设置SaintBot核心文件夹
如果在初始检查时发现 slideshow.mp4,则将其用于加载 ntdll.dll 提供的核心 API。这样做是为了避免 EDR/AV 软件对原始 ntdll.dll 中的 API 调用产生任何挂钩。
通过 slideshow.mp4 解析 API
此时,有效负载将检查它是否在进程名dfrgui.exe下运行,如果不是,它将从%SYSTEM%目录生成dfrgui.exe。然后使用NtQueueApcThread将这个生成的进程注入到dfrgui.exe中以恢复该进程,并终止原来的MSBuild进程。
注入dfrgui.exe
如果 SaintBot 在 dfrgui.exe 中运行,它将确认它是否以管理员权限运行。如果没有,它将尝试使用 fodhelper.exe 绕过 UAC。
通过 fodhelper.exe 提升权限
然后通过CurrentVersion\Run注册表项设置持久化,最后开始与C2服务器进行通信。这个示例中总共嵌入了三个C2服务器,它们都连接到同一个/wp-adm/gate.php终端。
硬编码 C2
这个特定的示例接受来自C2服务器的6个命令:
SaintBot命令
总结
Unit 42 研究发现了一个威胁组织,其目标是乌克兰关键基础设施,这次攻击只是攻击活动的一部分,不仅针对乌克兰政府组织,还针对外国驻乌克兰大使馆。该威胁组织传播了一个名为 OutSteel 的恶意负载,该负载能够自动窃取各种类型的文件,包括文档、档案、数据库文件和包含电子邮件相关数据的文件。根据目标组织的名单和文件窃取工具的使用情况,研究人员认为该威胁组织的主要目标是窃取敏感信息。
本文翻译自:https://unit42.paloaltonetworks.com/ukraine-targeted-outsteel-saintbot/如若转载,请注明原文地址