FortiGuard Labs 最近发现了一次复杂的网络攻击,攻击涉及嵌入了 VBA 宏的 Excel 文件,该宏旨在部署 DLL 文件。攻击者使用多阶段恶意软件策略来传递臭名昭著的“Cobalt Strike”有效载荷并与命令和控制 (C2) 服务器建立通信。这次攻击采用了各种规避技术来确保成功传递有效载荷。
过去几年,乌克兰因其地缘政治局势而成为重要目标。这些攻击的历史揭示了一种复杂性和频率不断增加的模式,尤其是在地缘政治紧张时期。例如,在 2022 年,FortiGuard Labs报告了一项使用以乌克兰军方为主题的恶意 Excel 文档来传递多阶段 Cobalt Strike 加载器的攻击活动。2023 年,乌克兰计算机应急响应小组 (CERT-UA)披露,UAC-0057 参与了一次攻击,该攻击使用包含宏和诱饵图像的恶意 XLS 文件在受感染的系统上部署 PicassoLoader 和 Cobalt Strike Beacon。
在本文中,我们将探讨此次最新多阶段攻击的技术细节。
图 2:启用 VBA 之前的 Excel 文档
一旦启用 VBA 宏,文档就会切换到与计算“分配给军事单位的预算资金金额”相关的工作表(翻译自“обсягу бюджетних коштів, що спрямовуються до військових частин”)。
图3:启用VBA后的Excel文档
VBA 宏的主要功能是部署 DLL 下载程序,该程序以十六进制编码。此外,VBA 代码中的大多数字符串都是十六进制编码的,以逃避基本的字符串检测机制。
图 4:“workbook_open()”函数
将 DLL 文件“Ac83faafb23919Ae9.DLl”放入“%APPDATA%VIBErpcbInbiN”后,该宏会在“%APPDATA%Microsoft”中创建一个名为“ACtIVePRObE”的快捷方式。
然后,它使用“Shell”命令执行“RunDLL32.EXE shell32.dll,ShellExec_RunDLL '%APPDATA%MicrosoftACtIVePRObE.lnk', 0”。此 LNK 文件旨在调用 regsvr32 来执行 DLL 文件“Ac83faafb23919Ae9.DLl”。
图5:创建LNK文件
图6:LNK文件
DLL 下载器
下载程序“Ac83faafb23919Ae9.DLl.”被ConfuserEx混淆。
图 7: DLL 下载器“Ac83faafb23919Ae9.DLl”
首先,它会检查进程名称中是否存在特定字符串:“processhacker”、“avastui”、“aswtoolssvc”、“wsc_proxy”、“procexp”、“overseer”和“avastsvc”。如果它检测到与分析工具或防病毒软件相关的匹配进程,则会终止该程序。
图8:检查进程名称
通过进程检查后,它会构建一个 Web 请求,从 URL“hxxps://goudieelectric[.]shop/cms/svg/6364.2809640e[.]chunk.svg”获取下一阶段有效负载。只有设备位于乌克兰时,它才能下载所需的文件。然后,它会提取以“href=”开头的部分中的 base64 编码数据,并将其与硬编码数组进行异或。然后,它会生成一个随机文件名,并将解码后的数据保存到 TEMP 文件夹。
图 9:构建 Web 请求
图 10:地理位置验证失败的 SVG 文件
图 11:地理位置验证成功的 SVG 文件
然后,它使用“rundll32.exe”执行解码后的文件,然后使用 sleep 命令等待执行完成。完成后,它会删除解码后的文件以消除任何痕迹。
图12:执行解码后的数据
解码后的数据也是一个.NET DLL 文件,其任务是解密文件以进行下一阶段的操作并建立持久性。
图 13:解码后的文件被 ConfuserEx 加壳
接下来,它会检查目标文件是否存在。如果不存在,它会创建文件“C:ProgramDataWindowsContainersBaseImages9cb03978-56d9-4f38-8f05-d1fdf135f0abFilesWindowsSystem32ResetEngine.dll”。然后,它会使用硬编码密钥通过 RC4 算法解密数据,并将数据写入新创建的文件中。
图 14:将 RC4 解密的内容写入新创建的文件中
然后,它将注册表值“C:WindowsSystem32regsvr32.exe /s C:ProgramDataWindowsContainersBaseImages9cb03978-56d9-4f38-8f05-d1fdf135f0abFilesWindowsSystem32ResetEngine.dll”添加到“SOFTWAREMicrosoftWidowsCurrentVersionRun”中以实现持久性,并使用 InvokeMethod 和“Create”在注册表中执行命令。
图 15:添加注册表
图16:执行“ResetEngine.dll”
DLL 注入器
文件“ResetEngine.dll”是解密和注入最终有效负载的核心组件。它使用“NtDelayExecution”来逃避对沙箱内恶意活动的检测。然后它会迭代检查进程并尝试终止父进程(如果有),以实施其反调试措施。
图17:延迟执行和反调试
逃避检测过程完成后,它会使用 AES 算法解密最终的有效载荷。
图18:解密数据
解密后,它将解密的数据注入自身,并使用各种 API,包括“GetCurrentProcessId”、“OpenProcess”、“VirtualAllocEx”、“WriteProcessMemory”、“CreateRemoteThread”和“WaitForSingleObject”来执行最终的 Cobalt Strike。
图 19:将 Cobalt Strike 写入内存
Cobalt Strike 载荷
配置提取过程涉及与 0x2E 进行异或运算,使我们能够解密其中隐藏的信息。通过提取和解析配置,我们发现了 Beacon 的 Cobalt Strike Team 服务器 (C2) URL:“hxxps://simonandschuster[.]shop/the-zero-residual-concept/products”和“hxxps://simonandschuster[.]shop/the-zero-residual-concept/sjj-solutions”。
图20:解码配置
图 21:Cobalt Strike 的 POST 请求
结论
在这次复杂的攻击中,攻击者采用多阶段恶意软件策略来阻止检测,同时确保操作稳定性。通过在有效载荷下载期间实施基于位置的检查,攻击者旨在掩盖可疑活动,从而可能逃避分析师的审查。利用编码字符串,VBA 隐藏关键的导入字符串,便于部署 DLL 文件以实现持久性并解密后续有效载荷。此外,自删除功能有助于逃避策略,而 DLL 注入器采用延迟策略并终止父进程以分别逃避沙盒和反调试机制。
这些精心策划的行动旨在将 Cobalt Strike 部署到目标终端,特别是在乌克兰地缘政治格局的范围内。由于 Office 文档提供了大量功能,包括大量插件和脚本,因此用户在处理来源可疑的文件时必须格外小心。警惕至关重要,特别是对于注册表设置中的任何可疑文件丢失或不熟悉的启动程序。
IOCS
文件:
88c97af92688d03601e4687b290d4d7f9f29492612e29f714f26a9278c6eda5b
815c1571356cf328a18e0b1f3779d52e5ba11e5e4aac2d216b79bb387963c2be
9649d58a220ed2b4474a37d6eac5f055e696769f87baf58b1d3d0b5da69cbce5
af8104e567c6d614547acb36322ad2ed6469537cd1d78ae1be65fbde1d578abc
de1bceb00c23e468f4f49a79ec69ec8ad3ed622a3ffc08f84c0481ad0f6f592b
6f4642a203541426d504608eed7927718207f29be2922a4c9aa7e022f22e0deb
d90f6e12a917ba42f7604362fafc4e74ed3ce3ffca41ed5d3456de28b2d144bf
d9b16f077cd6e00137ba208031d22fd6423d0ef303883ad4b6f78638693f2044
域:
goudieelectric[.]shop
simonandschuster[.]shop
https://www.fortinet.com/blog/threat-research/menace-unleashed-excel-file-deploys-cobalt-strike-at-ukraine
原文始发于微信公众号(Ots安全):威胁爆发:Excel 文件在乌克兰部署 Cobalt Strike 攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论