苦涩结局:揭秘八年间谍丑闻(下)

admin 2025年6月9日08:21:39评论14 views字数 11297阅读37分39秒阅读模式
苦涩结局:揭秘八年间谍丑闻(下)

由 Abdallah Elshinbary 和 Jonas Wagner 与 Proofpoint 的 Nick Attfield 和 Konstantin Klinger 合作完成。

这是一个由两部分组成的博客系列,详细介绍了与 Proofpoint 合作开展的研究。本系列博客的第一部分可在其网站上找到。

主要发现

  • Bitter 的恶意软件自 2016 年以来已显著演变,从基础的下载器演变为功能更强大的 RAT。该组织主要使用通过其感染链传递的简单自制有效载荷,而非依赖有效载荷本身的高级反分析技术。

  • 其多样化的工具集显示出不同恶意软件家族的一致编码模式,尤其是在系统信息收集和字符串混淆方面。这强烈表明它们拥有共同的开发者基础。

  • 他们最近的几个恶意软件家族在 2025 年继续积极发展,最近的活动中出现了新的变种。

有效载荷武器库

在我们关于Bitter间谍组织博客系列的第二部分中,我们将重点关注其行动的核心:一个多样化且不断演变的有效载荷库。自2016年首个已知恶意软件曝光以来,Bitter的工具集已从基础的下载器扩展到复杂的后门程序和功能齐全的远程访问木马(RAT)。本节将剖析Bitter恶意软件的技术能力、演进路径和共同的开发特征,为检测、归因和全面了解其操作复杂性提供参考。

苦涩结局:揭秘八年间谍丑闻(下)

Bitter 部署的不同有效载荷的时间线和活动(如果已知,则为红色)。

我们将按时间顺序逐一探索每个恶意软件家族,详细介绍其核心功能、独特的代码模式、混淆技术、命令与控制 (C2) 通信以及任何已识别的变种。本分析基于 OSINT 来源和我们自身的研究。我们对 MuuyDownloader、BDarkRAT 和 MiyaRAT 的新变种提供了新的见解,后两者在 Proofpoint 于本系列博文第一部分记录的恶意活动中被观察到。

Bitter 运作模式的关键在于它们在实际操作过程中依赖感染链来传递有效载荷,而不是在恶意软件本身内采用复杂的反分析措施或打包程序。

在他们的武器库中,我们观察到一致的代码模式,尤其是在它们收集系统信息和使用简单的字符加减运算解码混淆字符串方面。同样值得注意的是,一些恶意软件家族在不同版本之间表现出代码模式的差异,但核心功能却完全相同。

我们的分析揭示了一个核心主题:Bitter 持续使用一套由 C/C++ 和 .NET 定制开发的核心工具。这些工具经常经历迭代开发,其特点是多年来混淆策略和 C2 通信协议发生了重大变化。此外,我们将展示不同恶意软件家族共享开发方法的证据,这些方法在其他情况下可能看似截然不同,但实际上它们拥有一致的开发成果。这些清晰的模式不仅揭示了该组织的作案手法,还凸显了其在漫长的运营历史中展现出的足智多谋和不断演变的特质。

通过对 Bitter 的有效载荷进行细致剖析,我们旨在提供迄今为止最全面的洞察,以了解该组织攻击者的间谍技术,并帮助防御者更深入地了解该组织构成的威胁。这些洞察对于构建更有效的检测特征以及预测和追踪其未来的战术变化至关重要。

ArtraDownloader

Bitter 使用的第一个已知家族是 ArtraDownloader。该家族于2016 年首次出现,并于2019 年根据样本中发现的 PDB 字符串命名。ArtraDownloader 是一个用 C++ 编写的简单下载程序(ef0cb0a1a29bcdf2b36622f72734aec8d38326fc8f7270f78bd956e706a5fd57见于 2018 年)。

下载程序首先收集系统信息,包括用户名、计算机名称和操作系统。

苦涩结局:揭秘八年间谍丑闻(下)

ArtraDownloader 收集系统信息。

