APT29曾经最隐秘的武器:目标机器运行的定制化间谍木马

admin 2026-05-07 05:48:26 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档详细分析了APT29组织使用的定制化间谍木马EasterBunny的技术特性。该恶意软件采用单机器绑定机制,通过BIOSUUID等硬件特征生成解密密钥,确保样本仅能在目标设备运行。其四层嵌套架构包含反沙箱检测、内存无痕执行和流量伪装技术,C2通信伪装成Google流量以规避检测。核心功能包括持久化驻留、模块化扩展及DCSync攻击能力,代表2019年国家级攻击的最高水平。防御需转向基于行为特征的检测。 综合评分: 86 文章分类: 恶意软件,威胁情报,漏洞分析,红队,应急响应


cover_image

APT29曾经最隐秘的武器:目标机器运行的定制化间谍木马

白帽子

2026年5月6日 06:35 广东

在小说阅读器读本章

去阅读

以下文章来源于黑鸟 ,作者黑鸟

黑鸟 .

一介草民,深耕威胁情报领域多年,自封威胁分析师,APT狩猎者,战略忽悠分析师。 专注推送一切前沿高科技/人工智能、网络安全分析、敌我战略分析、数据挖掘、情报扩线、网络武器分析、社会工程学、一切开源情报、军事分析忽悠等。

2019 年,西班牙网络安全公司 S2GRUPO 的应急响应团队在一次国家级网络间谍行动中,发现了一款前所未见的恶意软件。这款由俄罗斯对外情报局 SVR 下属 APT29(也被称为 Cozy Bear、Nobelium)开发的植入程序,完全为受害者量身定制,传统基于哈希、域名、IP 的检测手段完全失效。

时隔多年,S2GRUPO 旗下威胁情报部门 LAB52 终于公开了这份详尽的技术分析报告,将这款被命名为 EasterBunny 的间谍木马的全貌展现在公众面前。

EasterBunny 是 APT29 迄今为止公开的最先进的植入程序,代表了国家级网络攻击的顶尖水平。它的开发者将操作安全 OPSEC 做到了极致,采用多层加密混淆架构,甚至实现了全球首例公开的单机器绑定特性,即恶意代码只能在被植入的那一台计算机上正常运行,任何复制到其他机器的尝试都会直接失败。这一特性在2019年之前仅在维基解密泄露的 CIA Vault7 黑客工具集中有过零星提及。

作为 APT29 攻击链中的 Stage3 阶段的植入程序,EasterBunny 的核心使命有两个。

第一是实现情报收集的持久化。它会在目标组织内部长期潜伏,加载专用模块持续获取用户凭证,并且能够绕过常规的密码过期和重置机制。攻击者可以通过 Golden Ticket、Golden SAML、Golden Certificate 等技术,即使管理员重置了所有用户密码,依然能够保持对目标系统的访问权限。

第二是作为通用操作后门。攻击者可以随时通过 EasterBunny 向目标系统注入其他后渗透工具,包括 Cobalt Strike、Sliver 等公开 C2 框架,也可以部署文件收集器、邮件窃取器等专用情报窃取模块。

APT29 的主要攻击目标是欧洲、中亚以及五眼联盟国家的政府机构、非政府组织和智库,尤其聚焦于外交部、外交代表团和国防相关组织。在 2015 年美国民主党全国委员会入侵、2020 年 SolarWinds 供应链攻击以及新冠疫苗研发机构窃密事件中,都能看到 APT29 的身影。

EasterBunny 比较有特点的特性,是它实现了严格的单机器绑定。每一个生成的 EasterBunny 样本,都只能在预先指定的那一台目标计算机上运行。这一特性从根本上挫败了绝大多数恶意软件分析手段,因为安全研究人员即使获取了样本,也无法在自己的分析环境中执行和观察它的行为。

植入程序存储于目标系统的不同目录如上

这种绑定是通过加密密钥与目标机器硬件和系统特征深度绑定实现的。在生成样本时,攻击者会预先收集目标机器的三个唯一标识符,分别是 BIOS UUID、Windows 系统的 Machine GUID(存储在注册表HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid)以及微软恶意软件删除工具 MRT 的 GUID(存储在注册表SOFTWARE\Microsoft\RemovalTools\MRT\GUID)。攻击者可以通过样本头中的 Key Type 字节,灵活选择使用其中一个或多个标识符组合生成 XOR 解密密钥。类似的单机器绑定木马的手段海莲花组织也干过一段时间。

