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)。 ![类型](https://img.shields.io/badge/type-Loader%2FDownloader-red) ![框架](https://img.shields.io/badge/framework-BrowserAutomationStudio-orange) ![混淆](https://img.shields.io/badge/obfuscation-garble%20(Go)-yellow) ![C2](https://img.shields.io/badge/C2-capri--blue.com-lightgrey) ![分析](https://img.shields.io/badge/analysis-static-blue) ![状态](https://img.shields.io/badge/campaign-active%20(cert%20valid%20to%20Jul%202026)-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 地址批量处理, 云安全监控, 威胁情报, 底层编程, 开发者工具, 恶意软件分析, 日志审计, 网络信息收集, 静态分析