然后使用收集到的信息来生成受害者的唯一标识符。

苦涩结局:揭秘八年间谍丑闻(下)

ArtraDownloader 构建受害者唯一 ID。

然后,唯一标识符和收集到的系统信息会被编码(每个字节加 1),并发送到 C2 服务器。在初始 C2 请求之后,ArtraDownloader 期望收到包含标识符的响应"DFCB="。该标识符允许它提取编码的有效载荷文件名。然后,ArtraDownloader 发送另一个 C2 请求以下载有效载荷,将其保存到磁盘,并使用以下命令执行它:ShellExecuteA.

苦涩结局:揭秘八年间谍丑闻(下)

ArtraDownloader 向 C2 发送系统信息并接收编码的有效载荷名称。

ArtraDownloader 通过将自身复制到硬编码路径并将其新位置添加到注册表项来在受害者的机器上建立持久性Run。

苦涩结局:揭秘八年间谍丑闻(下)

ArtraDownloader 在受害者的机器上设置持久性。

重要的字符串用简单的编码算法进行混淆,其中每个字符通过减 1 进行解码。

在野外还发现了另外两个ArtraDownloader变种。这些变种主要在字符串混淆方法和 HTTP 请求格式上有所不同。

在第二种变体(0b2a794bac4bf650b6ba537137504162520b67266449be979679afbb14e8e5c0,出现于 2019 年)中,字符串的解码方式是每个字符减去 3,而不是像第一种变体那样减去 1。

与原始变种类似,此版本会收集类似的系统信息,并通过对每个字节加 1 进行编码,然后使用不同的格式将其传输到 C2 服务器。此变种还需要"AXE: #"从 C2 服务器获取不同的标识符 ( ) 来提取有效载荷名称。

苦涩结局:揭秘八年间谍丑闻(下)

第二个 ArtraDownloader 变体向 C2 发送系统信息并接收有效载荷名称。

第三种变体(f0ef4242cc6b8fa3728b61d2ce86ea934bd59f550de9167afbca0b0aaa3b2c22,出现于 2018 年)使用了一种字符串解码方法,即从每个字符中减去 13。

该变种会收集各种系统信息,但与其他两个变种不同,它不会对发送到 C2 服务器的有效载荷进行编码。第三个变种还需要"Yes file"从 C2 服务器获取一个唯一标识符 ( ) 来提取有效载荷名称。

苦涩结局:揭秘八年间谍丑闻(下)

第三种 ArtraDownloader 变体向 C2 发送系统信息并接收有效载荷名称。

据观察,ArtraDownloader 部署了一个简单的键盘记录器、WSCSPL 后门和一个称为BDarkRAT的 .NET RAT 。

键盘记录器

据悉,Bitter 曾在不同的活动中部署过一个简单的 C++键盘记录器 模块。该键盘记录器(见于 2017 年)会在目录中创建两个日志文件的路径。f619eb9a6255f6adcb02d59ed20f69d801a7db1f481f88e14abca2df020c4d26"%APPDATA"

苦涩结局:揭秘八年间谍丑闻(下)

苦涩的键盘记录器在受害者的机器上创建日志文件。

然后,键盘记录器会启动一个新线程,设置一个钩子来监控键盘输入事件。它还能够捕获剪贴板内容。键盘记录会通过在每个字符后加 20 进行编码,然后写入临时日志文件。

一旦临时日志文件的大小达到 1KB,其内容将被转移到永久日志文件。然后,临时文件将被删除并重新创建,以继续捕获新数据。

苦涩结局:揭秘八年间谍丑闻(下)

Bitter 键盘记录器将击键记录到日志文件中。

字符串通过简单的编码算法进行混淆,其中每个字符通过减去 13 进行解码。

键盘记录器缺乏泄露功能,需要与另一个模块(例如 WSCSPL 后门)一起部署来处理收集到的日志的泄露。

WSCSPL后门