除了单机器绑定,EasterBunny 还采用了经典的俄罗斯套娃式多层嵌套架构。整个恶意程序分为四个独立的执行阶段,每一个阶段都只负责解密和加载下一个阶段的代码,真正的恶意逻辑被层层包裹在最深处。这种架构极大地增加了逆向分析的难度,也让传统的静态检测手段难以奏效。

完整的执行流程分为四个阶段:

  1. Wrapper 层:外壳加载器,负责初步反沙箱检测和第一阶段代码的解密
  2. Code Block1:第一阶段代码,负责验证机器特征并解密第二阶段代码
  3. Code Block2:第二阶段代码,负责准备执行环境并加载最终载荷
  4. Final Payload:最终载荷,实现所有核心恶意功能

#

第一层:

#

Wrapper 是 EasterBunny 的入口点,也是它对抗安全检测的第一道防线。

所有样本都伪装成微软、Adobe、罗技等知名厂商的合法 32 位软件,存放在系统常见的程序目录中。它们的文件大小都在 1MB 以上,.text 段具有极高的熵值,并且所有样本的编译日期和 Visual Studio 版本都被故意篡改,避免被安全工具聚类分析。

Wrapper 层的核心技术包括:

  1. 时间循环反沙箱

    程序启动后会先等待两分钟,再开始执行后续逻辑。很多自动沙箱的分析时间不超过一分钟,这一机制可以直接绕过绝大多数沙箱检测。

  2. 代码块拆分混淆

    真正的第一阶段代码被拆分成 483 个大小不等的块,打乱顺序存放在.text 段中。每个块都用虚假的汇编指令前缀伪装,让反汇编工具将其识别为正常的可执行代码。Wrapper 会通过.data 段中的索引表,将这些分散的块重新拼接成完整的代码。

  3. 自定义解密算法

    拼接后的代码还需要经过两层解密,首先是基于字节距离计算的自定义混淆算法,然后是每个样本独有的 XOR 密钥解密。

  4. 内存无痕执行

    解密后的代码会被直接覆盖到原.text 段中执行,而不是分配新的内存页。这样可以避免执行流跳转到可疑的私有内存区域,绕过 EDR 的启发式检测。执行完成后,Wrapper 会立即用零填充所有使用过的堆内存,消除所有痕迹。

第二层:

#

Code Block1 是 EasterBunny 实现单机器绑定的核心层。它的唯一任务,就是验证当前运行的机器是否是目标机器,如果不是则直接终止执行。

Code Block1 首先会通过 PEB(进程环境块)结构解析所有加载的系统模块,动态获取所需的 Windows API 地址。然后它会调用系统 API 获取当前机器的 BIOS UUID、Machine GUID 和 MRT GUID,根据样本头中的 Key Type 字节组合这些值,计算出 MD5 哈希作为解密密钥。

使用这个密钥解密出第二阶段代码后,Code Block1 还会验证解密后代码的 MD5 哈希是否与样本头中存储的哈希值一致。如果验证失败,说明当前机器不是目标机器,程序会立即调用ExitProcess终止运行。只有验证通过,才会将解密后的 Code Block2 覆盖到.text 段中继续执行。

第三层:

#

Code Block2 是一个轻量级的加载器,负责为最终载荷准备安全的执行环境。它最独特的技术是采用了名为护城河的反取证手段。

Code Block2 会调用VirtualAlloc分配一块新的内存页,然后从内存页的 4096 字节偏移处开始写入最终载荷的代码。也就是说,内存页的前 4KB 空间全部用零填充。这一设计专门针对 Volatility 等内存取证工具的 malfind 插件。这类工具通常只会扫描内存页的前 64 字节来检测可疑的 shellcode,而前 4KB 全是零的内存页会被直接忽略。

加载完成后,Code Block2 会构建最终载荷的内部函数指针表,然后移除.text 段的写入权限,让内存权限恢复到正常可执行只读的状态,掩盖之前的修改痕迹。最后跳转到最终载荷的入口点执行。

第四层:

#

最终Payload是 EasterBunny 的核心,实现了所有的间谍功能。它同样采用了多种高级对抗技术:

  1. API 哈希解析

    所有 Windows API 都通过rol7XorHash32算法哈希后存储,运行时动态解析地址,避免在二进制中留下任何字符串痕迹。

  2. WELL512 伪随机数生成

    采用密码学安全的 WELL512 算法生成所有随机数,包括通信密钥、盐值等,无法被预测。

  3. 时间基反调试

    在与 C2 通信的过程中,会持续检查系统时间,如果单次操作耗时超过一秒,就认为正在被调试,立即终止通信。

