
ESET研究:俄罗斯最臭名昭著的APT组织之一Sednit的复兴
自2024年4月以来,Sednit的先进开发团队带着一套以两对植入物BeardShell和Covenant为核心的现代化工具包重新出现,每个植入体都使用不同的云服务商以增强韧性。这种双重植入方式实现了对乌克兰军人人员的长期监控。有趣的是,这些现有工具组与该组织2010年代植入物的代码有直接渊源。
这篇博客文章的要点:
- ESET研究人员追溯到2024年乌克兰一起案例,当时部署了名为SlimAgent的键盘记录器。
- SlimAgent 代码源自 Xagent,Xagent 是 Sednit 2010 年代的旗舰后门。
- 在该行动中,Sednit开发的第二款植入物BeardShell被部署。它通过一个合法的云服务提供商作为其C&C通道执行PowerShell命令。
- BeardShell 采用了一种独特的混淆技术,这也出现在 Xtunnel 中,Xtunnel 是 Sednit 2010 年代的网络枢纽工具。
- 在2025年和2026年,Sednit 多次部署了 BeardShell 以及其现代工具包中的第三个重要工具 Covenant。
- Sednit 对这一开源植入物进行了大幅重构,以支持长期间谍活动,并基于另一家合法云服务提供商实施了新的网络协议。
sednit特征
Sednit 集团——也被称为 APT28、Fancy Bear、Forest Blizzard 或 Sofacy——至少自2004年起就开始运营。美国司法部将该组织列为2016年美国大选前民主党全国委员会(DNC)黑客事件的幕后黑手,并将该组织与俄罗斯军方总情报局下属的俄罗斯情报机构GRU的26165部队联系起来。该组织还被认为是全球电视网TV5Monde遭黑客攻击、世界反兴奋剂机构(WADA)邮件泄露事件以及其他多起事件的幕后黑手。
Sednit的先进植入团队后来怎么样了?
Sednit组织可以说是APT组织中在被攻破目标方面记录最为出色的之一。其著名的妥协包括德国议会(2015年)、法国电视网TV5Monde(2015年)以及美国民主党全国委员会(2016年)。
在那些高调攻击的年代,Sednit 依赖了大量定制植入装置,从完整的间谍后门如 Xagent 和 Sedreco,到专门的工具包如网络枢纽工具 Xtunnel 和用于空隙机器的数据窃取器 USBStealer。2016年,我们在白皮书《与塞德尼特同行》中详细记录了这套复杂的武器库。
然而,2019年发生了转变。从那时起,直到最近,Sednit的高端植入物很少在野外被发现(只有少数例外,比如2021年Trellix记录的Graphite恶意软件),与此同时,该组织也在加大钓鱼行动。这些钓鱼攻击中使用的定制恶意软件大多是基于脚本的植入物。这种技术转变的原因至今仍是个谜。
这篇博客文章记录了自2024年以来Sednit高端定制武器库的重新出现。这里我们重点介绍其现代工具集的使用,因为CERT-UA和Sekoia之前的出版物已介绍过它们的内部运作。
一家精品开发商店
Sednit 内部开发其间谍植入物,这一独特特征支持基于共享代码工件的归因方法。
为了说明这一能力,考虑Xagent,这是该集团在2010年代的旗舰后门。2015年,我们在乌克兰的一台Linux服务器上发现了Xagent源代码,攻击者编译后遗留在一个未受保护的存档中。图1显示插件和C&C通道通过注释输入或输出代码来启用或禁用——根据运营需求根据目标选择——毫无疑问,开发者和操作员密切协作。

此外,2018年美国司法部的起诉书明确指出Xagent是内部开发的,并指控GRU 26165单位的特定成员是其开发者。
在这篇博客文章中,我们将利用这一开发足迹作为归因机制。通过追踪不同植入物间的共享代码产物,我们将该团队2010年代的工具集与当前使用的工具组连接起来。
瘦身特工
我们对现代Sednit活动的介绍始于SlimAgent,这是一种间谍植入装置,由CERT-UA于2024年4月在乌克兰政府机器上发现。SlimAgent 是一款简单高效的监控工具,能够记录键盘输入、截图并收集剪贴板数据。
祖先
有趣的是,我们在ESET遥测中发现了此前未知的样本,其代码类似于SlimAgent,早在2018年——即乌克兰案发生六年前——就已部署于两个欧洲国家的政府实体。这些样本在代码层面与SlimAgent有强烈相似之处,包括图2所示的完全相同的六步数据采集循环。每一步的实现几乎完全相同,如图3所示,负责记录前景窗口可执行文件的例程;唯一的区别在于内部数据结构的布局。


