0xAquila/c2-framework

GitHub: 0xAquila/c2-framework

一个面向红队教育的命令与控制框架,在可读的代码库中实现了工业级加密通信、诱饵伪装与完整操作员仪表板。

Stars: 0 | Forks: 0

# C2//OPS 框架 一个为作品集展示和红队教育而构建的命令与控制框架。在一个清晰且易于理解的代码库中,实现了真实的对手基础设施技术——信标通信、C2 配置文件、加密通信、ECDH 前向保密以及操作员工具。 ![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-TLS%201.3-black?logo=flask) ![License](https://img.shields.io/badge/License-Educational-red) ![Status](https://img.shields.io/badge/Status-Complete-brightgreen)
## 仪表板 ![Diagram architecture](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/aa9550598d211932.png) ## ![包含两个活跃 agent 的网络地图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1471d85367211934.png) ## 安全架构 这不是一个基础的“通过 HTTP 发送命令”演示。每一层都经过了加固: | 层 | 实现 | |---|---| | **传输层** | TLS 1.3 — 自签名证书,CN: `nexacloud.io` | | **有效载荷** | AES-256-CBC — 每条消息随机生成 IV,base64 编码传输 | | **密钥交换** | ECDH (SECP256R1) — 通过 HKDF-SHA256 派生的按会话密钥。截获某个 Agent 的流量不会危及任何其他会话。 | | **身份验证 — Agent** | ECDH 后发放的按 Agent 会话令牌。注销一个令牌仅会使该 Agent 失效。 | | **身份验证 — 操作员** | X-Operator-Key 网关请求头 + 基于会话的登录。`/login` 在没有该请求头的情况下会返回 404 —— 与任何缺失的页面无异。 | | **错误页面** | 所有错误(404/403/405/500)均渲染为 Nginx 风格的模板。每个响应的 `Server` 头都被伪装为 `nginx/1.24.0`。 | | **证书锁定** | SHA-256 指纹嵌入在生成的 Agent 中。MITM 代理出示不同的证书 —— Agent 会静默退出。 | | **静态数据库** | 敏感的 SQLite 字段(主机名、IP、用户名、命令、结果)在列级别使用 AES-256-CBC 进行加密。 | | **Agent 标识** | 随机 UUID 持久化到隐藏文件中 —— 而非使用 MAC 地址。 | | **机密信息** | 无硬编码的备用值。如果缺少任何机密信息,服务器将拒绝启动。 | | **速率限制** | 信标端点有速率限制。触发限制将返回 404 —— 与令牌错误的情形一致,无法被指纹识别。 | ## C2 Profile — 伪装诱饵 服务器会主动进行伪装。每种类型的访问者都会得到不同的响应: | 访问者 | 拥有 | 看到的内容 | |---|---|---| | Agent | `X-Beacon-Token` 请求头 | 信标端点(加密) | | 操作员 | `X-Operator-Key` 请求头 + 凭证 | 重定向到 `/login` → 仪表板 | | 分析师 / 扫描器 | 无 | NexaCloud 诱饵站点 | | 任何不带请求头访问 `/login` 的人 | 无 | `404 Not Found`(nginx 错误页面) | ![NexaCloud decoy site](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/aeb157aa14211935.png) ## 功能特性 **操作员仪表板** - 实时网络地图 —— Agent 显示为节点,识别操作系统,点击查看详细面板 - 标记有 MITRE ATT&CK 的命令结果 - 截图画廊 —— 通过信标通道传输的截图 - 事件日志 —— 每次注册、任务和结果的完整审计跟踪 - Agent 备注 —— 操作员对每个受感染主机的注释 - 载荷生成器 —— 预配置的 Python Agent - 投放器生成器 —— PowerShell, Python, Bash, VBScript, VBA 宏投递载体 **Agent 能力** ``` shell arbitrary shell command sysinfo hostname, IP, OS, username, arch screenshot full screen capture → gallery clipboard read clipboard (Windows/Linux) netstat active connections arp ARP table (network discovery) privs privilege level + admin check ps running processes env environment variables download file exfiltration (base64) upload file write to victim sleep change beacon interval live keylogger start/dump/stop persist add/remove HKCU Run key (Windows, survives reboot) kill terminate agent ``` ## 快速开始 ### 前置条件 - Python 3.10+ - pip - [Burp Suite 社区版](https://portswigger.net/burp/communitydownload)(用于操作员访问) ### 1. 安装依赖 ``` pip install -r requirements.txt ``` ### 2. 生成机密信息 ``` cd server python setup_secrets.py ``` 这将创建 `server/.env` 文件,其中包含所有机密信息的加密随机值。操作员密码只会打印一次 —— 请妥善保存。 ### 3. 生成 TLS 证书 ``` python gen_cert.py ``` 创建 `cert.pem`、`key.pem` 和 `cert_fingerprint.txt`(用于 Agent 证书锁定)。 ### 4. 启动服务器 ``` python app.py ``` 服务器在 `https://0.0.0.0:5000` 上启动。 ### 5. 配置 Burp Suite 以进行操作员访问 `/login` 是一个隐藏的端点 —— 对于任何没有携带正确 `X-Operator-Key` 请求头的请求,它都会返回 `404 Not Found`。登录界面对扫描器、分析师和没有网关请求头的浏览器是不可见的。即使知道 URL,没有密钥也无济于事。 在每个请求中自动注入请求头的最简单方法是: 1. 打开 Burp Suite → **Proxy** → **Options** → **Match and Replace** → **Add** 2. Type: `Request header` 3. Match: *(留空)* 4. Replace: `X-Operator-Key: <你的 .env 中的 OPERATOR_KEY>` 5. 将浏览器设置为使用 Burp 的代理(`127.0.0.1:8080`) ![Burp Suite Match and Replace rule](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d947744a86211936.png) 6. 访问 `https://127.0.0.1:5000` —— 服务器检测到请求头并重定向到 `/login` 7. 接受自签名证书警告,然后使用 `.env` 中的 `OPERATOR_USER` / `OPERATOR_PASS` 登录 ![Login page with injected header](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1898978df5211937.png) ### 6. 部署 Agent **选项 A — 手动(开发/测试)** 编辑 `agent/config.py`: ``` C2_SERVER = "https://:5000" API_KEY = "" ENCRYPTION_KEY = "" CERT_FINGERPRINT = "" ``` 然后运行: ``` python agent/agent.py ``` **选项 B — 生成器(推荐)** 1. 在仪表板中,转到 **Generator** 选项卡 2. 输入服务器地址,调整信标间隔 3. 点击 **Generate Agent** → 下载文件 4. 生成的 Agent 已预先填充所有配置,包括证书指纹 ## 系统架构 ![Architecture Overview](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/aa9550598d211932.png) ## 效果图 | 截图 | 事件日志 | |---|---| | ![Screenshot gallery](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1cb88c708e211939.png) | ![Event log](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/cb41bd6eef211940.png) | ![Payload generator](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/71f91b608d211941.png) ## 加密机制 ![Encryption layers](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/24a10d7469211942.png) **无加密(HTTP)** —— Wireshark 可以读取所有内容: ![Wireshark unencrypted](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/63d7111dd2211943.png) **使用 TLS + AES** —— 零可读内容: ![Wireshark encrypted](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f50db9acba211944.png) ## 项目结构 ``` c2-framework/ ├── server/ │ ├── app.py Flask factory — config, blueprints, TLS │ ├── crypto.py AES-256-CBC + ECDH + HKDF │ ├── database.py SQLAlchemy models with EncryptedText columns │ ├── extensions.py Flask-Limiter instance │ ├── gen_cert.py TLS cert generator + fingerprint output │ ├── setup_secrets.py One-time secret generation → .env │ ├── mitre.py MITRE ATT&CK command → technique mapping │ ├── routes/ │ │ ├── agent.py Beacon endpoints (ECDH, rate-limited) │ │ ├── operator.py Operator API │ │ ├── auth.py Gateway + session auth │ │ ├── gallery.py Screenshot gallery │ │ ├── generator.py Agent + dropper generator │ │ ├── eventlog.py Event log │ │ └── map.py Network map │ └── templates/ Jinja2 HTML templates ├── agent/ │ ├── agent.py Hardened agent — ECDH, cert pinning, all commands │ └── config.py Per-deployment configuration ├── diagrams/ Architecture and flow diagrams ├── screenshots/ Dashboard and feature screenshots ├── requirements.txt ├── HOW_IT_WORKS.md Technical deep-dive ├── BUILD_PROCESS.md Build narrative and design decisions └── README.md ``` ## 文档 - **[HOW_IT_WORKS.md](HOW_IT_WORKS.md)** —— 各组件的详细技术说明,附带架构图和 Wireshark 抓包分析 - **[BUILD_PROCESS.md](BUILD_PROCESS.md)** —— 真实的构建记录,涵盖架构决策、挑战以及安全加固过程 ## 技术栈 `Python 3.10+` · `Flask` · `SQLAlchemy` · `SQLite` · `cryptography` · `Flask-Limiter` · `Pillow` · `TLS 1.3` · `AES-256-CBC` · `ECDH SECP256R1` · `HKDF-SHA256`
标签:AES-256加密, DNS 反向解析, ECDH前向保密, Flask, HTTP(S)信标, HTTP工具, Malleable C2, Python, TLS 1.3, XML 请求, 后端开发, 命令与控制框架, 安全开发, 安全演示项目, 无后门, 流量加密, 私有化部署, 端口转发与代理, 红队基础设施, 红队教育, 网络安全, 证书锁定, 防御规避, 隐私保护