ESET研究人员记录了MATCHBOIL恶意软件的演变过程

ESET研究人员记录了MATCHBOIL恶意软件的演变过程

ESET研究人员记录了MATCHBOIL恶意软件的演变过程,该恶意软件是由与俄罗斯结盟的UAC-0099 APT团队使用,是一款定制的C#下载器。恶意软件被用来从该组织的C&C服务器下载负载,安装并建立其持久性。尽管MATCHBOIL最早于2025年8月由CERT-UA发布,但我们的研究显示它至少从2024年起就已在开发中。我们分析的恶意软件最早版本为2024年4月,最新版本为2026年4月。这篇博客文章按时间顺序介绍了这些版本,并描述了恶意软件的变化。每一代下载器都比上一代更复杂,显示出MATCHBOIL是UAC-0099工具箱中的重要组成部分。

博客文章的关键点:

  • MATCHBOIL 是一个由与俄罗斯亲近的组织 UAC-0099 使用的 C# 下载器,用于下载、安装和持久化另一个负载。
  • 分析的 MATCHBOIL 版本显示,混淆代码从最初使用 Unicode 符号重命名,转变为使用 Eziriz .NET Reactor 混淆器。
  • 随着时间推移,MATCHBOIL中已经实现了多种技术来判断是否在沙箱环境中执行。
  • 尽管MATCHBOIL最早由CERT-UA于2025年8月记录,但我们认为,基于部分发现样本的编译时间戳,MATCHBOIL可能早在2024年4月就已开始开发。

我们对各种MATCHBOIL版本的调查始于2026年2月,当时两个与该恶意软件相关的样本被上传到VirusTotal。由于这两个样本都与之前归属于UAC-0099的结构域进行了交流,我们决定进一步研究。这促使我们在ESET遥测中发现了2025年11月和12月间存在类似恶意行为的样本。我们相信所有这些样本都是MATCHBOIL的变体。

进一步研究揭示了更早的样本,这些样本于2024年4月汇总,2025年7月和8月通过ESET遥测数据显示。CERT-UA于2025年8月记录的首批公开MATCHBOIL样本时间戳表明,这些样本同样是在2024年中旬建造的,这意味着UAC-0099很可能当时已经在开发MATCHBOIL。

从我们收集的所有下载器样本来看,UAC-0099 持续改进 MATCHBOIL 以应对未来的攻击——2025 年 11 月之前收集或看到的样本相比新样本更简单易分析。

我们在遥测中看到的所有MACTHBOIL受害者都在乌克兰,分布在各个领域。2025年7月至8月,我们在多家运输公司见过下载器样品。同年12月,他们出现在一家制造公司。随后,2026年6月,ESET遥测在一家能源公司记录了更多MATCHBOIL样本。

2026年2月在VirusTotal上发现的两个样本也是从乌克兰上传的。

UAC-0099 配置文件

UAC-0099 是一个网络间谍组织,目标包括乌克兰的政府机构、金融机构和媒体。根据目标设定,我们中度信心地认为该组织与俄罗斯利益保持一致。UAC-0099可以作为“沙虫”组织的初始访问中介,该组织与俄罗斯结盟,以在乌克兰的破坏性袭击闻名。

该组织至少自2022年起活跃,CERT-UA于2023年6月首次报告。除了 MATCHBOIL,该团队通常还部署 LONEPAGE,这是一种以 C&C URL 中出现单词页面命名的 PowerShell 下载器。

火柴沸腾101

MATCHBOIL 是一个 C# 下载器,其目的是从其 C&C 服务器下载另一个负载,安装它,然后建立其持久化。

该恶意软件通过鱼叉式钓鱼邮件中的恶意链接传播。点击链接会下载一个归档文件,包含VBScript文件负载,该文件在受害者机器上下载并执行MATCHBOIL。注意,要使恶意负载生效,受害者会被误导手动执行脚本。

运行时,MATCHBOIL 会检查位于 %LOCALAPPDATA% 中的某个特定目录(其名称随样本变化而变化)。该目录用于在受害者的机器上安装有效载荷;如果目录已经存在,恶意软件就会终止。在执行过程中,MATCHBOIL 获取了 CPUID、BIOS 序列号及其他受害者机器的基本信息,这些信息用于在 C&C 通信中识别受害者。

