用于红队操作的异步 C2 框架。Go teamserver,适用于 Windows 和 Linux 的 C beacon,基于浏览器的操作员控制台。
Windows beacon 是原生的 Win32 程序,在 IAT 中没有 CRT API 依赖。所有 Windows API 均在运行时通过 PEB 遍历和 DJB2 哈希进行解析。Linux beacon 是一个使用 mbedTLS 进行加密的静态链接 ELF 文件。通信方式为基于 HTTP 的二进制传输,使用通过派生子密钥 (HKDF) 的 AES-256-CBC + HMAC-SHA256 加密。操作员控制台为您提供来自任何浏览器的终端、文件浏览器、会话地图和事件日志。
## 工作原理
```
OPERATOR NETWORK TARGET NETWORK
┌─────────────────────────────────┐ ┌─────────────────────────┐
│ │ │ │
│ ┌──────────┐ ┌────────────┐ │ HTTP/S │ ┌─────────┐ │
│ │ Operator │──>│ Teamserver │──┼─── // ────┼─>│ Beacon │──[WinAPI] │
│ │ Browser │ └──────┬─────┘ │ TCP │ ├─────────┤ │
│ └──────────┘ │ │──── // ───┼─>│ Beacon │──[Linux] │
│ ┌────┴─────┐ │ │ └─────────┘ │
│ │ Builder │ │ │ │
│ │MinGW/musl│ │ │ │
│ └──────────┘ │ │ │
└─────────────────────────────────┘ └─────────────────────────┘
Registration: Beacon ──[RSA-OAEP(session_key + metadata)]──> Teamserver
Checkin loop: Beacon ──[beacon_id]──> Teamserver ──[AES(task)]──> Beacon
Results: Beacon ──[AES(output)]──> Teamserver
Sleep: Beacon sleeps with jitter between checkins
```
## 架构
### Teamserver (Go)
单一二进制文件,无外部依赖。管理 beacon 状态、任务队列、提供操作员 UI,并通过 MinGW (Windows) 或 musl-gcc (Linux) 动态交叉编译 beacon。
- 每个 beacon 的异步任务队列
- SQLite 持久化存储,启动时恢复会话(加载之前的会话或重置)
- 多操作员身份验证 (bcrypt + JWT) 及令牌撤销
- 通过 WebSocket 进行实时操作员聊天(限速,持久化于 SQLite 中)
- 交互式会话模式 — 用于低延迟命令的持久 TCP 连接
- 通过 beacon 进行的 SOCKS5 代理 pivoting(自动分配端口 1080-1099)
- WebSocket hub,用于向所有已连接的操作员实时广播事件
- 启动时生成 RSA 密钥对,保留在内存中
- 不同端口和协议上的多个监听器
- 按需 beacon 编译,带有每次构建的字符串混淆
- 用于 AES 和 HMAC 子密钥的 HKDF 域分离
- 带有 Donut shellcode 和牺牲进程的 Execute-assembly 流水线
### Beacon — Windows (C / Win32)
适用于 Windows x64 的轻量级植入物。通过 WinHTTP 通信,使用 Windows CNG 进行加密。
- 所有 Windows API 均通过 PEB walk + DJB2 哈希解析(零可疑 IAT 条目)
- 匿名管道捕获生成进程的输出
- 20+ 原生命令(ls, ps, whoami, netstat, ipconfig, arp, drives, services, privs, env, clipboard, reg_query, reg_set, runas)通过 WinAPI 实现,除非明确要求,否则不使用 `cmd.exe`
- Execute-assembly:通过 Donut shellcode + 牺牲的 MSBuild.exe 进程进行内存中的 .NET 执行
- 交互式会话模式 — 升级到持久 TCP 用于实时 shell I/O
- SOCKS5 中继,带有基于通道的双向隧道(最多 64 个并发通道)
- 在注册时报告完整性级别 (Medium / High / SYSTEM)
- 带有 64KB 分块流式传输的文件传输(上传和下载)
### Beacon — Linux (C / ELF)
静态链接的 ELF 植入物。使用 mbedTLS 进行加密,运行时无外部依赖。
- 24 个原生内置命令(ls, ps, cat, chmod, curl, portscan, ssh, triagedirectory 等)
- 通过 mbedTLS 实现 AES-256-CBC + HMAC-SHA256,带有恒定时间的 HMAC 验证
- 带有持久 TCP 连接的交互式会话模式
- 带有多通道隧道的 SOCKS5 代理中继
- 带有 64KB 分块流式传输的文件传输(上传和下载)
- XOR 字符串混淆(与 Windows 的流水线相同,每次构建使用新密钥)
- 支持 x86_64 和 aarch64 目标
### 操作员控制台 (web)
基于浏览器的 UI,具有以终端为中心的工作流。由 operator-client 二进制文件提供的模块化原生 JS。无构建步骤。
- JWT 认证登录页面
- 带有持久命令历史的选项卡式终端,并在切换选项卡时保留输出
- 带有树状视图的文件浏览器,上下文菜单操作(cat, download, upload, mkdir, delete, copy path)
- 带有操作员归属时间戳条目的事件日志
- 通过 WebSocket 的实时操作员聊天面板
- 会话地图,显示为带缩放/平移功能的力导向图,以及表格视图
- 右键上下文菜单和双击以与 beacon、会话和监听器进行交互
- 终端全屏模式
- 终端和事件日志之间的可调整大小的面板
- 用于管理渗透文件(下载、删除)的 Loot 选项卡
- 新 beacon 回连时的 Toast 通知
## 规避
### API 哈希
Windows API 函数在运行时通过 DJB2 哈希和 PEB 遍历进行解析。IAT 仅包含 MinGW CRT 函数(memcpy、strlen 等)。不包含来自 WinHTTP、BCrypt、Advapi32、User32 或 kernel32 中任何会暴露 beacon 行为的内容。哈希表在构建时由 teamserver 生成。
### 字符串混淆
所有硬编码字符串(API 路径、主机名、命令名、User-Agent、DLL 名称)在编译时使用 8 字节轮转 XOR 密钥加密。在内存中恰好在使用前解密。混淆生成器作为构建流水线的一部分运行,因此每个编译的 beacon 都会获得一个新密钥。同时适用于 Windows 和 Linux beacon。
传递给 LoadLibraryA 的 DLL 名称(winhttp.dll、bcrypt.dll、advapi32.dll 等)也经过了 XOR 加密,并在运行时于栈中解密。二进制文件中不会出现明文形式的 DLL 名称。
### Shellcode 生成
通过 Donut 生成 .bin 载荷。位置无关的 shellcode,用于直接进行内存注入而无需写入磁盘。
### 流量
AES-256-CBC + HMAC-SHA256 (encrypt-then-MAC),带有 HKDF 域分离(用于加密和身份验证的单独子密钥)。会话密钥在注册期间通过 RSA-OAEP 建立。抖动 (0-100%) 和可配置的休眠间隔可打破周期性的 beacon 模式。
## 协议
所有 beacon 到 teamserver 的流量均使用基于 HTTP 的自定义二进制协议,该协议基于 [OST C2 Spec](https://github.com/rasta-mouse/OST-C2-Spec)。
```
Task header (16 bytes, little-endian):
[0] Type uint8 NOP=0, Exit=1, Set=2, FileStage=3, FileExfil=4, Run=12
[1] Code uint8 subtype
[2:4] Flags uint16 0=ok, 1=error, 4=fragmented, 8=last
[4:8] Label uint32 correlates request/response
[8:12] Identifier uint32 fragment ordering
[12:16] Length uint32 payload size
Wire format:
[0:16] IV 16 bytes, random per message
[16:48] HMAC-SHA256 over IV + ciphertext (derived HMAC key)
[48:] AES-CBC ciphertext (derived AES key)
```
注册使用 RSA-OAEP 传递 beacon 的会话密钥和元数据。之后,所有内容均使用 AES-CBC 加密。
## 设置
### Teamserver
```
chmod +x setup-teamserver.sh
./setup-teamserver.sh
```
### 操作员控制台
```
chmod +x setup-operator.sh
./setup-operator.sh
```
beacon 是根据操作员控制台的 Build 页面按需编译的。选择平台(Windows 或 Linux)、监听器、休眠间隔、抖动和输出格式(EXE、shellcode 或 ELF)。无需手动构建 beacon。
## 项目布局
```
teamserver/
server/ HTTP handlers, routing, listeners, WebSocket hub
session_listener TCP session mode handler
shell_handler Interactive shell connection manager
socks SOCKS5 proxy relay manager
ws_operator Operator WebSocket with chat + event broadcasting
hub WebSocket connection hub
store/ SQLite-backed persistent store (tasks, results, chat)
auth/ Operator authentication (bcrypt, JWT, token revocation)
models/ Beacon, Task, Result, Listener, Event, Terminal, Chat types
protocol/ Binary serialization + crypto (HKDF key derivation)
obfgen/ Build-time XOR string obfuscation
hashgen/ DJB2 API hash generator
builder/ Cross-compilation pipeline (MinGW + musl-gcc)
persist/ JSON state persistence (listeners, beacons, loot)
ui/ Terminal UI helpers
beacon/ Windows x64 implant (Win32 / CNG)
src/
main.c Entry point, checkin loop
comms/
http.c WinHTTP communication
session.c Persistent TCP session mode
shell.c Interactive shell over TCP
socks.c SOCKS5 relay channels
protocol/ AES-CBC + HMAC-SHA256 via CNG, HKDF sub-keys
exec/ Process execution + native commands + execute-assembly
resolve/ PEB walking + DJB2 hash resolution (~100 APIs)
transfer/ File upload/download with 64KB chunked streaming
include/ Headers, config, generated hash tables, XOR strings
beacon-linux/ Linux ELF implant (mbedTLS)
src/
main.c Entry point, checkin loop
comms/
http.c HTTP communication
session.c Persistent TCP session mode
socks.c SOCKS5 relay channels
protocol/ AES-CBC + HMAC-SHA256 via mbedTLS
exec/ Native builtins (24 commands)
transfer/ File upload/download with 64KB chunked streaming
util/ XOR string decryption
include/ Headers, config, generated XOR strings
operator-client/
static/
pages/ HTML (sessions, listeners, build, login)
css/ Stylesheets
js/app/ Modular JS (core, views, terminal, filebrowser, websocket)
js/ xterm.js terminal emulator
img/ Assets
```
## 路线图
### 已完成
- [x] 带有自动证书和自定义标头的多个 HTTP/HTTPS 监听器
- [x] 通过 PEB walk + DJB2 的 API 哈希(约 100 个 API,IAT 中为零个)
- [x] XOR 字符串混淆(命令、路径、User-Agent、DLL 名称)
- [x] 通过 Donut 生成 shellcode
- [x] 原生 Win32 侦察命令(20+ 内置)
- [x] 会话地图、选项卡式终端、事件日志
- [x] 文件传输(使用 64KB 分块流式传输的上传/下载)
- [x] 用于 AES 和 HMAC 子密钥的 HKDF 域分离
- [x] 完整的 IAT 清理(所有 beacon API 均动态解析)
- [x] 交互式会话模式(实时 TCP shell)
- [x] 通过 beacon 进行 SOCKS5 代理 pivoting
- [x] SQLite 持久化存储(替换 JSON)
- [x] 多操作员身份验证(bcrypt + JWT + 令牌撤销)
- [x] 通过 WebSocket 的实时操作员聊天
- [x] 基于 WebSocket 的操作员通信,用于实时 UI 更新
- [x] 操作员管理 CLI(添加、删除、列表)
- [x] Linux beacon(ELF, mbedTLS, 24 个原生内置命令, 会话模式, SOCKS5)
- [x] 用于 .NET 工具的 Execute-assembly(Donut + 牺牲的 MSBuild.exe)
- [x] 带有树状视图和上下文菜单操作的文件浏览器
- [x] 带有操作员归属信息的事件日志记录
## 免责声明
仅供教育和授权安全测试使用。您需对自己如何使用本软件负责。
"See you space cowboy..."