你的主 C2 陷入静默。域名被列入黑名单。信标被标记。EDR 终止了进程。你出局了。
你需要第二条通道——一条从一开始就不可能被封锁的通道。
如果命令与控制流量看起来完全就像一名员工在把文件同步到 Dropbox,会怎样?
这就是 Stratum。命令和响应以普通文件的形式在云存储文件夹内传输。Agent 从不连接攻击者基础设施。唯一可观测的流量是发往目标防火墙早已列入白名单的提供商的 HTTPS——因为封锁 Dropbox 或 OneDrive 就意味着封锁每一位使用它的员工。
没有 teamserver。没有攻击者拥有的域名。没有可疑的 TLS 证书。没有任何可封锁的东西。
OPERATOR CLOUD PROVIDER TARGET
──────── ───────────── ──────
/Machine1/
WebGUI ──HTTPS──► input.txt 🔒 ◄── poll ── agent
output.txt 🔒 ──► read ──┘
heartbeat.txt (encrypted beacon)
代理按可配置的间隔(加上对数正态抖动)唤醒,读取输入文件、执行、加密响应、上传,然后休眠。所有内容均通过 RSA-4096-OAEP + AES-256-GCM 进行端到端加密。操作员的 IP 永远不会出现在目标端的任何网络日志中。
| 提供商 | 说明 | |
|---|---|---|
| Dropbox | OAuth2 刷新令牌 · 企业版和个人版账户 | |
| Microsoft OneDrive | Microsoft Graph API · 个人版和 M365 账户 | |
| Google Drive | Google Drive API v3 · OAuth2 服务流程 | |
| SharePoint Online | Microsoft Graph API · M365 租户站点 | |
| 兼容 S3 | AWS S3 · DigitalOcean Spaces · Backblaze B2 · 任意 S3 端点 |
这五种提供商共享相同的传输格式、相同的 RSA 密钥对和相同的操作员会话。可在数分钟内于行动中途切换提供商,而无需触碰代理。 没有其他开源框架开箱即提供此功能。
想要阻止 C2 的 SOC 会封堵 teamserver 域名或前置基础设施。想要阻止 Stratum 的 SOC 则必须同时封堵 Dropbox、OneDrive、Google Drive、SharePoint 和 S3。这不是一条防火墙规则——而是一个没有企业会做出的商业决策。死信投递架构并不试图规避检测。它运行在防御方已经决定永久信任的基础设施之上。
| 格式 | 平台 | 依赖 |
|---|---|---|
.exe / .dll | Windows | 无——Rust 编译的 PE(MSVC-ABI),无解释器,进程树中无 PowerShell |
.elf | Linux | 无——Rust 编译的 musl 静态链接,可在任意 x86_64 Linux 上运行 |
.bin | Linux / Windows | x64 PIC shellcode——可放入任意外部加载器或注入器 |
向导会生成所有这些格式。你只需回答提示;它负责编译、加密和打包。无需编译器标志、无需环境变量、无需手动密钥管理。
| 模式 | 工作原理 | 最适合 |
|---|---|---|
| staged-enc | 目标上的最小存根。首次运行时:从云端获取一次性引导密钥,在内存中解密完整代理,从云端删除密钥。载荷从不以明文形式接触磁盘。 | 标准行动——初始工件最小,密钥在投递时销毁 |
| stageless-enc | 完整代理嵌入单个投递文件中,使用存根内置密钥加密。投递后无需从云端获取密钥。 | 气隙或受限网络——单个自包含文件 |
| stageless-plain | 代理为明文。命令和响应在传输过程中仍完全加密。 | 实验室和受控环境 |
所有模式共享相同的执行后行为:存根会在本地缓存一个带硬件指纹的加密 blob,以便后续运行从磁盘加载而无需触碰云端。
在触碰任何一个注册表键或 cron 条目之前,先运行 /persist probe。代理会在当前权限级别检查所有可用技术,并返回可行性报告。非破坏性——不会留下任何工件。
/persist probe
✓ schtask-logon — feasible (SYSTEM)
✓ registry-run — feasible
✗ schtask-boot — requires elevation
✓ startup-folder — feasible
...
选择可用的技术,安装它,完成后干净地移除。WebGUI 会按会话跟踪每一项已安装的技术。/kill 用一条命令拆除所有内容——持久化、二进制文件、云工件。
终止日期、维护窗口、对数正态抖动、一次性引导密钥——全部在向导中配置一次,并永久编译进 agent。在行动期间无需管理任何内容,结束时也无需记得清理任何内容。
Stratum 不是 Cobalt Strike、Sliver 或 Havoc 的替代品。它是它们之下的那一层。
Day 1: deploy Stratum alongside your primary C2
Day 4: primary beacon gets flagged, process killed
Day 4: open Stratum session, assess what happened
Day 4: re-introduce primary C2 via Stratum shell
Day 5: back to full access
你的主 C2 负责后渗透阶段。Stratum 负责存活。这是一条永远不会被检测到的通道,因为它从未试图隐藏——它看起来就像 Dropbox。
这与 2025–2026 年记录的威胁行为者在野使用的范式相同:TukTuk(Dropbox + Arweave 死投)、NarwhalRAT/APT37(pCloud)、COBALT MIRAGE/Drokbk(GitHub)。Stratum 将同样的架构以正规框架的形式带到红队一侧,而非一次性植入物。
git clone https://github.com/daniomass/stratum-c2.git
cd stratum-c2
./install.sh --server
编译后的 agent(.exe、.elf、.dll、.bin、原生 Rust)是 Stratum 的核心特性。向导会检测并使用所有可用的目标,仅跳过无法构建的目标。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
# Windows PE / DLL
rustup target add x86_64-pc-windows-gnu && sudo apt install mingw-w64
# Linux musl-static ELF
rustup target add x86_64-unknown-linux-musl && sudo apt install musl-tools
# Flat x64 shellcode
rustup target add x86_64-unknown-none && sudo apt install lld
python3 stratum-server.py
打开 https://<host>:<port>,登录,点击 Deploy。向导会引导你完成提供商凭据、agent 格式、部署模式、持久化身份以及防护措施(终止日期、时间窗口、抖动)的配置。最后,它会为你提供可直接运行的产物。完整设置详情见 wiki(docs/wiki.html)。
# Linux — background, no terminal
chmod +x stub.elf && nohup ./stub.elf &>/dev/null &
# Windows — hidden window (cmd or PowerShell)
start /b stub.exe
会话在首次 beacon 时自动出现在 WebGUI 中。
多操作员、实时、基于浏览器。每位操作员通过 WebSocket 实时看到相同的会话。