MATCHBOIL随后向C&C服务器执行三次HTTPS请求;每个都有不同的用途:

  1. 第一个请求从C&C服务器接收一个数值。MATCHBOIL在第二个请求中将其作为HTTP头部的一个值使用;该HTTP头的名称随样本而异。该数值可能用于指示必须从C&C服务器下载哪些有效载荷。
  2. C&C服务器对第二个请求的响应是一段代码,预计格式为HTML格式。代码中嵌入了一个十六进制编码的载荷,安装在受害者的机器上。为了从响应中提取有效载荷,MATCHBOIL使用正则表达式模式,这同样依赖于样本。一旦有效载荷被提取出来,就会从十六进制解码为字节。我们见过不同的正则表达式随着时间被使用,但大多数都包含HTML标签格式,例如<script>(.*?)</脚本>。
  3. 第三个请求从C&C服务器接收字符串,该字符串被保存到安装有效载荷的同一目录中的文件中。文件可以作为有效载荷的配置。与之前的请求一样,该文件的名称会根据样本而异。

通过我们的分析,我们发现在大多数情况下,要安装在受害者机器上的十六进制编码载荷是一个名为MATCHWOK的C#后门,该后门仅由UAC-0099使用,最早由CERT-UA文档。

一旦与C&C服务器的通信结束,MATCHBOIL会持久化已安装的负载——PE文件,以便后续执行。持久化机制可以通过调度任务或在 Windows 注册表中添加值来设置。

MATCHBOIL 本身的持久性由用于下载和安装恶意软件的 VBScript 建立。我们最近在 ESET 遥测中发现了一个相关的 VBScript 样本,它持续存在一个执行 MATCHBOIL 的 C# 加载程序。

MATCHBOIL 的配置在样本中被硬编码,包含与 C&C 通信相关的字符串、目录以及将安装到受害者机器上的文件名。最初的样本中包含了这些字符串,但最新的样本包含了明文或因混淆器 .NET Reactor 而加密的字符串。

MATCHBOIL的发展历程

我们分析了近两年时间内出现的MATCHBOIL样本,从2024年4月的时间戳到2026年4月发现的样本。在这相对较短的时间内,我们看到 UAC-0099 对下载者的代码进行了许多改进,主要变化包括以下几点:

  • 整体逻辑从仅执行一次的一次性下载器切换到2025年底以两分钟计时器执行,能够从C&C中获取最新有效载荷。
  • 混淆——从使用不可打印的Unicode字符和字符串加密算法,转变为Eziriz .NET Reactor混淆器。
  • 持久化机制——从使用特定注册表值和调度任务组合(2024年),到仅在运行键中使用Windows注册表值(2025年7月),再到调度任务(2025年末)。
  • 防御规避——从2025年底开始逐步增加检测恶意软件是否运行在沙盒环境中的方法。
  • 用户欺骗——自2025年底起,新增图形用户界面(GUI),用户执行负载时会出现,并于2026年初将其更改为不显眼版本。

在接下来的部分中,我们将根据所有观察到的MATCHBOIL版本,按编译时间戳按时间顺序,并详细描述它们。尽管恶意软件代码不断更改,其任务依然不变:从C&C下载并持久化负载。

2024年样本

我们见过的最早MATCHBOIL样本的编译时间戳是2024年。

这些样本中的所有 C# 类和方法名都被不可打印的 Unicode 符号混淆,例如 \uFDD1.\uFDD0。二进制中的字符串通过自定义加密算法加密,该算法结合了异或运算和位移,使用数字种子解密字符串。这种种子的含量会根据样品而变化。

图1展示了该时期MATCHBOIL样本使用的字符串解密算法的反编译版本。

图1。MATCHBOIL字符串解密例程的反编译
图1。MATCHBOIL字符串解密例程的反编译

如前所述,MATCHBOIL从受害者机器获取信息,用于在C&C通信中识别其身份。通过C#类ManagementObjectSearcher,它执行不同的Windows管理仪器(WMI)查询,并检索例如受害者机器的CPUID或BIOS序列号。图2展示了用于检索这些信息的逻辑的反编译版本。后续版本的MATCHBOIL会获取更多受害者的信息,如用户名和网络接口的MAC地址。

图2。MATCHBOIL 例程用于获取受害者机器信息的反编译逻辑
图2。MATCHBOIL 例程用于获取受害者机器信息的反编译逻辑

正如MATCHBOIL 101部分所述:在C&C通信开始之前,恶意软件会检查该负载是否已经安装在受害者的机器上。它通过检查安装载荷的目录和载荷本身的存在来实现。

如果有效载荷不存在,MATCHBOIL 会启动 C&C 通信,这包括向 C&C 服务器发送的三个 HTTPS 请求。在2024年的样本中,恶意软件使用名为SN的自定义HTTP头(可能用于序列号),包含先前获得的受害者信息,以及一个名为User-Agent的HTTP头,包含一个25字符的字符串,可以包含特殊字符。

