rbx86/C2Revenant

GitHub: rbx86/C2Revenant

一个基于 Rust 和 Flask 的轻量级 C2 框架,用于安全教学与攻防演练中的远程命令执行与信标管理模拟。

Stars: 0 | Forks: 0

# C2 框架指南 :D ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1821c12163100849.png) ## 环境搭建 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架构, 中高交互蜜罐, 信标, 可视化界面, 命令与控制, 安全学习资源, 恶意软件开发, 攻击模拟, 数据展示, 无后门, 毕业设计, 红队, 网络信息收集, 网络基础设施, 网络安全, 网络流量审计, 跨平台编译, 逆向工具, 隐私保护, 驱动签名利用