SlimAgent 包含了 2018 年样本中缺少的若干功能,比如对收集日志进行加密。然而,令人惊讶的是,相隔六年部署的样本却表现出如此强烈的代码相似性。
因此,我们高度有信心地评估,2018年和2024年SlimAgent样本均基于同一代码库构建。剩下的问题是:2018年的样本来自哪里?
臭名昭著的家族
2018年的样本内部有一个可能引起其他分析师共鸣的名称:RemoteKeyLogger.dll。这是 Xagent 的键录模块名称,Xagent 是 Sednit 2012 至 2018 年间的旗舰间谍后门(详见我们的白皮书《与 Sednit 同行》)。
通过挖掘一些旧的Xagent样本(例如SHA-1:D0DB619A7A160949528D46D20FC0151BF9775C32),我们确实发现了一些惊人的相似之处,比如图4所示。在该代码中,只有当鼠标光标移动不超过10像素时才执行(通过比较最后一个位置和当前位置之间的平方0x64,即100),并且实现时使用相同的API调用。

另一个例子是,SlimAgent 以 HTML 格式发布间谍日志,应用程序名称、记录的按键和窗口名称分别以蓝色、红色和绿色表示。图5展示了在使用notepad.exe输入和复制新创建TXT文件文本时生成的示例。Xagent 键记录器还能生成使用相同配色方案的 HTML 日志。图6展示了2015年Xagent源代码中对应颜色HTML标签的定义。


基于这些相似性,我们认为 SlimAgent 是 Xagent 键盘记录模块的进化,Xagent 自至少 2018 年起作为独立组件部署。此外,由于Xagent是Sednit团队独家使用超过六年的定制工具组,我们高度确定SlimAgent归功于Sednit。
这引出了一个问题:为什么Sednit会重复使用源自如此知名代码库的植入体?一种可能的解释是开发能力下降。然而,2024年乌克兰机器上发现的植入物并非SlimAgent的唯一;BeardShell——Sednit定制武器库中较新的新增武器——也部署在那里。
胡须壳
BeardShell 是一个复杂的植入体,能够在 .NET 运行环境内执行 PowerShell 命令,同时利用合法的云存储服务 Icedrive 作为其 C&C 通道。
该组件体现了密集的开发努力,也是我们相信Sednit高级开发团队重新活跃起来的主要原因。例如,由于 Icedrive 没有提供公开文档的 API,开发者重新实现了官方 Icedrive 客户端的请求。每当 Icedrive 私有 API 的变动中断了 BeardShell 的通信时,Sednit 开发者会在数小时内发布更新版本以恢复访问权限。
来自过去的数学冲击
虽然我们未能找到与BeardShell直接相关的其他恶意软件家族,但我们发现与过去Sednit工具的惊人相似性,始于BeardShell最初执行的C++静态初始化器。该例程的目的(其代码如图7所示)是解密Icedrive云存储的认证令牌。

该例程包含了一个教科书式的混淆技术示例,称为不透明谓词插入(图7红色框中高亮显示):
- 一个对所有可能输入计算为零的算术表达式——如图7中命名为x和y——被用作时间循环的条件。实际上,循环体从未被执行,因为谓词 2(x2+ 1)+ 2 = y2+ 5没有整数解。
- 该人工环的主体由两条原始指令(图7黄色框所示)以及输入变量y的假更新组成,以模拟真实的环体结构。
- 假循环之后是将执行的两条原始指令:调用 Icedrive 令牌解密例程和注册清理程序。
不透明谓词通常用于阻碍静态分析,但在如此小的例程中并不特别有用。请注意,其他 BeardShell 静态初始化器——它们不处理重要数据——也采用了同样的保护技术,因此开发者似乎只是无差别地对所有这些初始化器应用了保护。
现在,谓词公式可以简化为(两边各减2) 2(x2+ 1)= y2+ 3.有趣的是,同样的不透明谓词在2013年至2016年间被用于Xtunnel(一个仅由Sednit使用的网络枢轴工具),并在我们的白皮书《En Route with Sednit》中进行了记录。图8展示了Xtunnel(SHA-1: 99B454262DC26B081600E844371982A49D334E5E)中混淆代码的例子,其谓词不成立。