当第一个请求被执行时,C&C服务器会响应一个数字值,该值在第二个请求中作为另一个特定的HTTP头,称为Count。这个值似乎是一个ID,C&C服务器可以用来识别要下载哪个有效载荷到受害机器,和/或验证请求是否来自MATCHBOIL而非其他服务。

根据恶意软件的逻辑,C&C服务器对第二个请求的响应预计将格式化为包含有效载荷十六进制的HTML代码。MATCHBOIL 从响应体获取有效载荷,然后将其安装到指定目录下,并以特定的硬编码文件名进行安装。对于2024个样本,精确路径是%LOCALAPPDATA%\DeviceMonitor。

第三个请求获取一个字符串,该字符串保存在名为 config.ini 的文件中,该文件位于有效载荷安装的同一目录中。它很可能是有效载荷的配置文件。

一旦C&C通信完成,MATCHBOIL会在受害者机器上设置负载的持久化。在分析的2024年样本中,MATCHBOIL通过两种方式实现持久化:在HKCU\Software\Microsoft\Windows\CurrentVersion\Run键下创建一个名为DeviceMonitor的注册表值,以及一个名为Updates\CheckTask的计划任务。

最后,本节提到的所有逻辑都位于C#主类中。在此版本中,MATCHBOIL作为一次性下载器运行,依赖其持久化机制来执行已安装的有效载荷。

2025年7月样本

2025年7月的样本与2024年的样本之间变化不大。

恶意软件逻辑中最大的变化是代码通过任务库的异步任务执行。这意味着下一个任务的执行直到上一个任务完成后才继续,例如,当MATCHBOIL向C&C发出第一个请求时,直到第一个任务完成后才会继续执行第二个任务。

与2024年的样本不同,该版本的MATCHBOIL获取了更多关于受害者机器的信息,用于SN HTTP头部:BIOS的序列号、第一个或默认网络接口的物理地址,以及计算机的型号和制造商。

在持久化方面,这次通过运行键中的 Windows 注册表条目实现。

MATCHBOIL 示例中最后一个值得注意的修改是,恶意软件在安装后通过 ManagementClass 创建 Win32_Process 对象来执行负载。

2025年11月和12月样本

本节记录的样本是在2025年11月和12月的ESET遥测中发现的。虽然这些样本的时间戳无效,但我们的分析强烈表明它们比2025年7月的样本更新,因为它们与2025年7月版本相比有重大变化。

首先,UAC-0099 不再使用基于不可打印 Unicode 符号和字符串加密的混淆方法,而是用 Eziriz .NET Reactor 混淆器替代。该混淆器具有多种特性,如代码虚拟化和控制流混淆,使得 MATCHBOIL 的分析更加复杂。

为了进一步掩盖恶意软件,运营商还引入了图形用户界面(GUI),以每日计划表的形式,如果受害者手动执行MATCHBOIL,会向他们展示。如图3所示,这一骗局的威力因该“计划器”的出现、两个均为“Today”的文本字段,以及窗口名称中的拼写错误暗示该程序应用于计划乳制品摄入而有所削弱。

图3。MATCHBOIL直接执行时显示的误导性图形界面
图3。MATCHBOIL直接执行时显示的误导性图形界面

为了执行其恶意活动,该版本的 MATCHBOIL 期望以参数 -auto 启动。如果没有这个论点,说明恶意软件是手动执行的,用户界面会显示给受害者。如果参数存在,MATCHBOIL 会创建一个名为 Global\PlannerAssistant 的互斥式。也许是为了配合图形界面程序的主题,2025年末样本的有效载荷安装在%LOCALAPPDATA%\MeowCheck\下,文件名为MeowMeowProgramm.exe。

创建互斥体后,MATCHBOIL 通过 .NET 类 EventLogReader 查询 *[System/EventID=6013] 获取 Windows 事件日志,判断其运行环境是沙箱还是专用分析环境。ID 6013下记录的事件报告系统自上次启动以来运行的时间。MATCHBOIL有两个正则表达式,用于遍历这些日志,试图获得受害者机器的正常运行时间:

  • 运行时间\sis\s(\d+)\sseconds
  • работоспособного\sсостояния\s(\d+)\sсек

第二个正则表达式用俄语写成,机器翻译为operational\sstate\s(\d+)\ssec。

如果 MATCHBOIL 检测到至少有三个事件的正常运行时间值至少为 7,200 秒,即两小时,则假设它没有运行在沙盒或其他专用分析机中。

