APT29 再次发起针对欧洲外交官的网络钓鱼攻击

admin 2025年4月27日14:28:47评论9 views字数 6034阅读20分6秒阅读模式
Check Point Research 持续追踪与俄罗斯有关联的威胁组织 APT29 针对欧洲各地外交实体发起的高级网络钓鱼活动。此次活动疑似为之前利用 WINELOADER 后门攻击的延续,通过冒充欧洲主要外交部,发送虚假品酒活动等外交邀请函。攻击中运用了新型加载程序 GRAPELOADER,可通过钓鱼邮件链接下载;同时发现了 WINELOADER 新变种,可能用于攻击后期。GRAPELOADER 作为初始阶段工具,负责指纹识别、持久化和有效载荷投递;改进的 WINELOADER 变种仍是后期使用的模块化后门。二者虽功能不同,但在代码结构、混淆及字符串解密方面相似,且 GRAPELOADER 改进了 WINELOADER 的反分析技术,采用更先进隐身方法。
介绍
自 2025 年 1 月起,Check Point Research(CPR)持续追踪一系列针对欧洲政府及外交官的定向网络钓鱼攻击。经分析,此次攻击活动中的技术、战术和程序(TTP)与此前被俄罗斯关联威胁组织 APT29 实施的 WINELOADER 攻击活动高度相符。APT29 又名 “午夜暴风雪” 或 “舒适熊”,长期针对政府机构、智库等知名组织开展攻击,手段多样,涵盖有针对性的网络钓鱼,以及借助大量自定义和商业恶意软件的供应链攻击,臭名昭著的 SolarWinds 供应链攻击便与其有关。在当下这轮攻击中,威胁行为者伪装成欧洲某主要外交部,向目标发送葡萄酒品鉴活动邀请,引诱目标点击网页链接,进而部署名为 GRAPELOADER 的新后门,攻击目标主要指向欧洲外交机构,包含位于欧洲的非欧洲国家大使馆。同时,CPR 还在此次活动中检测到一个活跃的 WINELOADER 新变种,从编译时间戳以及与新发现的 GRAPELOADER 的相似性判断,该变种极有可能用于攻击后期阶段。
概述
约一年前 WINELOADER 攻击活动刚刚结束,APT29 便再度出击,发起新一轮网络钓鱼邮件攻击。他们冒充欧洲外交部,以官方名义发送葡萄酒品鉴活动邀请函。这些邮件暗藏恶意链接,点击链接后,部分情况会触发档案下载,最终完成 GRAPELOADER 恶意程序的部署;还有部分链接则会将用户重定向至被冒充外交部的官方网站,极具迷惑性。
APT29 再次发起针对欧洲外交官的网络钓鱼攻击
GRAPELOADER 感染的高级概述
这些恶意电子邮件至少源自 bakenhof [.] com 和 silry [.] com 这两个不同域名,发件人地址伪装成了外交部内的特定人员。每封邮件都暗藏一个恶意链接,一旦点击,便会启动名为 wine.zip 的文件下载,以此推进下一阶段攻击。值得注意的是,托管该链接的域名与发送邮件的域名一致。若首次诱骗尝试未成功,攻击者便会发送更多邮件,企图增加受害者上钩的几率,进而入侵其计算机。
电子邮件主题:葡萄酒活动葡萄酒品鉴会品酒活动(更新日期)大使日历外交晚宴
wine.zip 档案包含三个文件:
  • 合法的 PowerPoint 可执行文件, wine.exe可用于 DLL 侧加载。

  • 隐藏的 DLL, AppvIsvSubsystems64.dll其中充斥着垃圾代码,仅作为 PowerPoint 可执行文件运行所需的依赖项。

  • 另一个隐藏且经过严重混淆的 DLL ppcore.dll可充当加载器,称为 GRAPELOADER,因为它很可能在攻击的后期用于传递 WINELOADER。

一旦 wine.exe 执行并侧载 GRAPELOADER DLL,恶意软件便开始一系列恶意操作:它会将 wine.zip 存档内容复制到磁盘新位置,接着通过修改 Windows 注册表的 Run 键获取持久性,确保 wine.exe 在每次系统重启时自动执行。随后,GRAPELOADER 开始收集受感染主机的基本信息,如主机名和用户名,收集完毕后,这些数据会被发送至命令和控制(C2)服务器,等待接收并投递下一阶段的 Shellcode,进一步扩大对主机的控制与危害 。

在对 GRAPELOADER 网络钓鱼邮件的追踪调查中,研究人员在其相关路径附近发现一个新的 WINELOADER 变种已被提交至 VirusTotal 平台。经分析,该新变种与 AppvIsvSubsystems64.dll 拥有相同的 Rich-PE 标头,且编译时间戳极为接近,这强烈暗示它们同属一个攻击流程。过往攻击活动中,ROOTSAW 作为 HTA 下载程序,负责传播 WINELOADER,而在此次攻击中,GRAPELOADER 取代了 ROOTSAW。综合上述信息,研究人员推断,GRAPELOADER 最终会导向 WINELOADER 的部署。
技术分析