该谓词不仅与BeardShell中使用的相同,且“永不执行”块的构建方式类似,通过复制两个原始指令(黄色框内)并对其中一个谓词输入(此处为x)进行虚拟更新。
据我们所知,这种不透明谓词除了在Xtunnel中未曾被观察到。甚至有人会怀疑它是否可能被用作假旗,尤其是它在2016年BlackHat Europe的演示中被公开提及为Xtunnel独有。然而,假旗操作很可能使用相同的谓词,而不是方程两边均为+2的变体。
这种罕见的混淆技术的共同使用,加上与 SlimAgent 的共址,使我们高度有信心地评估 BeardShell 是 Sednit 定制武器库的一部分。
自2024年首次事件以来,Sednit持续部署BeardShell,直至2025年及2026年初,主要用于针对乌克兰军人的长期间谍行动。为了保持对这些高价值目标的持续访问,Sednit系统性地与BeardShell——盟约——其现代武器库的最后一个组件——一起部署了另一枚植入体。
盟约
Covenant 是一个开源的 .NET 后利用框架,首次发布于 2019 年 2 月。它支持通过基于网页的仪表盘创建和管理.NET植入物——见图9中的示例——并内置了90多个任务,支持数据泄露、目标监控和网络枢纽等功能。

自2023年以来,Sednit开发者对Covenant进行了多次修改和实验,将其确立为主要间谍植入装置,BeardShell主要作为Covenant遇到运行问题(如云基础设施瘫痪)时的备选方案。
例如,Sednit 用确定性方法取代了 Covenant 最初的植入命名机制(见图 10),生成基于机器特性的标识符,而不是每次执行生成新的随机值(见图 9 中 Grunts 部分的名称列)。这一修改说明了 Sednit 如何将 Covenant 用于长期间谍活动,而非短期的后利用活动:在长期运营中,每次重启后同一台机器以不同标识符出现会让仪表盘杂乱,降低运营效率。

Sednit还改变了《盟约》的执行流程,这是一种两阶段植入,可能是为了避免行为检测。他们没有让第一阶段下载器使用固定索引(最初实现的)调用第二阶段.NET汇编的第一方法,而是引入了DisplayName属性并迭代方法属性以找到入口点。在2023年初的变体中,Sednit开发者甚至尝试将两阶段嵌入到单一二进制中。
Covenant 官方仅支持 HTTP 和 SMB,这导致了 Sednit 最重要的 Covenant 修改:增加了基于云的网络协议。为此,Sednit 开发者利用了 C2Bridge 项目,这是 Covenant 原作者创建的独立框架,以促进新通信协议的集成。使用 C2Bridge,开发者只需在植入端实现符合 IMessenger 接口的类,提供读写方法来管理底层通信。C2Bridge可以作为控制器上的独立组件运行,用于中继消息,而控制器新创建的植入物则使用已实现的通信方法。
图11展示了Sednit开发者引入的类,用于与Filen云服务商通信,自2025年7月起使用。FilenMessenger 类实现了 IMessenger,并依赖 FilenClient 与 Filen API 交互。此前,2023年Sednit的Covenant滥用了合法的云服务pCloud,2024至2025年间,Koofr也使用了类似的实现。