WSCSPL 是一个用 C 语言编写的后门,于2016 年作为 ArtraDownloader 的下一阶段有效载荷出现。与 ArtraDownloader 一样,该后门(a241cfcd60942ea401d53d6e02ec3dfb5f92e8f4fda0aef032bee7bb5a344c35见于 2018 年)会收集系统信息,包括用户名、计算机名称和操作系统。

苦涩结局:揭秘八年间谍丑闻(下)

WSCSPL 正在收集系统信息。

收集到的信息会被连接并编码,然后发送到 C2 服务器。WSCSPL 从 C2 服务器接收一个数值,指示要执行的命令。该后门支持多个命令,每个命令都在自己的线程中执行,具体如下:

  • 获取机器信息

  • 获取驱动器信息

  • 下载并执行文件

  • 执行远程命令

字符串被混淆并用简单的算法编码,通过在每个字符上添加 34 来解码。

苦涩结局:揭秘八年间谍丑闻(下)

WSCSPL 解码字符串。

BDarkRAT

BDarkRAT 是一款 .NET RAT,于2019 年首次发现,Bitter 组织至今仍在使用。该 RAT(e07e8cbeeddc60697cc6fdb5314bd3abb748e3ac5347ff108fef9eab2f5c89b8见于 2021 年)首先收集基本系统信息,例如用户名、操作系统和 MAC 地址。收集到的信息会被附加一个硬编码的版本号,然后发送到 C2 服务器,用于注册新的受害者。

苦涩结局:揭秘八年间谍丑闻(下)

BDarkRAT 收集系统信息。

BDarkRAT 包括标准 RAT 功能,例如执行 shell 命令、下载文件和管理受感染系统上的文件。

苦涩结局:揭秘八年间谍丑闻(下)

BDarkRAT 注册不同的 C2 命令。

RAT 的配置以纯文本形式硬编码,其中 C2 地址采用十六进制编码形式。

苦涩结局:揭秘八年间谍丑闻(下)

BDarkRAT 嵌入式配置。

RAT 包含一个硬编码加密密钥(存储在配置字段 NetworkKey 中),用于在发送到 C2 服务器之前使用简单的 XOR 运算加密网络数据包。

BDarkRAT 的较新变种bf169e4dacda653c367b015a12ee8e379f07c5728322d9828b7d66f28ee7e07a(见于 2024 年)扩展了其功能,包括屏幕截图和 PowerShell 命令执行。它们还从在初始化函数中为每个 C2 命令使用描述性名称转变为使用数值,但函数名称仍然解释了每个 C2 命令的功能。

苦涩结局:揭秘八年间谍丑闻(下)

具有更多 C2 命令的新 BDarkRAT 变种。

与之前的版本相比,该变种收集的系统信息较少,并且不再包含 RAT 的版本号。

苦涩结局:揭秘八年间谍丑闻(下)

新的 BDarkRAT 系统信息收集。

在这个变体中,C2 地址现在是加密的,而不仅仅是十六进制编码的。

苦涩结局:揭秘八年间谍丑闻(下)

带有加密 C2 地址的 BDarkRAT。

C2地址的加密算法是AES-256-CBC,其中密钥和IV是通过PBKDF2算法得出的。

2025 年初,Proofpoint 发现了另一个 BDarkRAT 变种(e599c55885a170c7ae5c7dfdb8be38516070747b642ac21194ad6d322f28c782)。虽然此变种与 2024 年发现的变种具有相同的新功能,但它恢复了与旧变种一样使用十六进制编码的 C2 地址。

苦涩结局:揭秘八年间谍丑闻(下)

BDarkRAT 嵌入式配置,带有十六进制编码的 C2 地址

BDarkRAT 被社区赋予了多个名称,包括SplinterRAT。这些不同名称的出现很可能是因为在不同的样本中发现了不同的 .NET 命名空间。

苦涩结局:揭秘八年间谍丑闻(下)

BDarkRAT 样本中出现的 .NET 命名空间之一。

然而,我们认为 BDarkRAT 可能是该 RAT 最准确的名称,正如2023 年报道的那样,因为其早期版本的许多代码组件都源自 DarkAgentRAT(2011 年推出的开源 .NET RAT)。