持久化机制

#

EasterBunny 会在注册表HKU\<SID>\SOFTWARE\Classes\CLSID\下创建一个随机的 UUID 格式的键,用于存储所有配置信息。所有存储的数据都使用 AES 算法加密,加密密钥是基于当前机器特征生成的互斥量的 SHA1 哈希。

注册表中存储的信息包括:

  • 内置的企业代理凭证列表
  • C2 服务器地址
  • 持久化命令
  • 配置参数

#

伪装成 Google 流量的 C2 通信

#

EasterBunny 的 C2 通信设计极具欺骗性,所有流量都伪装成访问 Google 通知服务的正常 HTTP 流量。

通信流程分为以下几个步骤:

  1. 连通性检测

    首先访问 twitch.tv、microsoft.com、live.com等合法网站,检查网络连通性。

  2. 代理自动发现

    读取 Firefox 的配置文件自动获取系统代理设置,使用内置的代理凭证进行认证。

  3. 注册请求

    将收集到的系统信息用 RSA 公钥加密后,封装在 HTTP Cookie 字段中发送给 C2。Cookie 的字段名完全模仿 Google 的广告跟踪 Cookie,包括 COMPASS、NID、APISID、SAPISID 等。

  4. 握手验证

    C2 服务器返回验证信息后,客户端会再次发送确认请求完成握手。

  5. 命令执行

    进入命令循环,定期向 C2 服务器查询待执行的命令。

C2 服务器的响应也伪装成 Google 的 JavaScript 小部件,所有命令都隐藏在混淆的 JavaScript 代码中,通过 64 个预定义的正则表达式提取。这种隐写术手段让流量看起来完全合法,很难被网络安全设备检测到。

模块化功能与 DCSync 攻击

#

EasterBunny 采用完全模块化的设计,核心载荷只提供基础的通信和执行框架,所有高级功能都通过动态加载模块实现。攻击者可以随时从 C2 服务器下发新的模块,扩展恶意软件的功能。

LAB52 团队在分析中发现了三个专门用于 DCSync 攻击的模块。这些模块是从 Mimikatz 工具中拆分出来的,只保留了 DCSync 攻击的核心逻辑,可以从域控制器中导出所有用户的 NTLM 哈希。攻击者会定期使用这些模块获取最新的域用户凭证,即使管理员重置了密码,也能迅速重新获取访问权限。

攻击者的网络基础设施

#

EasterBunny 的背后,是 APT29 高度工业化的攻击基础设施。LAB52 团队根据分析结果,还原了攻击者使用的 Builder 生成器和 C2 控制平台的大致功能。

Builder 生成器是一个功能强大的自动化工具,可以根据攻击者提供的参数,一键生成完全定制化的 EasterBunny 样本。攻击者可以配置的参数包括:

  • 目标机器的特征,用于生成单机器绑定的密钥
  • C2 服务器地址
  • 内置的代理凭证列表
  • 用于连通性检测的合法域名
  • 样本的伪装名称和元数据
  • 加密算法和压缩选项

C2 控制平台则负责管理所有被感染的主机,支持批量下发命令、动态加载模块、会话管理等功能。所有通信都经过多层加密,并且使用被攻陷的第三方合法网站作为代理,隐藏真实的攻击者 IP 地址。

#

由于 EasterBunny 是完全定制化的恶意软件,传统基于哈希、域名、IP 的 IOC 检测手段几乎完全无效。针对这类高级持续性威胁,防御的重点必须转移到基于行为和 TTP(战术、技术和过程)的检测上来。

EasterBunny 的公开,让我们得以一窥国家级网络攻击的真实水平。

它所展示的单机器绑定、多层混淆、流量伪装等技术,代表了2019年同期恶意软件发展的最高水平,如今在Ai加持下,该恶意软件已经进化到何种地步,黑鸟认为会在原有的框架下,加速对各类非常细致的功能模块的开发。

有需求阅读完整分析见PDF:

https://github.com/blackorbird/APT_REPORT/blob/master/APT29/APT29_Informe%20LAB52-%20EasterBunny_Complete.pdf

往期:朝鲜黑客组织利用人脸深度伪造技术分析


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:白帽子 《APT29曾经最隐秘的武器:目标机器运行的定制化间谍木马》

评论:0   参与:  0