它还通过检查 .NET 类调试器中的 IsAttached 属性,检查是否已连接到调试器。如果没有,它会创建一个计时器,每两分钟运行一次MATCHBOIL的C&C通信逻辑。这是MATCHBOIL逻辑中的一个有趣修改,因为它改变了一次性下载器的行为。现在它可以与C&C服务器保持通信,从而下载最新的可用载荷,或者如果与C&C服务器的首次通信出现问题,MATCHBOIL可以通过后续请求从C&C服务器中获取其有效载荷。

完成这些检查后,MATCHBOIL 会使用相同的 HTTP 头 SN 和 User-Agent 执行通常的三个请求,唯独第二个请求中,用于数字值的 HTTP 头是 Answer。

在其中一些示例中(例如SHA-1:F886B615CB9E23EAD2718FF2A61155ACFB04CE9E),用于C&C通信以及从HTML代码中持久化和检索有效载荷的逻辑,位于名为AdditionalLib.dll的DLL中。它安装在 MATCHBOIL 所在的目录中。

图4顶部展示了本次MATCHBOIL样本批次中使用的第二个HTTPS请求的反编译代码,底部则是来自2024年较旧样本的同一HTTPS请求。请注意,代码已被解混淆。

图4。比较2025年和2024年MATCHBOIL样本中的逻辑,针对第二个请求
图4。比较2025年(顶部)和2024年(底部)MATCHBOIL样本中的逻辑,针对第二个请求

我们还看到MATCHBOIL将第二个请求的有效载荷保存到名为WallpappersSet.jpg的临时文件,位于C:\Users\<username>\Pictures目录中。

第三个请求的响应保存在名为config.library-ms的文件中,文件位于C:\Users\Public\Libraries目录下。在较早的示例中,该响应保存在安装有效载荷的同一目录中,文件名为config.ini。

有效载荷的持久机制也发生了变化,显示该组不断在不同特定机制之间切换。在这个版本中,恶意软件会创建一个名为 UpdateCheckers\DailyPlanner 的定时任务,每七分钟运行一次。

2026年采样

截至2026年,我们已发现多个不同的MATCHBOIL样本。今年2月,我们首次发现了一个样本(SHA-1:1E2C4AAC30EDFF86CD9A30BD08B199BCD3D0CCCE),与之前版本相比变化较小。其中一项变化是调整了 MATCHBOIL 是否应运行其恶意代码的检查方式:操作员添加了与之前参数 -auto 一同执行的 -plan。

同月晚些时候,我们又发现了另一个样本(SHA-1:C85D28F7D272CE2BBBFB9DAE71D21BF25B8D00FC)。在这个过程中,执行恶意活动的参数是 -renew;如果该参数不存在或不同,MATCHBOIL会显示图5所示的图形界面。这次,它是一个工具,可以根据正则表达式或用户提供的模式在文本文件中搜索,显示操作员似乎已经超越了图3中的日常计划表。

Figure 5. GUI displayed to a victim
图5。向受害者展示的图形界面

我们于2026年发现的最新变异株来自4月,型号为SHA-1:050926727CDD74F0B3A8A098E60B76D10FB06B14。这是 MATCHBOIL 采样首次由自定义 C# 加载程序执行 DLL 文件;之前的所有样本都是EXE文件,有时还附带包含恶意软件部分逻辑的DLL代码。CERT-UA也描述了该变体,将其命名为MATCHBOIL。V2。

该最新版本增加了另一项检查,以判断是否运行在虚拟环境中:检查操作系统的安装日期是否比 MATCHBOIL 样本执行日期早 10 天或更多。如前所述,如果为真,MATCHBOIL就会终止。

在该版本的恶意软件中,下载的载荷安装在名为 SMTPClientApplication.exe 的文件中,目录为 %LOCALAPPDATA%\SMTPClient。如果我们将该目录和文件名与2025年底使用的目录和文件名进行比较,会发现受害者机器上存在掩盖负载的尝试,因为SMTPClientApplication.exe远不如名为MeowMeowProgramm.exe的程序文件更显眼。

作为持久化机制,恶意软件使用名为 Checker 的调度任务,置于名为 MailClient 的目录下。

我们在之前样本中提到的其他MATCHBOIL逻辑,如从受害者机器获取信息的逻辑和获取有效载荷及其潜在配置的正则表达式,基本保持不变。

网络基础设施

UAC-0099 使用虚拟专用服务器(如 BitLaunch)来托管其 C&C 服务器,并使用云服务如 Cloudflare 来隐藏服务器。这些服务器使用 HTTP 和 HTTPS。我们还看到TLS证书是用Let’s Encrypt生成的,且证书不会被重复用于其他域名。

结论