C2 命令的初始化是 BDarkRAT 和 DarkAgentRAT 之间的关键代码相似之处之一。

苦涩结局:揭秘八年间谍丑闻(下)

DarkAgentRAT(左)使用与 BDarkRAT(右)相同的 C2 初始化模式。

此外,网络数据包的加密与 BDarkRAT 完全匹配,甚至使用相同的函数名称:

苦涩结局:揭秘八年间谍丑闻(下)

DarkAgentRAT(左)使用与 BDarkRAT(右)相同的网络数据包加密功能。

苦涩结局:揭秘八年间谍丑闻(下)

DarkAgentRAT(左)使用与 BDarkRAT(右)相同的功能发送网络数据包。

由于 BDarkRAT 基于开源 RAT,因此识别其开源版本中不存在的独特函数至关重要。利用我们原生的函数追溯功能,我们快速验证了哪些函数适合用于 YARA 规则生成。

苦涩结局:揭秘八年间谍丑闻(下)

追溯 BDarkRAT 检测规则中使用的函数之一。

ArtraDownloader

2021 年,Bitter 从 ArtraDownloader 切换到了名为MuuyDownloader(也称为ZxxZ 下载器)的新下载器。与 ArtraDownloader 一样,它也是用 C++ 编写的,并且具有类似的实现。

MuuyDownloader(3fdf291e39e93305ebc9df19ba480ebd60845053b0b606a620bf482d0f09f4d3,出现于2021年)首先收集系统信息(用户名、计算机名称和操作系统),然后以加密形式将其传输到C2服务器。收集到的信息使用分隔符“ZxxZ”分隔。

苦涩结局:揭秘八年间谍丑闻(下)

MuuyDownloader 收集系统信息并构建 C2 有效载荷。

从 C2 服务器收到有效载荷名称后,MuuyDownloader 会构建有效载荷路径并将其附加".exe"到文件名中。C2 服务器发送的有效载荷中,会省略其第一个 PE 头字节,这可能是为了逃避网络检测。MuuyDownloader 会将该0x4D字节写入目标文件,附加已下载的有效载荷,然后使用 执行该有效载荷ShellExecuteA。

苦涩结局:揭秘八年间谍丑闻(下)

MuuyDownloader 正在下载下一阶段的有效载荷。

字符串使用简单的 XOR 算法加密,其中每个字符串都有自己的加密密钥。

苦涩结局:揭秘八年间谍丑闻(下)

MuuyDownloader 解密字符串。

已发现 MuuyDownloader 的其他变种对其字符串混淆和 HTTP 请求格式进行了轻微修改。

第二种变体(225d865d61178afafc33ef89f0a032ad0e17549552178a72e3182b48971821a8,见于 2021 年)实现了一种修改后的字符串编码算法,该算法从每个字符中减去 5,并从解码的输出中去除星号字符。

此变体使用美元符号而不是 "ZxxZ"作为系统信息的分隔符。

苦涩结局:揭秘八年间谍丑闻(下)

第二个 MuuyDownloader 变体收集系统信息并构建 C2 有效载荷。

第三种变体(91ddbe011f1129c186849cd4c84cf7848f20f74bf512362b3283d1ad93be3e42,于 2022 年出现)实现了与第一种变体类似的字符串解密算法,但使用单个 XOR 密钥来解密所有字符串。

苦涩结局:揭秘八年间谍丑闻(下)

第三个 MuuyDownloader 变体解密字符串。

该变体还包括两种不同的系统信息有效载荷格式。

苦涩结局:揭秘八年间谍丑闻(下)

第三个 MuuyDownloader 变体正在构建 C2 有效载荷。

该变体不使用ShellExecuteA,而是使用执行下一阶段的有效载荷CreateProcessA。

苦涩结局:揭秘八年间谍丑闻(下)

第三个 MuuyDownloader 变体正在下载下一阶段的有效载荷。

