beatsbyluca/RBToolsBetaTest-loader-analysis
GitHub: beatsbyluca/RBToolsBetaTest-loader-analysis
对 RBToolsBetaTest BAS 加载器(混淆 Go 下载器 + 滥用的 BrowserAutomationStudio 框架)的静态安全分析报告,提供 IOC 指标、YARA 规则及应急响应指南。
Stars: 0 | Forks: 0
# RBToolsBetaTest:混淆的 Go Loader + 被滥用的 BrowserAutomationStudio 框架
如果您认为自己运行过此程序,请跳转至[紧急检查清单](#emergency-checklist)。


-yellow)


-brightgreen)
## 概述
此样本并非单一的自包含病毒。它是一个 **BrowserAutomationStudio (BAS / Bablosoft)** 应用程序包,由一个独立的、**经 garble 混淆的 Go 启动器** (`loader.exe`) 驱动。真正的恶意逻辑是一个**名为 "RBToolsBetaTest" 的远程 BAS 脚本**,该脚本在运行时从 Bablosoft 云基础设施下载。该脚本不包含在这些文件中,操作者可以随时对其进行更改。
Go 启动器携带了一个内嵌的**用于 `capri-blue.com` 的 Let's Encrypt TLS 证书**(有效期从 2026-04-15 至 2026-07-14),这表明存在一项活跃的活动,该活动滥用了一个合法的、极有可能已被入侵的品牌域名作为命令与控制 (C2) / 投递基础设施。
关键词:BrowserAutomationStudio、Bablosoft、BAS 滥用、Go loader、garble、downloader、证书绑定、被滥用的域名、RBToolsBetaTest。
| 字段 | 值 |
| --- | --- |
| 分类 | Loader / downloader(Go,已混淆)加上被滥用的 BAS 远程执行框架 |
| 置信度 | 关于架构和 IOC 具有高置信度。无法静态确认最终 payload 的行为(远程获取) |
| 活动状态 | 活跃。内嵌的签名证书有效期至 2026-07-14 |
| 分析方法 | 仅限静态分析。该样本从未被执行 |
## 仓库结构
```
.
|-- README.md this file
|-- analysis/ full write up and notes
|-- iocs/
| |-- hashes.txt SHA-256 of every file in the bundle
| |-- network.txt domains and endpoints
| |-- certificate.txt embedded cert details
|-- detection/
| |-- yara/ YARA rules (see Detection section)
|-- malicious/ NOT included. See Responsible Disclosure
```
## 工作原理
1. 受害者运行 `loader.exe`。它是一个 Go 二进制文件,其唯一的静态导入是 `kernel32.dll`。其他所有内容都在运行时解析,这有利于规避检测,并且其符号表由 garble 进行了随机化。
2. BAS 环境分阶段部署。根据 `remote_settings.ini`,引擎存储在用户 AppData 文件夹下(`IsEnginesInAppData=true`,`KeepVersionNumber=5`)。
3. 获取远程脚本。`project.xml` 声明了 ` `。`Mode=1` 表示远程模式:向 Bablosoft 云查询脚本属性,下载受保护的引擎 v28.8.1 (`engine.zip`) 和脚本,然后启动 `FastExecuteScript.exe` 来运行它。
4. payload 执行远程获取的代码。下载的 BAS 脚本才是真正的 payload。因为它是每次运行时实时拉取的,所以不包含在此样本中,并且其行为可以随时更改。
5. 操作者基础设施。Go loader 内嵌了 `capri-blue.com` 的证书,这很可能是 C2 / 投递主机,与 Bablosoft 脚本托管分开。
`debug.txt` 日志显示此循环运行了大约 396 次,重复请求 `scripts/RBToolsBetaTest/properties` 并跨许多不同的 PID 拉起 `FastExecuteScript.exe`。
## loader.exe 内部原理(静态)
构建:Go `1.18.7`,`CGO_ENABLED=0`,`GOARCH=amd64`,`GOOS=windows`。Module path 被混淆为 `MmyxLKMyT` 且符号被随机化(例如 `main.zbgrvzmhca`),这与 garble 混淆器一致。
它是什么:
- 一个独立于 BAS 包的组件。`loader.exe` 没有引用 `FastExecuteScript`、`project.xml`、`RBTools`、`Bablosoft`、`engine.zip` 或 `appsremote` 中的任何一个。`debug.txt` 是由官方 Bablosoft loader 生成的,而该 loader 并不存在于此集合中。这个 Go 二进制文件是一个独立的、由攻击者编写的随附 downloader / 启动器。
- 网络通过系统证书存储(`crypt32.dll`、`secur32.dll`)使用 HTTPS,加上内嵌的 `capri-blue.com` 叶子证书,这与到该 C2 主机的 TLS 证书绑定是一致的。
- 不存在明文 URL、请求路径、HTTP 方法或 User-Agent。这些是在运行时构建的或被 garble 进行了字符串加密,因此静态分析无法恢复确切的 endpoint 和下载的内容。
它明显没有做的事情:
- 没有进程注入。存在的线程上下文 API(`SuspendThread`、`GetThreadContext`、`SetThreadContext`、`ResumeThread`)是 Go 运行时调度器抢占的一部分,而匹配到 "inject" 字符串的是 `runtime.injectglist`,这是一个调度器函数。能够证明真实注入的 API(`VirtualAllocEx`、`WriteProcessMemory`、`CreateRemoteThread`、`NtMapViewOfSection`、`NtUnmapViewOfSection`、`QueueUserAPC`)是不存在的。
- 二进制文件中没有内嵌的 PE payload,没有篡改 AMSI 或 ETW,也没有 hooking 库。
- 没有明文的持久化字符串(没有 `schtasks`,没有 `...\CurrentVersion\Run`)。
误报关键字匹配,特此记录:`persist` 解析为 `persistentalloc`(Go allocator),`etw` 是 "network" 的子字符串,而 `inject` 是 `injectglist`。
静态能力总结:带证书绑定的 HTTPS C2,子进程启动(`CreateProcessW`),文件系统访问,以及通过标准 Go `os/user`(`netapi32`、`userenv`)进行的宿主机/用户枚举。这是一个混淆的 downloader / 启动器的能力集,而不是注入器或自包含的窃取器。真正的第二阶段隐藏在网络调用和 garble 混淆之后。
## C2 基础设施
**capri-blue.com**,操作者 C2 / 投递主机。
日志中观察到的 Bablosoft 云(默认服务器,`Server=""`)endpoint:
```
GET scripts/RBToolsBetaTest/properties
appsremote/RBToolsBetaTest/SID002b1c93/engine/FastExecuteScript.exe
```
## 内嵌证书
| 字段 | 值 |
| --- | --- |
| Subject | CN = capri-blue.com |
| Issuer | CN = E7 (Let's Encrypt ECDSA intermediate) |
| Serial | 05D151C20AD872A2D2C11E3263161EF5D8E7 |
| SHA-1 thumbprint | 2A:D3:B8:A2:CC:69:11:65:05:8E:70:42:FC:1F:AF:0D:73:DD:DF:1D |
| Valid from | 2026-04-15 18:36:34 UTC |
| Valid to | 2026-07-14 18:36:33 UTC |
## MITRE ATT&CK
映射反映了静态观察到的情况。标记为推断的项目取决于未被恢复的远程 payload。
| 技术 | ID | 证据 |
| --- | --- | --- |
| User Execution: Malicious File | T1204.002 | 受害者运行 `loader.exe` |
| Obfuscated Files or Information | T1027 | `loader.exe` 中的 garble 符号和字符串混淆 |
| Ingress Tool Transfer | T1105 | Downloader 检索远程 BAS 引擎和脚本 |
| Application Layer Protocol: Web | T1071.001 | 到 `capri-blue.com` 的 HTTPS C2,已绑定证书 |
| Subvert Trust Controls: Code Signing | T1553.002 | 域名证书被填入 Authenticode 槽位中 |
| Compromise Infrastructure: Domains | T1584.001 | 滥用合法的 `capri-blue.com` 域名 |
| Command and Scripting Interpreter | T1059 | BAS 引擎执行下载的自动化脚本(推断) |
| Credentials from Password Stores | T1555 | 常见的 BAS 滥用,取决于远程脚本(推断) |
| Boot or Logon Autostart Execution | T1547.001 | 静态未观察到。动态确认 |
## 归因和操作者详情
- 构建或测试机器的用户名为 `максим`(西里尔文,"Maxim"),从日志路径中恢复(出现时为乱码编码 `ìàêñèì`)。表明处于俄语环境中。
- BAS 脚本名 `RBToolsBetaTest`,SID `002b1c93`,引擎版本 `28.8.1`,属性响应 `"free":false`(Bablosoft 受保护引擎机制背后的一种付费或封闭脚本)。
- 该脚本被重复更新。日志中出现了多个版本哈希(参见 IOC)。
## 文件哈希 (SHA-256)
```
a51f0098534815303bcd46317fc51dd055e9a95ff81e0bc64d7e9f4b36d9f4a0 loader.exe
55faebb8f5e28cde50f561bbd2638db7edcfd26e7ee7b975e0049b113145ae38 Qt5Gui.dll
335cec3a5f9082f083190660932b6641f682f4c5818ffbd6ffa98c9d0c24e0f1 Qt5Network.dll
ea31035fa96ba656d64b58d4f1a9dd210df7154afad3d4f96ee36b41584e4360 Qt5Svg.dll
400fa69aa8803f6c3a6f9a5fc956475d0396095c4b6d4665b7aa29bbcb8e3640 Qt5Widgets.dll
086d6ba24f34a269856c4e0159a860657590d05aabb2530247e685543b34c52f qgenericbearer.dll
c209d080a62f5e67ddc01a3ae6b4f9b103faf4104c93b7dbb5ffa8d548bf0cd5 qnativewifibearer.dll
11e0deb19f0e17f2461414948ee25cc4283d2cd059326369218e3b8061d00ab2 project.xml
efc3a099238b9e63556b7b0342029830843072fff4a721ce95abcdaaa94f302c remote_settings.ini
3baff54e49ad2381dc2f1d3b83f2d0c334430e6f5a00db125d29034cf2035ba2 debug.txt
```
Qt5 DLL 和 bearer 插件是 BAS 附带的标准 Qt 5 运行时。它们是良性组件,列出是为了让防御者识别完整的包。
## BAS 远程脚本版本 (SHA-1)
这些是日志中随着时间的推移看到的脚本版本,可用于跟踪活动:
```
a37602f6f1e098ee05f0d86e5602a8474f752092
c8f40d0c56cc376db43cbdc3159b28782ba0b712
1d02e0981c3f3179d297b0d9fcba6f84a1fec6c4
e13c613efb9f419ef7bb191ff91cc3c53debf727
52d2dabefc382bb200326d95701340b61ec2dd4e
```
## 网络 IOC
```
capri-blue.com (abused / likely compromised legitimate domain)
scripts/RBToolsBetaTest/properties
appsremote/RBToolsBetaTest/SID002b1c93/engine/
```
## 主机 / 文件系统 IOC
```
%LOCALAPPDATA%\BasEngines\enginesprotected\28.8.1\engine.zip
appsremote\RBToolsBetaTest\SID002b1c93\engine\
loader.exe sitting next to Qt5*.dll, project.xml and remote_settings.ini
```
## 检测规则
YARA。两个规则:一个用于带有内嵌证书的混淆 Go loader,一个用于 BAS 包构件。
```
rule RBToolsBetaTest_GoLoader
{
meta:
description = "Garble obfuscated Go loader embedding the capri-blue.com C2 certificate"
reference = "RBToolsBetaTest defensive analysis"
date = "2026-06-05"
hash = "a51f0098534815303bcd46317fc51dd055e9a95ff81e0bc64d7e9f4b36d9f4a0"
strings:
$go = "Go buildinf:"
$domain = "capri-blue.com" ascii
$serial = { 05 D1 51 C2 0A D8 72 A2 D2 C1 1E 32 63 16 1E F5 D8 E7 }
condition:
uint16(0) == 0x5A4D and filesize < 8MB and $go and ($domain or $serial)
}
rule RBToolsBetaTest_BAS_bundle
{
meta:
description = "BrowserAutomationStudio bundle used by the RBToolsBetaTest campaign"
reference = "RBToolsBetaTest defensive analysis"
date = "2026-06-05"
strings:
$a = "RBToolsBetaTest" ascii
$b = "appsremote/RBToolsBetaTest" ascii
$c = "FastExecuteScript.exe" ascii
$d = "enginesprotected" ascii
$e = "SID002b1c93" ascii
condition:
2 of them
}
```
## 紧急检查清单
如果您怀疑自己在 Windows 上运行过此程序:
1. 寻找 BAS 痕迹:`%LOCALAPPDATA%` 下的 `BasEngines` 文件夹,任何 `FastExecuteScript.exe` 进程,以及包文件。
2. 将 `loader.exe` 的 SHA-256 提交到 VirusTotal。预期会有通用检测,例如 Bablosoft、BAS 或 Go 混淆启发式检测。
3. 检查持久性。静态无法看到,因此在运行时确认:Run 键、计划任务和 Startup 文件夹。
4. 一旦确认确切的子域名或 IP,就阻止到恶意 `capri-blue.com` 主机的出站 TLS。
5. 将其视为潜在的凭证窃取。轮换密码、浏览器会话和 cookie,以及存在于机器上的任何 token。远程 BAS 脚本在执行期间可能做了任何事情。
快速 Windows 检查:
```
Get-ChildItem "$env:LOCALAPPDATA\BasEngines" -ErrorAction SilentlyContinue
Get-Process FastExecuteScript -ErrorAction SilentlyContinue | Select-Object Id, Path
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" | Format-List
```
## 报告
| 内容 | 位置 |
| --- | --- |
| 向 MalwareBazaar 提交哈希 | https://bazaar.abuse.ch/submit/ |
| 向 URLhaus 提交域名和 URL | https://urlhaus.abuse.ch/api/#submit |
| 滥用 capri-blue.com | 通知品牌方并运行 `whois capri-blue.com` 获取托管联系人 |
| 被滥用的证书 | 向 Let's Encrypt 报告(序列号见上) |
| 被滥用的 BAS 脚本 | 向 Bablosoft 滥用渠道报告,脚本 `RBToolsBetaTest`,SID `002b1c93` |
## 如何保护自己
- 不要运行来自未经验证来源的安装程序或“工具”,特别是破解的、免费的或测试版实用程序。
- 随附完整 Qt 运行时加上一个微小的独立启动器的二进制文件值得仔细端详。
- Authenticode 签名并不意味着受信任。检查证书是否是来自已知 CA 的真实代码签名证书,而不是域名证书。
- 混淆的 Go 二进制文件 在商品化 loader 中很常见。以怀疑的态度对待意外的此类文件。
- 保留一个隔离的 VM 用于测试未知文件,千万不要用您的主力机。
## 负责任的披露
- 不要重新分发可用的二进制文件。此仓库仅发布哈希、IOC 和检测内容。要分享实际样本,请使用经过审查的平台(例如 MalwareBazaar)并进行正确标记,而不是使用带有可运行可执行文件的普通仓库。
- 不要指责 capri-blue.com。将其定性为被滥用或极有可能被入侵的合法基础设施,并通知品牌方及其主机。
- 将脚本报告给 Bablosoft 滥用渠道,并将证书报告给 Let's Encrypt。
## 分析局限性
- 真正的 payload(远程 BAS 脚本)不在此样本中,而是在运行时获取,因此静态上无法确认确切的行为(数据窃取、自动化目标、持久性)。
- API 引用表明代码或标准库中存在相关能力,而不是使用的证据。在隔离的 VM 中通过动态分析进行确认。
- 确认 C2 行为需要通过在带有网络捕获的受控环境中进行引爆。
## 免责声明
本仓库仅用于教育和防御性研究。所有 IOC、分析和检测规则均“原样”提供,不提供任何保证。在采取行动之前独立进行验证。作者对滥用行为不承担任何责任。
## 许可证
CC0 1.0 Universal。所有 IOC、哈希和分析均可自由重新分发。
标签:AI合规, DAST, DNS 反向解析, IP 地址批量处理, 云安全监控, 威胁情报, 底层编程, 开发者工具, 恶意软件分析, 日志审计, 网络信息收集, 静态分析