我们从 2024 年 4 月到 2026 年 4 月对 MATCHBOIL 样本的调查揭示了多项修改,从代码层面结构到使用 .NET Reactor 混淆器,这些都在相对较短的时间内实现。这显示出UAC-0099操作员对改进下载器的浓厚兴趣,不仅是为了避免被安全解决方案检测,还希望将其作为未来攻击工具的关键组成部分。

如对我们在WeLiveSecurity上发布的研究有任何疑问,请通过 threatintel@eset.com 联系我们。

ESET研究提供私人APT情报报告和数据流。如对此服务有任何疑问,请访问ESET威胁情报页面。

国际象征委员会

全面的入侵指标(IoC)和示例可在我们的GitHub仓库中找到。

文件

SHA-1文件名检测描述
B6569B0050B864C4A0D32326954BC2D3852A3958PlannerLibrary.dllMSIL/Agent.XXC带有C&C和有效载重持久化逻辑的MATCHBOIL DLL。
A926889BAB31F3C34663D18C05C4E862EF367028AnimalUpdater.exeMSIL/Agent_AGen.DGXMATCHBOIL下载器。
026F892630D0A4FE854A75984695BA99AF0022C4bootloader.exeMSIL/代理.XPZMATCHBOIL下载器。
F886B615CB9E23EAD2718FF2A61155ACFB04CE9E规划助理 人ager.exeMSIL/Agent.XXCMATCHBOIL下载器。
1E2C4AAC30EDFF86CD9A30BD08B199BCD3D0CCCE规划助理 人ager.exeMSIL/Agent.XXCMATCHBOIL下载器。
C85D28F7D272CE2BBBFB9DAE71D21BF25B8D00FCRegularExpressionExplorer.exeMSIL/agent.YBXMATCHBOIL下载器。
6D72B56B86FD5ED9BD188C8C88CFC69476F836E7HelpersLibraries.dllMSIL/Agent.XXCMATCHBOIL 下载器 DLL 版本。

网络

知识产权领域托管服务提供商首次出现详情
无虚拟每日PLanner[.]优点无2025‑11‑10MATCHBOIL C&C服务器隐藏在Cloudflare背后。
无遥测-康f[.]com无2025‑08‑12MATCHBOIL C&C服务器隐藏在Cloudflare背后。
64.95.10[.]223Flycloud-SERvice[.]comBL网络2026‑03‑03火柴煮沸,知识产权,VPS。
64.95.13[.]210空气碎片[.]comBL网络2025‑05‑07火柴煮沸,知识产权,VPS。

MITRE AT&CK 技术

本表使用MITRE AT&CK框架第19版构建。

战术身份证名称描述
资源开发T1588.002获取能力:工具UAC-0099 使用 Eziriz .NET 反应器来混淆 MATCHBOIL。
T1583.003获取基础设施:虚拟专用服务器UAC-0099 使用 VPS 作为 MATCHBOIL C&C 服务器。
T1587.003能力发展:数字证书UAC-0099 为 MATCHBOIL C&C 服务器使用 Let’s Encrypt TLS 证书。
T1583.001获取基础设施:域名UAC-0099 注册用于 MATCHBOIL C&C 通信的域。
T1587.001开发能力:恶意软件UAC-0099 开发了自己的恶意软件,如 MATCHBOIL。
处决T1106原生APIMATCHBOIL 使用 Windows API 与 C&C 服务器通信。
T1047Windows 管理仪表MATCHBOIL 使用 WMI 查询获取受害者机器的系统信息。
持久性T1547.001启动或登录自动启动执行:注册表运行密钥 / 启动文件夹MATCHBOIL 通过 Windows 注册表运行条目持续保存其有效载荷。
T1053.005定时任务/作业:定时任务MATCHBOIL 及其有效载荷通过调度任务持续存在。
隐身T1622调试器规避一些 MATCHBOIL 变体可以检查它们是否连接到调试器。
T1678延迟执行MATCHBOIL滥用Sleep API来延迟执行。
T1140解码/解码文件或信息MATCHBOIL 在运行时解密字符串,可用于 C&C 通信或安装载荷的目录。
T1497.001虚拟化/沙盒规避:系统检查MATCHBOIL 查询 Windows 事件日志,以检测是否在沙箱环境中执行。
T1036.005伪装:匹配合法姓名或地点MATCHBOIL使用了Thumbs.db文件名作为其下载的有效载荷。
指挥与控制T1573.002加密信道:非对称密码学MATCHBOIL 使用 TLS 加密其 C&C 通信。
T1132.001数据编码:标准编码MATCHBOIL在C&C通信期间接收其有效载荷十六进制编码。
T1071.001应用层协议:网络协议MATCHBOIL 使用 HTTPS 进行 C&C 通信。