在调查过程中,我们发现了来自 Bitter 的新样本,我们以中高置信度认为它是 MuuyDownloader(edb68223db3e583f9a4dd52fd91867fa3c1ce93a98b3c93df3832318fd0a3a56于 2025 年发现)的新变种。

该变体使用单字节异或运算和字符加法的组合来解密字符串。

苦涩结局:揭秘八年间谍丑闻(下)

第四个 MuuyDownloader 变体解密字符串。

与之前的变体一样,该变体使用类似的有效载荷格式收集类似的系统信息。关键区别在于,该变体在 C2 传输之前对系统信息进行了 Base64 编码。

苦涩结局:揭秘八年间谍丑闻(下)

第四个 MuuyDownloader 变体收集系统信息并构建 C2 有效载荷。

与其他变体一样,此版本使用阻塞流而不是来获取下一阶段的有效载荷recv。

苦涩结局:揭秘八年间谍丑闻(下)

第四个 MuuyDownloader 变体正在下载下一阶段的有效载荷。

还发现 MuuyDownloader 会下载一个简单的键盘记录器(类似于 ArtraDownloader 删除的键盘记录器),以及两个不同的 .NET RAT,分别名为 BDarkRAT 和 AlmondRAT。

AlmondRAT

AlmondRAT 是另一个于2022 年发现的 .NET RAT ,由 Bitter 组织部署,其功能与 BDarkRAT 类似。该 RAT(d83cb82be250604b2089a1198cedd553aaa5e8838b82011d6999bc6431935691见于 2022 年)首先收集系统信息(包括用户名和操作系统详细信息),并将其传输到 C2 服务器。

苦涩结局:揭秘八年间谍丑闻(下)

AlmondRAT 收集系统信息。

RAT 包括目录列表、文件传输(上传和下载)和 shell 命令执行的标准功能。

苦涩结局:揭秘八年间谍丑闻(下)

AlmondRAT C2 命令处理。

在 AlmondRAT 的另一个变种(55901c2d5489d6ac5a0671971d29a31f4cdfa2e03d56e18c1585d78547a26396见于 2022 年)中,C2 地址和命令等字符串以加密格式存储。

苦涩结局:揭秘八年间谍丑闻(下)

AlmondRATC2 加密字符串的使用。

字符串加密采用 AES-256-CBC 加密,密钥和初始化向量 (IV) 通过 PBKDF2 算法导出。解密代码与 BDarkRAT 中使用的解密代码相同。

WmRAT

WmRAT 是一款 C++ RAT,最早于2022 年被发现,随后在Proofpoint记录的 2024 年攻击活动中再次出现。该 RAT(4e3e4d476810c95c34b6f2aa9c735f8e57e85e3b7a97c709adc5d6ee4a5f6ccc发现于 2023 年)首先会解密一些字符串(包括 C2 地址),然后调用其主函数。之后,它会连接到 C2 服务器并开始接收命令。

如果没有收到命令,RAT 会收集系统信息,例如用户名、计算机名称和操作系统。然后将收集到的信息发送到 C2 服务器,RAT 等待 C2 命令。

苦涩结局:揭秘八年间谍丑闻(下)

WmRAT 信息收集。

WmRAT 支持基本功能,例如捕获屏幕截图、窃取文件和执行 PowerShell 命令。C2 命令是数值,每个数字代表特定的功能。

苦涩结局:揭秘八年间谍丑闻(下)

WmRAT C2 命令。

WmRAT 中的几乎所有字符串都是加密的,在某些情况下使用字符减法解密,在其他情况下使用字符加法解密。

苦涩结局:揭秘八年间谍丑闻(下)

WmRAT 字符串解密例程。

WmRAT 还通过创建大量垃圾线程来实施某种反分析。这些线程会循环 1000 次,仅用于获取基本的机器信息。这可能是为了在受害者环境的日志中产生噪音。

苦涩结局:揭秘八年间谍丑闻(下)

WmRAT 代码用无用事件填充系统日志。

它还Sleep在整个代码中频繁调用该函数作为一种规避技术。

