ESET 与巴西联邦警察合作,摧毁 Grandoreiro 僵尸网络。由于 Grandoreiro 僵尸网络通信协议中存在设计缺陷,研究人员利用这种缺陷跟踪受害者。
研究人员构建了自动分析系统,处理了数以万记的 Grandoreiro 样本文件。自从 2020 年 10 月以来,该恶意软件一直使用 DGA 算法每天生成一个主域名,以及几个备用的域名。除了当天日期外,DGA 算法还支持静态配置。
Grandoreiro 僵尸网络的运营人员滥用 Azure 和 AWS 等云服务提供商部署攻击基础设施,根据分析人员提供的线索,执法部门逮捕了使用这些服务器的个人。
Grandoreiro 僵尸网络是最常见的拉丁美洲银行木马之一,自从 2017 年以来一直保持活跃。Grandoreiro 僵尸网络的主要攻击目标是西班牙、巴西与墨西哥。当然攻击者也是有阶段性的,20220 年到 2022 年西班牙是受攻击最严重的国家,而后明显转向墨西哥与阿根廷。
检出分布
Grandoreiro 僵尸网络的主体功能并没有太大变化。最初当 Grandoreiro 成功入侵时,就会向 C&C 服务器发起 HTTP GET 请求回传失陷主机的基本信息。随着时间的推移,开发人员后来放弃了该功能。Grandoreiro 会定期监控前台窗口,查看属于 Web 浏览器进程的窗口。在窗口名称与硬编码的银行相关字符串匹配时,恶意软件就会启用与 C&C 服务器的通信,在进程终止前每秒发送一次请求。
运营人员要手动与失陷主机进行交互,才能窃取受害者的财产。恶意软件支持以下功能:
Grandoreiro 僵尸网络一直在持续更新,最频繁时每周都有几个新版本发布。2022 年 2 月,Grandoreiro 在恶意样本中增加了版本标识符。统计可以发现,2022 年 2 月到 6 月平均每四天就发布一个新版本。六月底发布了 V37 版本后,版本号就再也没有发生过变化,这一功能应该是被放弃了。
版本迭代
拉丁美洲的银行木马大多很相似,Grandoreiro 僵尸网络与其他银行木马也很相似。Grandoreiro 将 Downloader 捆绑在 MSI 安装程序中,有时也与 Mekotio 和 Vadokrist 共享 Downloader。最初,Grandoreiro 僵尸网络只在主样本中使用二进制填充,后来也将这种反分析技术增加到 Downloader 中。令人惊讶的是,2023 年第三季度攻击者废止了这项技术,再也没有使用过。
自从 2022 年 2 月以来,分析人员一直在持续跟踪 Grandoreiro 僵尸网络的第二个变种。该变种的大多数 C&C 服务器域名未绑定解析,而且核心功能还在持续改变,应该是开发工作还在进行中。
自从 2017 年以来,研究人员一直监控 Grandoreiro 僵尸网络,提取版本信息、C&C 服务器、受害者等。
DGA 算法被 Grandoreiro 僵尸网络硬编码内置,通过名为 dga_id 的字符串获得引用。分析人员从样本文件中提取了 105 个不同的 dga_id,其中 79 个配置都有绑定解析的 IP 地址。
生成的域名通过 No-IP 的动态 DNS 服务注册,Grandoreiro 僵尸网络的运营方滥用该服务,频繁更改解析关系。这些域名解析的 IP 地址,绝大多数由云服务提供商提供,主要是 AWS 与 Azure。
C&C 地址统计信息
不同配置的 DGA 算法生成的域名都解析到了相同的 IP 地址,这意味着不同的 Grandoreiro 样本文件入侵的受害者都会回连到相同的 C&C 服务器。
攻击基础设施架构
极少数情况下,也有相同的 IP 地址在几天后被其他 dga_id 重用。研究人员最初认为每个 dga_id 是唯一的,但这是不正确的,样本间存在配置共享相同的 dga_id。以下为共享至少一个 IP 地址的所有 DGA 配置都聚合在同一集合中,受害者占比过低的集合将会被忽略。
DGA 集合
最大的集合中包含 78% 的 dga_id,包含了 93.6% 的 C&C 服务器与 94% 的受害者。有消息称 Grandoreiro 提供恶意软件即服务(MaaS),C&C 服务器支持不同的攻击者同时使用。根据上述数据,DGA 生成的据大多数 IP 地址可以聚集在一起,没有明确的分布模式。考虑到网络通信对带宽的要求,研究人员认为不同的 C&C 服务器其实是一个负载均衡,Grandoreiro 很有可能是由单个或者几个小组密切配合的。
Grandoreiro 在失陷主机上线时描会向 C&C 服务器回传受害者的信息,研究人员据此对受害者情况进行了跟踪。连接到 Grandoreiro 的 C&C 服务器的每个受害者都使用 login_string 进行标识,不同版本的 Grandoreiro 样本文件使用的格式不同。通过该字符串可以提取的信息如下所示:
信息 | 比例 | 描述 |
---|---|---|
Operating system | 失陷主机操作系统 | |
Computer name | 失陷主机名称 | |
Country | 所在国家/地区 | |
Version | Grandoreiro 版本 | |
Bank codename | 92% | 银行代码 |
Uptime | 25% | 正常运行时间 |
Screen resolution | 8% | 屏幕分辨率 |
Username | 8% | 受害者用户名 |
Country 是硬编码的字符串,不是通过执行命令获取的,更可能是攻击者预期的受害者所在国家。Bank codename 是银行或者其他金融机构的关键字符串,受害者访问网站就会触发 C&C 回连。Version 也是硬编码的,标识特定的构建系列、版本与时间戳。请注意,某些时间戳仅包含月份和日期,也有部分时间戳包含年份。
版本信息
有人认为 Build ID 实际上标识了攻击者,但也有人持反对意见。该字符串的格式非常混乱,可能与攻击者身份无关。另外,研究人员坚信 P1X 是指 Grandoreiro 运营方使用的名为 PIXLOGGER 的控制台。
此处的统计数据都是从 C&C 服务器获取的,而非通过 ESET 遥测数据获取。
每个 login_string 都包含 version_string,其中绝大多数都包含时间戳信息。最早发现的时间戳为 202 年 9 月 15 日,这也是 Grandoreiro 僵尸网络首次引入 DGA 算法的时间,最新的时间戳为 2023 年 12 月 23 日。
所有 login_string 都包含操作系统信息,受害者中使用 Windows 10 的最多。
操作系统分布
四成左右的受害者都在巴西,其他如下所示:
受害者分布
这只是攻击者预期的国家分布,比如阿根廷的受害者完全没有反映。巴西、墨西哥和西班牙几乎包揽了全部,也有极少部分受害者被标记为 PM(圣皮埃尔和密克隆群岛)、GR(希腊)或 FR(法国)。分析人员认为这些要么是错别字,要么另有含义,而非针对这些国家。
研究人员发现平均每天连接 C&C 服务器的受害者大约 563 人。但这一数字肯定包含重复项,长时间保持连接的情况下会持续发现连接请求。因此,分析人员将唯一特征(如计算机名称、用户名等)作为标识,可以看到平均每天有 551 个受害者。在考虑到已经失陷的受害者的情况下,平均每天有 114 个新的受害者连接到 C&C 服务器。
Grandoreiro 的运营方使用了多种 DGA 算法,但核心逻辑变化不大,最新的更新出现在 2020 年 7 月。
DGA 使用在二进制文件中硬编码的特定配置,存储在多个字符串中。将 JSON 格式化后如下所示:
DGA 配置信息
在绝大多数情况下,base_domain 字段为 freedynamicdns.org 或 zapto.org。如前所述,Grandoreiro 使用 No-IP 进行域名注册。base64_alpha 字段对应于 DGA 使用的自定义 base64 字母表。而 month_substitution 则用于将月份数字代替字符。
dga_table 构成了配置的主要部分。它由 12 个字符串组成,每个字符串有 35 个字段,由 | 分隔。每行的第一个条目是 dga_id。第二个和最后一个条目表示该行的预期月份,其余 32 个字段分别表示该月不同日期的值。
DGA 算法逻辑如下所示,最终输出结果是子域名,该子域名与 base_domain 拼接起来用作当天的 C&C 服务器。
Python 实现的 DGA 算法
以红色突出显示的部分是 Grandoreiro 的故障安全机制,在主域名无法解析时备用。尽管并非所有样本文件都有该机制,但使用的配置文件是固定的。如下所示,每条都由一个 Key、一个前缀和一个基础域名组成。
故障安全机制会采用主 C&C 子域名生成的部分逻辑,遍历所有条目并对其进行异或加密,最后当作前缀前置。
故障安全机制
2022 年 9 月,攻击者在最后一步中取消了对子域名的 base64 编码,而是转为在前面附加一个硬编码前缀。根据分析人员的跟踪,这种方法自 2023 年 7 月以来已经成为主流机制。
Grandoreiro 利用 RTC Portal 进行 C&C 通信,这是构建在 RealThinClient SDK 之上的 Delphi 组件。RTC Portal 在 2017 年已经停止更新,源码也发布到 GitHub 上。从本质上讲,RTC Portal 允许一个或多个控件远程访问一个或多个主机。
Grandoreiro 的运营人员使用控制台连接到 C&C 服务器并与失陷主机进行通信。要连接到网关,需要三个参数:密钥、密钥长度和登录名。
RTC 文档指出,它一次只能处理有限数量的连接。考虑到每个连接的主机每秒至少需要发送一个请求,否则其连接将被丢弃。研究人员认为 Grandoreiro 使用多个 C&C 服务器的原因就是为了不让其中任何一个 C&C 服务器不堪重负。
本文详细介绍了 Grandoreiro 的 DGA 算法,以及攻击基础设施的 IP 重叠。根据对攻击行动的跟踪,技术分析支撑了由巴西联邦警察牵头的执法行动,逮捕了 Grandoreiro 中职位非常高的运营者。