Gusbtc/BebopC2

GitHub: Gusbtc/BebopC2

一款面向红队行动的异步 C2 框架,提供跨平台 beacon、加密通信和基于浏览器的多操作员协作控制台。

Stars: 23 | Forks: 4

BEBOP C2 Logo

Version Win32 Linux Go License

用于红队操作的异步 C2 框架。Go teamserver,适用于 Windows 和 Linux 的 C beacon,基于浏览器的操作员控制台。

Session graph view

Session table view

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..."

标签:C2框架, DAST, ELF, Golang, Gophish, PE 加载器, Teamserver, Web控制台, Win32, XML 请求, 反取证, 命令与控制, 安全学习资源, 安全开发, 安全编程, 安全评估, 客户端加密, 异步通信, 恶意软件分析, 数据包嗅探, 数据可视化, 无线安全, 日志审计, 渗透测试框架, 网络信息收集, 网络安全, 远程控制, 防御, 隐私保护