在对 WmRAT 进行调查的过程中,我们观察到来自不同来源的大量野外样本。我们的原生代码差异分析功能使我们能够快速聚类样本并识别共享的代码函数。这帮助我们识别不同的变体,并通过精确定位独特代码来指导我们的 YARA 规则创建工作流程。

苦涩结局:揭秘八年间谍丑闻(下)

对多个 WmRAT 样本进行聚类。

ORPCBackdoor

ORPCBackdoor 是一个于2022 年出现的 C++ 后门。该后门(8aeb7dd31c764b0cf08b38030a73ac1d22b29522fbcf512e0d24544b3d01d8b3,出现于 2022 年)最初会收集各种系统详细信息,包括用户名、计算机名称、操作系统和正在运行的进程。

苦涩结局:揭秘八年间谍丑闻(下)

ORPCBackdoor 正在收集系统信息

ORPCBackdoor 实现了基本的 C2 功能,包括从 C2 服务器下载文件和执行 shell 命令。

苦涩结局:揭秘八年间谍丑闻(下)

ORPCBackdoor C2 命令处理

后门使用 RPC 协议与 C2 服务器通信。

苦涩结局:揭秘八年间谍丑闻(下)

ORPCBackdoor 通过 RPC 连接到 C2 服务器。

C2 命令和许多其他字符串在运行时被分批进行十六进制编码和解码。

苦涩结局:揭秘八年间谍丑闻(下)

ORPCBackdoor 解码十六进制字符串。

2023年,一个名为“神秘大象”(又名“ APT-K-47 ”)的新组织利用ORPCBackdoor攻击与巴基斯坦外交事务相关的受害者。该变种与2022年的版本完全相同,仅C2地址有所不同。

MiyaRAT

MiyaRAT 是另一个用 C++ 编写的 RAT,于2024 年首次被发现。该 RAT(df5c0d787de9cc7dceeec3e34575220d831b5c8aeef2209bcd81f58c8b3c08ed,发现于 2024 年)最初使用硬编码端口连接到其 C2 服务器。然后,它会收集基本系统信息,包括用户名、计算机名称和操作系统详细信息。

苦涩结局:揭秘八年间谍丑闻(下)

MiyaRAT 收集系统信息。

C2 地址通过简单的减法运算解密,即将硬编码密钥的字符从加密值中减去。系统信息被连接起来,并使用竖线字符 ( "|") 分隔各个值,发送到 C2 服务器。

MiyaRAT 具有多种命令功能,包括 shell 命令执行、文件删除、屏幕截图和目录枚举。

苦涩结局:揭秘八年间谍丑闻(下)

MiyaRAT C2 命令处理。

在 Proofpoint 于2024年末发现的一个变体(c7ab300df27ad41f8d9e52e2d732f95479f4212a3c3d62dbf0511b37b3e81317)中,RAT 将其版本号附加到系统信息有效负载中,而第一个变体将此信息存储在 PDB 字符串中。

苦涩结局:揭秘八年间谍丑闻(下)

MiyaRAT 旧版(左)与新版(右)C2 有效载荷格式。

与 MiyaRAT 的第一个变种不同,该变种在传输之前通过使用硬编码的单字节密钥对每个字节进行异或运算来加密所有 C2 通信。

2025 年 5 月,Proofpoint 发现了一个新的 MiyaRAT 变种(c2c92f2238bc20a7b4d4c152861850b8e069c924231e2fa14ea09e9dcd1e9f0a,见于 2025 年)。此版本 (v5.0) 的功能与其前身几乎完全相同,仅进行了少量修改。一个显著的变化是它扩展了字符减法算法在字符串解密中的应用,并且仍然使用硬编码的二进制密钥。

该变体采用单字节异或加密进行 C2 通信,但其加密实现方式与之前的变体不同。虽然 C2 命令现在经过混淆,仅显示其首字符,但该变体保留了与之前相同的功能和命令集。

苦涩结局:揭秘八年间谍丑闻(下)