WINELOADER 作为 APT29 工具集中知名的模块化后门,早已被安全界熟知。与之不同,GRAPELOADER 是新发现的用于攻击初始阶段的工具,主要作用是对受感染环境进行指纹识别、建立持久化机制以及获取下一阶段有效载荷。尽管二者用途不同,但深入分析显示,新的 WINELOADER 变种与 GRAPELOADER 在代码结构、混淆技术以及字符串解密处理等方面存在诸多相似之处。

对比 WINELOADER 的新旧版本,可发现该后门处于持续演进状态,在保留核心功能的同时,对早期技术进行了优化改进。而 GRAPELOADER 不仅整合并强化了诸如 DLL 解钩、API 解析、代码混淆和字符串混淆等高级技术,还创新引入全新方法,大幅提升自身隐蔽性与攻击有效性 。

GRAPELOADER 以 64 位 DLL(ppcore.dll)的形式存在,其内部包含 PPMain 和 DllGetLCID 这两个导出函数。其中,DllGetLCID 函数充斥着变异的垃圾代码,由在大型循环中进行耗时数学运算的有效指令构成,其主要作用似乎是增加代码量。类似的技术也曾应用于 AppvIsvSubsystems64.dll,该文件仅作为 PowerPoint 可执行文件运行的必需依赖项,而真正触发恶意执行的则是 wine.exe 中的 PPMain 函数。

这个 DLL 借助 wine.exe 的延迟导入来实现 DLL 侧载执行,wine.exe 在此过程中充当初始阶段的下载程序。值得注意的是,由于执行是通过导出 PPMain 函数而非 DllEntryPoint 函数来完成的,所以 GRAPELOADER 不会在加载程序锁下运行,这在一定程度上增加了检测和防范的难度 。

GRAPELOADER 在其整个代码中采用了多种反分析技术

字符串混淆

每个字符串都使用三个独特的函数进行处理,这些函数专门针对特定字符串进行处理。第一个函数检索加密的字节 blob,第二个函数使用自定义算法解密 blob,第三个函数在使用后立即将解密的内存 blob 清零。这种方法通过确保解密的字符串在内存中停留的时间不会足够长,从而避免被自动分析,从而成功绕过了常见的自动字符串提取和反混淆工具(例如 FLOSS)  。此外,由于每个字符串都有独特的处理方法,基于模式的启发式方法难以可靠地检测和提取它们。

运行时 API 解析和 DLL 解除挂钩

在调用任何 WIN API 或 NT API 函数之前,它首先 解除相应的 DLL挂钩 ,然后通过内存中的 PE 解析动态解析 API 。

APT29 再次发起针对欧洲外交官的网络钓鱼攻击

GRAPELOADER – API 解析和 DLL 解除挂钩

权限维持

恶意执行首先会设置持久性,但前提是进程的当前工作目录不是。C:WindowsSystem32此检查可防止通过诸如之类的工具执行时建立持久性 rundll32.exe,尽管恶意软件仍然会执行。

将所交付档案的内容复制 wine (2).zip 到 C:UsersUserAppDataLocalPOWERPNT。在 处创建一个 Run 注册表项 ,其中SOFTWAREMicrosoftWindowsCurrentVersionRun 包含 条目 POWERPNT,指向 C:UsersUserAppDataLocalPOWERPNTwine.exe。

C2

建立持久性后,恶意代码会进入无限循环,每 60秒轮询一次其C2服务器。最初,它会收集环境信息,包括:、、和 。 加上 硬编码的64个字符的十六进制字符串 (据信是 活动/版本标签),收集的数据结构如下:

UserNameComputerNameProcessNameProcessPIDe55c854d77279ed516579b91315783edd776ac0ff81ea4cc5b2b0811cf40aa63

struct CollectedEnvironmentInfo{    BYTE UserName[512];    BYTE ComputerName[512];    BYTE ProcessName[512];    DWORD ProcessPID;    BYTE HardcodedHexString[64];    DWORD GenRandNumFromSystemTime;};
此结构通过HTTPS POSThttps[:]//ophibre[.]com/blog.php请求 使用 User-Agent 字符串 发送  到 C2 服务器 
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36。
APT29 再次发起针对欧洲外交官的网络钓鱼攻击
GRAPELOADER – C2 通信
Shellcode 执行和规避技术

只有在从 C2 服务器接收到数据后,GRAPELOADER 才会继续执行。有效载荷预计是一段 未加密的、 与内存无关的 Shellcode,它完全在内存中执行,不会写入磁盘。

为了逃避  AV/EDR 解决方案的 内存扫描,GRAPELOADER 实现了一种常见的技术:

接收到的 shellcode 被复制到具有保护的分配内存区域中 PAGE_READWRITE 。内存保护改为  使用 PAGE_NOACCESS NT  API NtProtectVirtualMemory。调用 WIN API 来创建一个新的 挂起 CreateThread 线程, 并 lpStartAddress 指向不可访问内存区域的开头。调用Sleep WIN API(  10 秒),让 AV/EDR 解决方案有时间扫描不可访问的内存区域。内存保护改为 PAGE_EXECUTE_READWRITE 使用 NtProtectVirtualMemory。调用ResumeThread WIN API来 执行shellcode。
APT29 再次发起针对欧洲外交官的网络钓鱼攻击
GRAPELOADER – Shellcode 执行和规避技术
此次活动具有极强的针对性,通过 CollectedEnvironmentInfo 对受感染机器进行指纹识别,并且下一阶段有效载荷在执行过程中未留下任何持久性痕迹。因此无法检索到下一阶段的 shellcode。
加载器
新的 WINELOADER 变种 ( vmtools.dll) 是一个 64 位木马化 DLL,包含 964 个 导出函数,但其中只有一个函数是恶意执行的预期入口点。值得注意的是, 导出目录 存在 RVA 重复性:每对导出函数都共享相同的 RVA。这意味着该 DLL 实际上“仅”包含 482 个唯一 导出函数。
APT29 再次发起针对欧洲外交官的网络钓鱼攻击
WINELOADER – “vmtools.dll” 导出
另一个值得注意的特征是该部分上的 “ RWX.text ”(读-写-执行)标志 。这强烈表明存在自修改代码,通常是脱壳过程的一部分。
APT29 再次发起针对欧洲外交官的网络钓鱼攻击
WINELOADER – “vmtools.dll” RWX “.text” 部分

该 DLL 名为 vmtools.dll,其导出的函数名称显示,它被设计用于与存在安全隐患的良性可执行文件一同部署,借助 DLL 侧加载机制来运行恶意代码。尽管我们未能获取加载此 DLL 的确切主模块,但研究迅速发现,VMWare Tools 安装程序中的可执行文件常常使用类似库(相同的 DLL 名称及导出函数)。

不过,要确定漏洞模块的正确版本困难重重。由于 DLL 已被植入木马,多数导出函数充斥着垃圾指令,在加载程序触发某个受损的导出函数前,几乎无法识别目标函数,宛如大海捞针。为突破这一困境,我们采用模拟策略,系统地对所有导出函数进行暴力测试,同时密切监控异常行为。这一策略很快让我们锁定了目标函数 Str_Wcscpy,正是它会启动恶意执行程序 。

WINELOADER 解包

APT29 再次发起针对欧洲外交官的网络钓鱼攻击

与早期版本一样,核心模块通过RC4 解密 进行脱壳 ,使用硬编码的 256 字节密钥 。字符串解密和 C2 通信也使用相同的 RC4 密钥和算法。

C2通信
struct CollectedEnvironmentInfo{    WORD PaddingLength;    BYTE PaddingBytes[PaddingLength];    QWORD PossibleCampaignID;    QWORD PossibleSessionID;    BYTE IPAddress[14];    BYTE ProcessName[512];    BYTE UserName[512];    BYTE ComputerName[30];    DWORD ProcessPID;    BYTE ProcessTokenElevationType;    QWORD PollingInterval;    BYTE RequestType;    QWORD MessageLength;    QWORD Unknown;    QWORD PossibleModuleID;    BYTE Message[MessageLength];};
此结构 与之前版本的 WINELOADER 中的结构 几乎相同。首先,这些数据  使用嵌入的硬编码密钥进行 RC4 加密,然后通过HTTPS GET请求 使用 User-Agent 字符串 传输  到 C2 服务器 。
https[:]//bravecup[.]com/view.phpMozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.2151.25 Safari/537.36 Edg/119.0.2151.25
APT29 再次发起针对欧洲外交官的网络钓鱼攻击
一个非常 不寻常的 方面是 User-Agent 字符串,它声称来自  运行 Microsoft Edge (v119.0.2151.25) 的Windows 7系统;这个版本 通常不应该出现 在 Windows 7 操作系统上。这一异常现象是一个强有力的网络入侵指标 (IoC)。
归因
此次活动所呈现的策略、技术和程序(TTP)与 2024 年 3 月的 WINELOADER 活动极为相似。在先前的攻击中,APT29 同样借助伪装成品酒活动邀请函的网络钓鱼邮件展开行动,当时冒充的是印度大使。尽管在最新这轮活动里,感染链有所调整,比如引入 GRAPELOADER 作为初始阶段程序,取代了以往使用的 ROOTSAW(HTA 下载程序),但采用 DLL 侧载和持久性技术的核心执行手段基本未变。并且,如本报告所示,GRAPELOADER 与大概率属于 APT29 的恶意软件 WINELOADER 存在诸多显著相似之处,包括编译环境(Rich-PE)保持一致、编译时间戳相互匹配,以及代码层面的相似性,像字符串加密机制等方面 。

原文始发于微信公众号(Khan安全团队):APT29 再次发起针对欧洲外交官的网络钓鱼攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月27日14:28:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   APT29 再次发起针对欧洲外交官的网络钓鱼攻击https://cn-sec.com/archives/4006714.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息