5 月 19 日,Unit 42 的研究人员发现一个上传到 VirusTotal的样本,有 56 家安全商家都认为它是安全的。但Unit 42 的研究人员认为该样本存在恶意负载、命令和控制 (C2) 以及其他恶意特征。
该样本包含一个与 Brute Ratel C4 (BRc4) 相关的恶意负载,这是最新上市的攻击模拟工具,此工具具有独特的危险性,因为它专门设计用于避免端点检测和响应 (EDR) 以及防病毒 (AV) 功能的检测。前面提到的 VirusTotal 上供应商之间缺乏检测可以清楚地证明其这样做的有效性。
研究人员发现样本通过 443 端口调用位于美国的 Amazon Web Services (AWS) IP 地址。此外,侦听端口上的 X.509 证书被配置为在组织中冒充 Microsoft “Microsoft”的名称和“Security”的组织单位。此外,以证书和其他工件为中心,研究人员总共确定了 41 个恶意 IP 地址、9 个 BRc4 样本以及迄今为止受到此工具影响的北美和南美另外三个组织。
这个独特的样本以与已知的 APT29 技术及其最近的活动一致的方式封装,这些活动利用了众所周知的云存储和在线协作应用程序。具体来说,这个样本被封装为一个独立的 ISO。ISO 中包含一个 Windows 快捷方式 (LNK) 文件、一个恶意负载 DLL 和 Microsoft OneDrive Updater 的合法副本。尝试从安装 ISO 的文件夹中执行良性应用程序会导致通过称为 DLL 搜索顺序劫持的技术将恶意负载作为依赖项加载。然而,虽然单独的封装技术不足以明确地将这个样本归于 APT29,但这些技术表明该工具的用户现在正在应用民族国家的间谍技术来部署 BRc4。
本文详细概述了BRc4 ,以及它与最近的 APT29 样本之间的比较,以及可用于寻找此活动的危害指标 (IoC) 列表。
Brute Ratel C4 于 2020 年 12 月作为渗透测试工具首次被发现。其开发者Nayak 在西方网络安全供应商积累了多年的工作经验。在过去的两年半中,Nayak 在特性、功能、支持和培训方面对渗透测试工具进行了改进。
Checkmate发布说明
然而,更令人担忧的是,发布说明还特别指出“此版本是在对几个顶级 EDR 和防病毒 DLL 进行逆向工程之后构建的。”
BRc4目前标榜自己为“红队和对手模拟的定制指挥和控制中心”。5 月 16 日,Nayak 宣布该工具已获得 350 名客户中的 480 名用户。
BRC4客户声明
最新版本《Brute Ratel v1.0》(西西里防御)于5月17日发布,目前售价为每用户2500美元,每次更新2250美元。基于这样的价格和客户基础,BRc4在未来一年的销售额将超过100万美元
BRc4授权和成本
在功能方面,BRc4公布了以下功能:
SMB和TCP有效负载提供了在合法网站(如Slack, Discord, Microsoft Teams等)上编写自定义外部C2通道的功能;
内置调试器用于检测EDR用户域挂钩;
能够使 EDR 和 AV 隐藏内存伪影;
即时直接调用 Windows SYS;
通过HTTP、HTTPS、DNS、HTTPS、SMB和TCP出口;
LDAP Sentinel提供了一个丰富的GUI界面,用于查询对域或森林的各种LDAP查询;
多个命令和控制通道:多个枢轴选项,如SMB、TCP、WMI、WinRM和通过RPC管理远程服务;
截屏;
x64 shellcode加载程序;
反射和目标文件加载程序;
解码KRB5票据并将其转换为hashcat;
修复Windows 事件跟踪 (ETW);
修复反恶意软件扫描接口 (AMSI);
创建 Windows 系统服务;
上传和下载文件;
通过 CreateFileTransacted 创建文件。
端口扫描;
截至 2022 年 6 月 27 日的样本
VirusTotal中的文件名为Roshan_CV.iso (SHA256: 1FC7B0E1054D54CE8F1DE0CC95976081C7A85C7926C03172A3DDAA672690042C) 的文件似乎是一个名为 Roshan 的简介。它于 2022 年 5 月 19 日从斯里兰卡上传到 VirusTotal。ISO 文件扩展名是指光盘映像文件,源自国际标准化组织的 ISO 9960 文件系统,通常用于备份 CD/DVD 文件。ISO 文件不是恶意文件,需要用户双击才能将ISO作为Windows驱动器挂载。最后,将 ISO 的压缩文件显示给用户。在本例中,当双击 ISO 时,用户会看到以下内容:
查看 ISO 映像
如上图所示,用户将看到一个名为 Roshan-Bandara_CV_Dialog 的文件,该文件具有 Microsoft Word 的虚假图标图像,据称是一个人的简历,并用 Microsoft Word 编写。从窗口对话框中可以确定 ISO 是在 2022 年 5 月 17 日构建的,这和新 BRc4 发布是同一天。
如果用户双击该文件,它将在用户的机器上安装 Brute Ratel C4。
默认情况下,在 Windows 操作系统上,隐藏文件不会显示给用户。在下图中,有四个隐藏文件隐藏在视图之外。如果打开了显示隐藏文件的功能,用户会看到如下信息:
启用“显示隐藏文件”查看 ISO 映像
用户可以看到的诱饵文件是一个 Windows 快捷方式文件 (LNK),具有以下属性:
Roshan-Bandara_CV_Dialog 属性
Microsoft 快捷方式文件(具有 .lnk 文件扩展名的文件)包含丰富的元数据,可用于提供有关文件的工件。该文件的一些关键工件是:
1.链接 CLSID:20D04FE0-3AEA-1069-A2D8-08002B30309D:此处使用的 CLSID 不是 LNK 文件的普通 CLSID,因为此 CLSID 与控制面板相关联(始终为图标视图);
2.命令行参数:%windir%/system32/cmd.exe /c start OneDriveUpdater.exe;
3.图标位置:C:\Program Files\Microsoft Office\root\Office16\WINWORD.EXE;
双击 Roshan-Bandara_CV_Dialog 时,会发生以下行为:
cmd.exe 使用以下参数启动:
1./c start OneDriveUpdater.exe. /c 参数指示 cmd.exe 通过 Windows 启动命令从当前工作目录启动 OneDriveUpdater.exe 并退出。
2.OneDriveUpdater.exe是一个由微软数字签名的二进制文件,用于将数据从本地计算机同步到云端。它不是恶意的,而是被滥用来加载攻击者的 DLL。执行 OneDriveUpdater.exe 后,将发生以下操作:
(1)由于 Version.dll 是 OneDriveUpdater.exe 的依赖 DLL,与 OneDriveUpdater.exe 位于同一目录下,因此会被加载。
(2)Version.dll 已被攻击者修改以加载加密的有效负载文件 OneDrive.update。修改解密文件并在内存中加载第一阶段的 shellcode。为了维护代码功能,攻击者使用 DLL API 代理将请求转发到名为 vresion.dll 的合法 version.dll。Vresion.dll 是攻击者的 version.dll 的依赖文件,将与攻击者的 version.dll 一起加载。
3.内存中的代码,即 Brute Ratel C4,在 RuntimeBroker.exe 进程空间中作为 Windows 线程执行,并开始与 TCP 端口 443 上的 IP 174.129.157[.]251 通信。
具体过程如下:
双击 Roshan-Bandara_CV_Dialog 时的执行流程
ISO 文件 Roshan_CV.ISO 的组成与其他民族国家 APT 交易的组成非常相似。下表显示了 Roshan_CV.ISO 与之前确定的 APT29 样本 (Decret.ISO) 的并排比较。
与已知 APT29 样本的数据包的对比
Roshan_CV.ISO 和 Decret.ISO 在双击时如下图所示,下图是默认 Windows 文件资源管理器的屏幕截图;未勾选“显示隐藏文件”。在下图中,用户都会看到一个快捷方式文件(LNK 文件),双击该文件就会启动恶意活动。
并排比较安装的ISO截图,未启用“显示隐藏文件”功能
并排比较安装的ISO截图, “显示隐藏文件”已启用
执行流程如下:
Roshan_CV.ISO→Roshan-Bandar_CV_Dialog.LNK→cmd.exe→OneDriveUpdater.exe→version.dll→OneDrive.UpdateDecret.ISO→Decret.LNK→cmd.exe→HPScan.exe→version.dll→HPScanApi.dll
封装的 ISO 文件通常通过鱼叉式网络钓鱼电子邮件活动发送或由第二阶段下载器下载给受害者。
虽然目前还无法深入了解此特定负载是如何传递到目标环境的,但已观察到在 5 月 19 日至 20 日期间,来自三个斯里兰卡 IP 地址的 C2 服务器的连接尝试。
version .dll是一个用c++编写的合法Microsoft文件的修改版本。植入的代码用于加载和解密加密的有效载荷文件。解密的有效载荷是 shellcode(x64 程序集)的有效载荷,进一步用于在主机上执行 Brute Ratel C4。
为了使 Version.dll 保持其 OneDriveUpdater.exe 的代码功能,攻击者包括合法的数字签名 Microsoft version.dll 并将其命名为 vresion.dll。每当 OneDriveUpdater.exe 调用攻击者的 Version.dll 时,调用都会代理到 vresion.dll。因此,攻击者的 version.dll 将加载 vresion.dll 作为一个依赖文件。
植入的代码在通过 DLL_PROCESS_ATTACH 加载 DLL 时开始,并在 DLLMain 子例程中执行以下操作:
1.枚举所有进程并找到 Runtimebroker.exe 的进程 ID (PID)。
2.从当前工作目录中读取负载文件 OneDrive.Update。
3.使用步骤 1 中的进程 ID 调用 Windows API ntdll ZwOpenProcess。进程以完全控制访问权限打开。
4.使用 28 字节密钥的 XOR 加密算法解密有效负载文件:jikoewarfkmzsdlhfnuiwaejrpaw。
5.调用 Windows API NtCreateSection,它会创建一个可以在进程之间共享的内存块。此 API 用于与 Runtimebroker.exe 和 Version.dll 共享内存。
6.两次调用 Windows API NtMapViewOfSection。第一次调用将解密的有效载荷的内容映射到当前进程内存空间,第二次调用将内容映射到 Runtimebroker.exe 内存空间。
7.调用 Windows API NtDelayExecution 并休眠(暂停执行)约 4.27 秒。
8.调用 Windows API NtCreateThreadEx。此 API 使用复制到 Runtimebroker.exe 的内存起始地址启动一个新线程。
9.调用 Windows API NtDelayExecution 并休眠(暂停执行)约 4.27 秒。
10.完成。
上面概述的技术通过未被记录的Windows NTAPI调用使用进程注入。解密的有效负载现在在runtimebroker.exe内存空间中运行。下面是来自version.dll的代码片段,它开始执行内存中解密的有效负载。
Version.dll 调用 NtCreateThreadEx
解密的有效负载文件是 x64 shellcode(汇编指令),它涉及一系列解包执行。汇编指令包括多个 push 和 mov 指令。这样做的目的是将Brute Ratel C4代码(x64汇编)每次以8个字节复制到堆栈上,并最终将其重新组装到一个内存空间中执行——一个带有删除的 MZ 标头的 DLL。使用一系列 push 和 mov 指令可以避免内存扫描,因为 shellcode 是按模块组装的,而不是暴露整个代码库进行扫描。解密有效载荷的入口点如下:
解密有效负载的 Version.dll 入口点
拆包涉及 25772 条 push 和 25769 条 mov 指令。完成后,代码将执行以下操作:
1.使用 API 哈希(ROR13 - 向右旋转 13)查找 NtAllocateVirtualMemory 的哈希。所有 API 调用都是通过 API 哈希查找进行的。
2.从 NtAllocateVirtualMemory 的系统服务调度表 (SSDT) 中解析系统调用索引。所有 Windows API 函数都是通过 syscalls 生成的,这是 Brute Ratel C4(Syscall Everything)的一个特性。
3.调用 Windows API NtAllocateVirtualMemory,分配 0x3000 字节的内存。
4.对 NtAllocateVirtualMemory 进行第二次 Windows API 调用,它为Brute Ratel C4使用的配置文件分配内存。
5.将前面步骤中压入堆栈的 shellcode 复制到新分配的内存段。
6.使用 Windows API 调用 NtProtectVirtualMemory 更改新分配的内存块的保护。
7.使用新分配内存的起始地址调用 NtCreateThreadEx,并将配置数据作为参数传递。
8.完成。
以下是调用 NtCreateThreadEx 并开始执行第二阶段 shellcode 的代码片段。
调用第二层 shellcode
配置数据作为参数传递给新线程的起始地址。该数据包括加密配置的Brute Ratel C4。加密后的内容如下:
BRc4 加密配置
数据采用 base64 编码和 RC4 加密,16字节的RC4解密密钥为:bYXJm/3#M?:XyMBF
解密后的配置文件为:
每个参数都用竖线|字符,其中一个值是前面看到的 IP 174.129.157[.]251 和端口 443。
IP 174.129.157[.]251 托管在 Amazon AWS 上,Palo Alto Networks Cortex Xpanse 历史显示,该 IP 在 2022 年 4 月 29 日至 2022 年 5 月 23 日期间开放了 TCP 端口 443,并使用自签名 SSL 证书模拟微软安全:
subjectFullName:C=US,ST=California,O=Microsoft,OU=Security,CN=localhost
序列号:476862511373535319627199034793753459614889484917
sha256_fingerprint:d597d6572c5616573170275d0b5d5e3ab0c06d4a9104bbdbe952c4bcb52118c9
一旦与 IP 174.129.157[.]251 的 SSL 握手完成,以下数据将通过 HTTP POST 发送到 Brute Ratel C4 侦听器端口。
BRc4 HTTP POST
为了识别与Brute Ratel C4相关联的内存中的解密负载,研究人员根据独特的内存中汇编指令 push 和 mov 进行了搜寻。这些指令用于构建第二层 shellcode。在 VirusTotal 中搜索,我们发现了具有相同 push 和 mov 指令的第二个样本:
文件名:badger_x64.exe;
SHA256:3AD53495851BAFC48CAF6D2227A434CA2E0BEF9AB3BD40ABFE4EA8F318D37BBE;
文件类型:Windows 可执行文件 (x64);
包含“badger”一词的文件名非常显眼。“badger”一词代表用于远程访问的有效负载。当上传到 VirusTotal 时,66 家供应商中只有两家认为样本是恶意的。目前,12 家供应商将该样本认定为恶意样本,其中 8 家将该样本归类为“Brutel”,这表明其内存代码与 Brute Ratel C4 的代码存在某种关联。
并排比较badger_x64.exe的入口点和我们解密的OneDrive.Update 样本:
OneDrive.Update 和 badger_x64.exe 的比较
当 badger_x64.exe 完成 push 和 mov 指令后,它使用 API 哈希进行与 OneDrive.Update 相同的 Windows API 调用,但不使用直接系统调用(Brute Ratel C4 的用户配置功能)。badger_x64.exe 示例如下:
badger_x64.exe 调用shellcode
与 OneDrive.Update 示例一样,传递给调用线程的参数是 Brute Ratel C4 的配置数据。在此示例中,数据未经过 base64 编码或 RC4 加密,而是以明文形式传递。以下是用于此示例的配置:
在本例中,示例配置为在 TCP 端口 443 上与 IP 159.65.186[.]50 进行通信。
基于以下内容,我们可以得出结论,OneDrive.Update 确实与 Brute Ratel C4 相关联。
1.配置文件结构相同,使用符号"|"来划分字段。
2.用于通过 NtCreateThreadEx/CreateThread 运行第二阶段 shellcode 的相同 Windows 调用模式。
3.用于将 shellcode 复制到内存分配的函数指令匹配。
4.两个第二阶段的 shellcode 样本都有以下引用单词“badger”的字符串。注意:OneDrive.Update 示例 RC4 会加密这些字符串。
imp_BadgerBadgerDispatchBadgerDispatchWBadgerStrlenBadgerWcslenBadgerMemcpyBadgerMemsetBadgerStrcmpBadgerWcscmpBadgerAtoi
5.Badger* 名称与 BRc4 GitHub 网站上列出的导出名称相匹配。
文件 badger_x64.exe 是一个独立的 x64 可执行文件,运行 Brute Ratel C4(badger 有效负载),而解密的 OneDrive.Update 文件是 Brute Ratel C4 的内存组件,使用攻击者修改后的 DLL version.dll 执行。
在验证 badger_x64.exe 和 OneDrive.Update 都是 BRc4 有效负载后,就可以分析Badger_x64.exe 样本了。
VirusTotal记录显示,该样本是由乌克兰的一名网络用户于2022年5月20日上传的。巧合的是,这恰好是Roshan_CV.ISO文件上传后的时间。
如上所述,该示例被配置为在端口 443 上调用 159.65.186[.]50。该端口在 2022 年 5 月 21 日至 6 月 18 日期间开放,使用上面看到的相同的“Microsoft Security”自签名SSL证书。值得注意的是,在C2基础设施被配置为侦听回调之前,示例实际上已经上传到VirusTotal。
在过去的一年中,伪造的 Microsoft Security X.509 证书已被应用到 41 个 IP 地址。这些地址分布在全球,主要由大型虚拟专用服务器 (VPS) 托管服务提供商所有。
参考及来源:https://unit42.paloaltonetworks.com/brute-ratel-c4-tool/