MiyaRAT 旧 C2 命令(左)与新 C2 命令(右)。

虽然代码功能保持不变,但实现方式的改变使得基于代码模式创建检测签名变得更加困难。基于字符串的 YARA 规则能够检测到大多数 MiyaRAT 变种,但由于新近混淆的字符串,它未能检测到最新变种 (v5.0)。Threatray 的检测功能基于代码重用算法,使我们能够通过查找与过去 MiyaRAT 变种的结构相似性来轻松检测到它。

苦涩结局:揭秘八年间谍丑闻(下)

Threatray 检测到 MiyaRAT 5.0。

KiwiStealer

KiwiStealer 是一款简单的文件窃取程序,于2024 年末首次被发现。该窃取程序(4b62fc86273cdc424125a34d6142162000ab8b97190bf6af428d3599e4f4c175见于 2024 年)首先收集计算机名称和用户名。它还会检索当前系统时间,以便稍后检查计算机上文件的最后修改时间。

苦涩结局:揭秘八年间谍丑闻(下)

KiwiStealer 正在读取系统信息。

然后将计算机名称和用户名附加到 C2 路径(在运行时解密)并发送到 C2 服务器,同时从受害者的机器中窃取文件。

苦涩结局:揭秘八年间谍丑闻(下)

KiwiStealer 正在构建 C2 路径。

KiwiStealer 搜索以下预定义的目录列表来收集文件。

苦涩结局:揭秘八年间谍丑闻(下)

KiwiStealer 需要遍历的硬编码目录列表。

该窃取程序仅窃取小于 50MB 且在过去一年内被修改过的文件。它会搜索具有以下扩展名的文件:。z7, .txt, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf, .rtf, .jpg, .zip, .rar, .apk, .neat, .err, .eln, .ppi, .er9, .azr, .pfx, .ovpn

窃取程序将收集的文件路径及其最后修改时间戳写入日志文件C:ProgramDatawinlist.log

此后,窃取者会读取日志文件并窃取收集的文件。

苦涩结局:揭秘八年间谍丑闻(下)

KiwiStealer 从受害者的机器中窃取文件。

C2 地址和其他字符串通过字符串反转和修改后的凯撒密码(ROT2)的组合进行编码。

苦涩结局:揭秘八年间谍丑闻(下)

KiwiStealer 解码字符串。

KugelBlitz

KugelBlitz 是一个于2024年末发现的 Shellcode 加载器。该加载器(a56b5e90a08822483805f9ab38debb028eb5eade8d796ebf0ff1695c3c379618见于 2024 年)通过命令行将 Shellcode 从指定的文件加载到内存中。如果未指定文件,则默认为run.bin.

苦涩结局:揭秘八年间谍丑闻(下)

KugelBlitz 解析命令行以获取有效载荷文件名。

shellcode 的加载过程很简单:它使用为 shellcode 分配内存VirtualAlloc,将文件内容读入分配的内存中,然后执行它。

苦涩结局:揭秘八年间谍丑闻(下)

KugelBlitz 将 shellcode 文件加载到内存中并执行。

Proofpoint 在实际操作过程中观察到 Bitter 使用 KugelBlitz 部署了 Havoc C2 框架。更多详情,请参阅 Proofpoint 博客第一部分。

共享有效载荷TTP

在Bitter多样化且不断发展的恶意软件库中,我们发现了几个一致的TTP(战术、技术、流程和协议),从而更清晰地描绘出该组织的开发实践和行动策略。这些共同特征不仅有助于识别Bitter的杰作,还表明他们的工具具有共同的来源或共享的开发资源。

持续的信息收集

几乎所有 Bitter 恶意软件家族都有一个惊人的共同点,那就是其初始受害者系统侦察的方法。恶意软件会定期收集一组标准信息:

  • 计算机名称:用于标识特定的机器。

  • 用户名:用于识别活跃用户。

  • 操作系统详细信息:通常从注册表值中提取ProductName。

苦涩结局:揭秘八年间谍丑闻(下)

常见的信息收集模式。

