Gootkit Loader 的更新策略和 Cobalt Strike 的无文件交付
Gootkit Loader 的更新策略和 Cobalt Strike 的无文件交付
我们对异常 PowerShell 脚本的深入分析揭示了与 Gootkit 加载程序相关的入侵集。过去,Gootkit 使用免费软件安装程序来屏蔽恶意文件;现在它使用法律文件来诱骗用户下载这些文件。我们通过托管扩展检测和响应 (MxDR)以及调查 PowerShell 脚本的标志来发现这种策略,该标志使我们能够阻止它造成任何损坏并丢弃其有效负载。
众所周知,Gootkit 使用无文件技术来传递值得注意的威胁,例如 SunCrypt 和 REvil (Sodinokibi) 勒索软件、Kronos 特洛伊木马和 Cobalt Strike。2020 年,我们报道了 Gootkit 的能力。虽然它的行为与我们之前的报告中的行为大致相同,但更新揭示了它在近两年后的持续活动和发展。
攻击概述
与各种有效负载相关联后,我们可以假设 Gootkit 在访问即服务模型上运行。因此,不同的团体可以使用它来进行攻击,因此值得对其进行监控,以防止更大的威胁成功进入系统。
图 1 说明了其感染程序。它从用户在搜索引擎中搜索特定信息开始。在这种情况下,用户搜索了关键词“披露协议房地产交易”。结果中有一个被 Gootkit 运营商入侵的网站,这意味着用户打开这个被入侵的网站并不是偶然的。事实上,运营商通过使用搜索引擎优化 (SEO) 中毒来调整对他们有利的几率,使该网站在搜索结果中排名靠前,从而导致用户访问受感染的网站。这也意味着网站的 URL 将不会长时间可用,如果不立即进行全面分析将难以进行。
图 1. MxDR 看到的 Gootkit Loader 感染链
打开该网站后,我们发现它以在线论坛的形式出现,直接回答受害者的问题。该论坛包含一个包含恶意 .js 文件的 ZIP 存档。当用户下载并打开此文件时,它会生成一个混淆脚本,该脚本通过注册表填充,在注册表中安装了一大块加密代码,并添加了计划任务以实现持久性。然后通过 PowerShell 反射加载注册表中的加密代码,以重建 Cobalt Strike 二进制文件,该二进制文件直接在内存中无文件运行。
我们刚刚描述的大部分内容仍然与我们在 2020 年报告的行为一致,但有一些小的更新。这表明 Gootkit Loader 仍在积极开发中,并且已证明成功地破坏了毫无戒心的受害者。
有两个明显的变化:
- 搜索词现在利用法律文档模板而不是免费软件安装程序。
- 加密注册表现在使用自定义文本替换算法而不是 base64 编码。
被入侵的网站
跟踪用户的行为,我们现在可以查看攻击中访问的网站。众所周知,威胁参与者只是破坏易受攻击或配置错误的网站来植入他们的恶意软件或工具,而不是为他们的恶意操作创建或注册一个新的。在 Gootkit 的案例中,由于它破坏了合法域,所使用的网站很可能通过信誉服务。对于毫无戒心的用户来说,访问该网站不会引起怀疑,因为它对于歌唱和语音教练来说似乎是一个无害的网站。
图 2. 合法受感染网站的主页
专门对下载的文件执行谷歌搜索(“披露协议房地产交易”)表明该网站的内容与其所有者及其目的无关。此外,浏览网站的主页本身也找不到这些搜索结果链接。这是该网站已被入侵的证据,因为它允许攻击者注入或创建新的不相关的 Web 内容。当我们通过托管网站的Shodan查询 IP 地址时,我们还发现了更多漏洞证据。
图 3. 谷歌搜索显示网站中不需要的内容
这种策略对 Gootkit 来说并不是什么新鲜事。再加上 SEO 中毒,Gootkit 运营商可以将受害者聚集到一个受感染的网站,并诱使他们下载他们正在寻找的文件。对于这次事件,我们能够在 Gootkit 加载程序掉落其有效载荷之前停止其轨道。然而,用户已经访问了该网站,下载了恶意 ZIP 文件并打开了它。这些操作导致的异常 PowerShell 脚本提醒我们注意可能的恶意活动。在本次调查中,我们尝试拼凑如果 PowerShell 脚本没有被标记并被允许运行会发生什么。
调查分析
如前所述,用户访问了受感染的网站并使用 Google Chrome 下载了 ZIP 存档。根据 Trend Micro Vision OneTM 的记录,他们访问的确切 URL 如下:
hxxps://www[.]{域名}[.]co[.]uk/forum[.]php?uktoz=znbrmkp&iepdpjkwxusknzkq=3147417f829ff54ffe9acd67bbf216c217b16d47ac6a2e02c1b42f603121c9ad4b18757818e094bdd5aaaa54577
在撰写本文时,该 URL 不再可访问。但是,我们能够分析用户下载的 ZIP 存档。如前所述,它被命名为披露协议房地产交易(8321).zip。在另一个例子中,JavaScript 文件被命名为家庭成员之间的租赁协议 template(98539).zip。这两个文件名都强烈表明 Gootkit 使用了引用法律文档模板的关键字,可能会引诱用户下载文件。需要注意的是,这个选择的搜索词和主题是过去广告系列的显着变化之一。
图 4. Vision One 界面显示用户访问受感染网站并下载 ZIP 存档的证据
ZIP 存档已成功保存在下载文件夹C:\Users\{username}\Downloads\disclosure agreement real estate transaction (8321).zip 中。
图 5. ZIP 存档成功保存在用户的 Downloads 文件夹中
然后,用户打开了 ZIP 存档中的 .js 文件,该文件生成了一个混淆的 PowerShell 脚本。检测到的命令行包括 wscript.exe,Windows 操作系统的默认脚本解释器。此命令行运行恶意 JavaScript 文件。文件夹文件路径和文件名可以在这里看到:
C:\Windows\System32\WScript.exe
C:\Users\{username}AppData\Local\Temp\Temp1_disclosure 协议房产交易(8321).zip\disclosure_agreement_real_estate_transaction 3994.js
图 6. 通过 .js 文件生成的混淆 PowerShell 脚本
通过使用 Vision One 的 AMSI Telemetry,团队能够在运行时查看解码的脚本并构建它生成的事件顺序。在解码的脚本中,列出了三个可能受到威胁的域。域本身是合法网站。Gootkit 只选择一个并构造完整的 URL 以获取下一阶段的脚本执行。这里列出了三个域:
- learn[.]openschool.ua – 教育
- Lakeside-fishandchips[.]com – 餐厅和美食
- kristinee[.]com – 个人网站
图 7. Vision One 的 AMSI 遥测记录的解码脚本
对脚本进行解码也让我们发现,为了完成操作需要两个阶段的脚本。第一阶段脚本执行以下操作:
- 它检查注册表 HKCU\PJZTLE,如果找不到则创建它。正如我们在之前的博客中讨论的那样,这可以作为感染标记。
- 然后它会检查当前用户是否登录到可能用于绕过沙盒工具的域。
- 接下来,它连接到构造的 URL 以获取下一个要执行的脚本。对于这种情况,它从hxxps://learn[.]openschool[.]ua/test.php?mthqpllauigylit=738078785565141检索第二阶段脚本。
- 然后它会在运行获取的代码之前休眠 10 秒。
图 8. Vision One 的 AMSI 遥测记录的第一阶段脚本执行流程
从上述受感染网站检索到的第二阶段脚本完成了此处列出的信息:
- 它通过环境字符串获取当前用户名。
- 它检查目标注册表并在它不存在时创建它。它为持久性执行注册表填充,其中创建了两组注册表,每组都包含要在以后解码和执行的加密二进制文件:
- HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Phone\\{loggedOnUser}\\{consecutive numbers},其中包含使用自定义文本替换加密的二进制有效负载
- HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Phone\\{loggedOnUser}0\\{consecutive numbers},其中包含用于解码和执行第一个注册表的十六进制编码二进制文件
9. Vision One 的 AMSI 遥测记录的 \\Phone\\{loggedOnUser}\\ 上的注册表填充
图 10. Vision One 的 AMSI 遥测记录的 \\Phone\\{loggedOnUser}0\\ 上的注册表填充
在这两个阶段之后,它最终执行了两个同样由 AMSI Telemetry 记录的加密 PowerShell 脚本。第一个解密注册表\\Phone\\{loggedOnUser}0\\的二进制文件,并用于启动名为“Test”的函数。
图 11. Vision One 的 AMSI 遥测记录的解码的第一个 PowerShell 脚本
第二个 PowerShell 脚本通过计划任务安装持久性机制,将用户名分配为其任务名称。
图 12. Vision One 的 AMSI 遥测记录的解码后的第二个 PowerShell 脚本
计划任务在\Phone\{loggedOnUser}0注册表中加载二进制文件,然后使用相同的反射代码加载技术 解密并执行在\Phone\{loggedOnUser}注册表中找到的最终有效负载。
发现此实例的最终有效负载是 Cobalt Strike 二进制文件,该二进制文件也被发现连接到 Cobalt Strike 的命令和控制 (C&C) 服务器。
Cobalt Strike 有效载荷
Cobalt Strike 二进制文件以反射方式直接加载到内存中,已连接到 IP 地址 89[.]238[.]185[.]13。使用内部和外部威胁情报,团队验证 IP 地址是 Cobalt Strike C&C。Cobalt Strike 是一种用于后期开发活动的工具,它使用信标组件作为主要有效负载,允许执行 PowerShell 脚本、记录击键、截屏、下载文件和生成其他有效负载。
图 13. Cobalt Strike C&C 基于来自 Virus Total 的图表
安全建议
从这个案例中得到的一个关键结论是,Gootkit 仍然很活跃,并且正在改进其技术。这意味着该操作已被证明是有效的,因为其他威胁参与者似乎继续使用它。用户未来可能会在其他活动中遇到 Gootkit,并且它很可能会使用新的手段来诱捕受害者。
这种威胁还表明,SEO 中毒仍然是吸引毫无戒心的用户的有效策略。SEO 中毒和合法网站受损的结合可以掩盖恶意活动的迹象,这些迹象通常会让用户保持警惕。这种策略突出了用户意识的重要性以及网站所有者在确保其网络空间安全方面的责任。
组织可以通过对其员工进行用户安全意识培训来提供帮助,该培训旨在使人们能够识别并保护自己免受最新威胁的侵害。例如,在这种情况下,如果用户对下载 JavaScript 文件更加谨慎,则可以更早地避免威胁。另一方面,网站所有者必须通过选择强调自己服务器安全性的网络托管服务提供商来做出更好的网络托管选择。
这个案例凸显了 24/7 监控的重要性。值得注意的是,跨平台 XDR 阻止了这种攻击升级,因为我们能够迅速隔离受影响的机器,阻止威胁对网络造成进一步的损害。例如,Cobalt Strike 有效载荷可能会导致更严重的问题,例如勒索软件的部署、横向移动的凭证转储和数据泄露。托管 XDR 服务阻止了这一切的实现。
组织可以考虑使用Trend Micro Vision One,它提供了跨多个安全层检测和响应威胁的能力。它可以隔离通常是感染源的端点,直到它们被完全清洁或完成调查。