这些改编表明Sednit开发者在Covenant方面积累了深厚专业知识——该植入体的官方开发于2021年4月停止,可能被防御者视为未被使用。这一令人惊讶的作战选择似乎奏效:Sednit多年来一直成功依赖Covenant,尤其是在对乌克兰的特定目标时。例如,2025年我们对Sednit控制的Covenant云驱动器的分析显示,有些机器被监控超过六个月。据CERT-UA报道,2026年1月,Sednit还在一系列利用CVE-2026-21509漏洞的鱼叉式钓鱼行动中部署了Covenant。
结论
在这篇博客文章中,我们展示了Sednit的高级开发团队再次活跃起来,运营着以两种植入体——BeardShell和Covenant——为核心的武器库,这些植入物是同步部署的,并且各自利用不同的云服务提供商。这种配置使运营商能够在基础设施瘫痪时迅速恢复访问。我们认为这种双重植入式策略并不新鲜。例如,在Trellix记录的2021年活动中,Sednit并行部署了两个植入体:Graphite,使用OneDrive作为其C&C通道,以及PowerShell Empire,依赖独立的专用基础设施。
BeardShell的复杂性以及对Covenant的广泛修改表明,Sednit的开发者依然完全有能力制造先进的定制植入物。此外,这些工具与2010年前身的共享代码和技术,强烈表明开发团队内部存在延续性。
这引发了一个问题:这些开发者在这些年里到底做了什么?当时安全社区主要观察到来自Sednit的钓鱼活动。一种可能是在俄罗斯入侵乌克兰后,先进的开发工作被重新启动。另一个原因是他们从未停止工作,反而变得更加谨慎。
如对我们在WeLiveSecurity上发布的研究有任何疑问,请通过 threatintel@eset.com 联系我们。
ESET研究提供私人APT情报报告和数据流。如对此服务有任何疑问,请访问ESET威胁情报页面。
国际象征委员会
文件
全面的入侵指标(IoC)和示例可在我们的GitHub仓库中找到。
| SHA-1 | 文件名 | 检测 | 描述 |
| 5603E99151F8803C13D48D83B8A64D071542F01B | eapphost.dll | Win64/Spy.KeyLogger.LS | SlimAgent。 |
| 6D39F49AA11CE0574D581F10DB0F9BAE423CE3D5 | tcpiphlpsvc.dll | Win64/BeardShell.A | BeardShell。 |
MITRE AT&CK 技术
本表使用了 MITRE ATT&CK 框架的第 18 版构建。
| 战术 | 身份证 | 名称 | 描述 |
| 资源开发 | T1583.006 | 获取基础设施:网络服务 | BeardShell依赖Icedrive云存储。 Covenant 依赖于 Filen 云存储。 |
| T1587.001 | 开发能力:恶意软件 | BeardShell 和 SlimAgent 是自定义恶意软件。 | |
| 处决 | T1059.001 | 命令与脚本解释器:PowerShell | BeardShell 执行 PowerShell 命令。 |
| T1129 | 共享模块 | BeardShell 和 SlimAgent 是完整的 DLL 文件。 | |
| 特权升级 | T1546.015 | 事件触发执行:组件对象模型劫持 | BeardShell 和 SlimAgent 通过劫持 COM 对象实现持久化。 |
| 防御规避 | T1027 | 混淆文件或信息 | BeardShell Icedrive 令牌解密是混淆的。 |
| T1140 | 解码/解码文件或信息 | BeardShell 解密其字符串。 | |
| T1480 | 执行护栏 | BeardShell 只在 taskhost.exe 或 taskhostw.exe 执行。 SlimAgent只在explorer.exe执行。 | |
| T1564 | 隐藏文物 | SlimAgent 日志会写入隐藏文件中。 | |
| 发现 | T1082 | 系统信息发现 | BeardShell 发送了被攻破机器的指纹。 |
| 收藏 | T1005 | 本地系统数据 | BeardShell、Covenant 和 SlimAgent 从被攻破的机器中收集数据。 |
| T1056.001 | 输入捕获:键记录 | SlimAgent 执行键盘记录。 | |
| T1113 | 屏幕截图 | SlimAgent 截取了被攻破机器的截图。 | |
| T1115 | 剪贴板数据 | SlimAgent 收集剪贴板数据。 | |
| 指挥与控制 | T1001 | 数据混淆 | BeardShell 通过伪造图片泄露数据。 |
| T1071.001 | 应用层协议:网络协议 | BeardShell 和 Covenant 使用 HTTPS 进行 C&C。 | |
| T1102 | 网络服务 | BeardShell 会接收 Icedrive 的指令。 Covenant从Filen那里接收指令。 | |
| T1573.002 | 加密信道:非对称密码学 | BeardShell与Icedrive的通信采用HTTPS加密。 契约与其控制器的通信使用RSA加密的会话密钥。 | |
| 外流 | T1567 | 通过网络服务进行外部渗透 | BeardShell 将数据泄露到 Icedrive。 Covenant将数据泄露到Filen。 |