这种收集计算机名称、用户名和操作系统信息的一致模式在 ArtraDownloader、WSCSPL Backdoor、MuuyDownloader、WmRAT、MiyaRAT 和 Kugelblitz 等恶意软件中很明显,表明初始系统指纹识别采用了标准化方法。

编码和加密的演变

较老的恶意软件家族,例如 ArtraDownloader、Keylogger 和 WSCSPL Backdoor 的早期版本,主要依赖简单的字符加减运算来对重要字符串进行编码和解码。MuuyDownloader、WmRAT 和 MiyaRAT 也依赖于非常相似的字符减法模式。

苦涩结局:揭秘八年间谍丑闻(下)

早期恶意软件家族的简单字符算法。

随着工具的不断演变,Bitter 逐渐融入了简单的 XOR 加密技术。MuuyDownloader(其中每个字符串可能拥有各自独特的密钥,而其他变种则对所有字符串使用同一个密钥)、BDarkRAT(对网络数据包使用硬编码密钥)以及 MiyaRAT 的后续变种(用于 C2 通信)尤其体现了这一点。

苦涩结局:揭秘八年间谍丑闻(下)

后期恶意软件家族使用的XOR加密。

BDarkRAT 和 AlmondRAT 这两个 .NET 恶意软件家族均采用 AES-256-CBC 加密技术。其密钥和初始化向量均使用 PBKDF2 算法导出。这两个恶意软件家族的实现方式完全相同。

苦涩结局:揭秘八年间谍丑闻(下)

BDarkRAT 和 AlmondRAT AES-256-CBC 加密实现。

代码模式变化和迭代开发

虽然核心功能通常保持不变,但一些恶意软件家族在不同版本中表现出代码模式的差异。这在以下方面尤为明显:

C2 有效载荷构造: ArtraDownloader 和 MuuyDownloader 在其各种迭代中展示了连接或格式化发送到 C2 服务器的数据的不同方法

苦涩结局:揭秘八年间谍丑闻(下)

ArtaDownloader C2 格式变化。

苦涩结局:揭秘八年间谍丑闻(下)

MuuyDownloader C2 格式变体。

字符串解密例程:即使底层加密逻辑相似(例如字符减法或异或运算),ArtraDownloader、MuuyDownloader 和 MiyaRAT 变种的解密函数具体实现也可能存在差异。例如,MiyaRAT v5.0 虽然功能与其前身相同,但字符串解密和 C2 异或运算的代码模式有所调整,这使得基于签名的检测更具挑战性。

苦涩结局:揭秘八年间谍丑闻(下)

ArtraDownloader 字符串解密变体。

苦涩结局:揭秘八年间谍丑闻(下)

MuuyDownloader 字符串解密变体。

苦涩结局:揭秘八年间谍丑闻(下)

MiyaRAT 字符串解密变体。

结论

通过此次合作研究,我们对Bitter (TA397)组织持续八年多的间谍活动进行了全面的剖析。通过Proofpoint对大量遥测数据的分析以及Threatray对恶意软件的深入分析,我们揭示了该组织不断演变的TTP(战术、技术、流程和方法),从最初的访问方法和实际操作,到其多样化且定制开发的有效载荷库。我们的研究结果揭示了其一致的操作模式、跨恶意软件家族的共同开发实践以及独特的基础设施特征。结合观察到的目标定位和诱饵策略,我们共同评估Bitter (TA397)极有可能是一个受政府支持的威胁行为者,其任务是为印度政府收集情报。通过分享这些详细的洞察、YARA规则和入侵指标,我们旨在赋能全球网络安全社区,使其能够更好地检测、缓解并最终摧毁Bitter (TA397)。

附录:指标和YARA规则

相关 IOC 也可在我们的GitHub 存储库中找到。

https://github.com/threatray/threat-research

原文始发于微信公众号(Ots安全):苦涩结局:揭秘八年间谍丑闻(下)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月9日08:21:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   苦涩结局:揭秘八年间谍丑闻(下)https://cn-sec.com/archives/4147714.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息