Lux1dus/LabRAT-C2-Framework

GitHub: Lux1dus/LabRAT-C2-Framework

基于 Flask 的轻量级 HTTP 命令与控制框架,用于红队操作训练和恶意软件架构研究。

Stars: 0 | Forks: 0

#### ⚠️ 免责声明 本项目是一个概念验证,专为教育、网络安全研究以及在获得授权的受控环境中进行测试而开发。作者 仅对任何因滥用、损害或非法使用本项目而产生的行为承担责任。在未获得明确许可的系统上使用此工具可能属于违法行为。
# 🐀 C2 Tactical Ops (LabRAT) ![Python](https://img.shields.io/badge/Python-3.x-blue?style=for-the-badge&logo=python&logoColor=white) ![Flask](https://img.shields.io/badge/Flask-Backend-black?style=for-the-badge&logo=flask&logoColor=white) ![SQLite](https://img.shields.io/badge/SQLite-Database-003B57?style=for-the-badge&logo=sqlite&logoColor=white) ![Vanilla JS](https://img.shields.io/badge/Vanilla_JS-Frontend-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black) ## 快速体验 (System Preview) 以下是 labRAT 启动服务器后的控制中心界面。

LabRAT Dashboard Preview

**想知道这个系统在实际运行中是怎样的吗?** [👉 部署与演示 (DEPLOYMENT_PoC.md)](DEPLOYMENT_PoC.md) ## I. 背后的故事 (The Backstory & Motivation) ### 灵感来源 一切源于一次真实的事件:我的室友不小心执行了木马程序,误以为它是一个游戏。尽管当时我们立即进行了应急响应,但为了确保绝对安全,最终我们还是不得不重装了整个系统。 这件事给我留下了一个深刻的思考。我不想仅仅停留在使用杀毒软件和被动防御上,我想真正触及“冰山的一角”。这就是 **labRAT** 诞生的原因。通过从零开始构建一个 C2 Framework,我的核心动力是全面理解威胁参与者 是如何建立通信机制、维持持久性、逃避防御系统并在目标机器上执行操作的。 ### 个人目标 * 不想“只懂攻击”,而是借此步入“系统架构”的世界。更深入地理解恶意软件的运作方式。 * 建立紫队 思维:深入理解恶意软件的工作原理,从而设计出更有效的蓝队 防御方案。 ## II. 项目概述 ### 摘要 - **labRAT (C2 Tactical Ops)** 是一个基于 Client-Server 架构的微型命令与控制 系统。 - 该系统允许管理员通过实时 Web 控制面板 监控和远程控制 Agent(目标)。 - Agent 被设计为能够自动收集系统指纹(CPU、RAM、OS),接收指令,隐蔽执行并通过 HTTP Polling 将结果报告回服务器。 ### 技术栈 系统采用模块化架构设计,优化了轻量级和独立性。以下是核心组件: | 组件 | 技术 | 角色与特性 | | :--- | :--- | :--- | | **Backend**
*(C2 Server)* | `Python (Flask)`
`SQLite3` | 处理 RESTful API,管理命令队列。持久化存储 Agent 的状态、命令历史和事件日志。 | | **Frontend**
*(Command Center)* | `HTML5 / CSS3`
`Vanilla JS` | 提供暗色战术界面。使用 Fetch API 处理 AJAX,持续更新 DOM 数据而无需重新加载页面。 | | **Client**
*(Agent / Payload)* | `Python`
`PyInstaller` | 使用 `os`、`subprocess`、`psutil`、`winreg` 深入操作系统。将 payload 打包为独立的 `.exe` 文件。
*(注意:编译后的可执行文件不会在此存储库中发布。)* | ## 🚀 快速开始 (Getting Started - Local Lab) 要在本地环境 内部署和测试 LabRAT,请按照以下步骤操作: ### 1. 环境配置 下载源代码并安装依赖库: ``` # Clone repository (如果您正在 Git 上查看) git clone https://github.com/Lux1dus/LabRAT.git cd LabRAT # 安装库 pip install -r requirements.txt ``` ### 2. 启动 C2 Server 在 `C2_Server` 目录下打开终端并运行: ``` cd C2_Server python server.py ``` *默认情况下,服务器将在端口 **1234** 上进行监听。您可以通过以下地址访问 Dashboard:`http://127.0.0.1:1234`* ### 3. 部署 Agent (Target) 在 `C2_Agent` 目录下打开一个新的终端: ``` cd C2_Agent # 以脚本形式运行 agent 以测试连接 python agent.py ``` *注意:请确保 `agent.py` 中的 `SERVER_URL` 变量正确指向服务器的 IP 地址(默认为 localhost)。* ### 🔄 工作流程 ![工作流程](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1bffe8bf7e175351.png) 系统分为 3 个明确的子系统,它们通过 RESTful API 相互通信。系统的核心是 `C2 Server` 和作为中转站的 `SQLite Database`。 为了保持流畅的连接,Agent 采用结合了 Beaconing(接收指令和报告状态)的 Polling 机制,而 Dashboard 则使用 AJAX Polling 持续实时更新数据。 ## III. API 架构与数据流分析 系统依靠 8 个核心 API 运作,对 UI (0.5s) 和 Agent (1s) 应用 Polling 以实现极低延迟。 | 子系统 | Endpoint | 方法 | 核心功能 (处理流程) | | :--- | :--- | :--- | :--- | | **Agent** | ``/api/agent_checkin`` | POST | 注册新 Agent,收集硬件信息,生成 bot_id。 | | **Agent** | `/api/sync` | POST | Beaconing 维持连接(报告 CPU/RAM)并从队列 中获取命令。 | | **Agent** | `/api/post_result` | POST | 将 Shell 执行结果返回给 C2 并存入 Database。 | | **Transfer** | `/api/transfer/upload` | POST | 服务器读取文件 -> Base64 -> 发送给 Agent 写入目标机器。 | | **Transfer**| `/api/transfer/download` | POST | Agent 读取文件 -> Base64 -> 发送到服务器作为战利品 保存。 | | **UI** | `/api/dashboard_data` | GET | app.js 每 0.5s 调用一次,获取整个数据库状态以更新 DOM (实时)。| | **UI** | `/api/send_command` | POST | 将操作员 输入的命令推送到数据库的命令队列 中。 | | **UI** | `/` | GET | 返回 index.html (Tactical Dashboard 界面)。 | ### 深入通信架构图 为了阐明上述 Endpoint 的处理过程,下面是详细的数据流图,准确说明了在一个命令执行生命周期中,Agent、C2 Server 和数据库层 是如何相互交互的: ![API 架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a18483cc46175413.png) ## V. 当前的限制与待改进之处 作为一个实验室项目,**labRAT** 如果被部署在具有严格监控系统 (EDR/IDS) 的实战环境中,仍然存在一些核心弱点: | 限制 | 技术原因 | 安全风险 | | :--- | :--- | :--- | | **嘈杂的网络流量**
*(Noisy Network Traffic)* | Agent 设定了固定的每 1 秒一次的 Beaconing (静态心跳)。 | 极易被网络流量分析系统 发现异常。 | | **明文通信**
*(Plaintext HTTP)* | 所有命令和结果都通过未加密的 HTTP 通道传输。 | 监控工具或 IDS (如 Wireshark, Snort) 可以通过抓包 读取所有数据。 | | **Payload 体积过大**
*(Heavy Payload)* | 使用 Python 编写并通过 PyInstaller 打包的 Agent 通常会生成 >10MB 的 `.exe` 文件。 | 容易被传统杀毒软件 (AV) 根据特征 识别、分析和拦截。 | ## VI. 未来发展路线图 为了将 labRAT 升级为接近研究级 的 C2 Framework 并提高防御规避 能力,发展路线图分为以下几个阶段: | 阶段 | 升级模块 | 技术细节描述 | 核心目标 | | :---: | :--- | :--- | :--- | | **Phase 2** | **扩展武器化**
*(Offensive Modules)* | 增加 Keylogger、截屏 和凭据转储 功能。 | 提升后渗透 阶段的情报收集能力。 | | **Phase 3** | **分布式潜伏**
*(Redundant Persistence)* | 不仅依赖 Registry,Agent 将通过多个节点进行分化并维持连接:Scheduled Tasks、WMI Events 或 DLL Hijacking。构建一个交叉监控的“Watchdog”进程。 | 确保 Agent “不朽”。如果受害者删除了 Registry 键值,备用机制将立即恢复连接。 | | **Phase 4** | **通信加密**
*(Payload Encryption)* | 集成 TLS/HTTPS 或使用如 AES-256 配合 RSA 密钥交换等强加密算法对 API 数据进行自定义包装。 | 抵御网络数据包分析,完全隐藏控制操作。 | | **Phase 5** | **心跳隐形**
*(Beacon Jittering)* | 与其休眠固定的 1s,Agent 将使用随机休眠时间算法 (例如:2s ± 15%)。 | 欺骗蓝队基于静态周期的网络行为分析算法。 | | **Phase 6** | **Payload 优化**
*(Compiled Language)* | 将所有 Agent 源代码从 Python 转换为低级编译语言,如 `C/C++`、`Rust` 或 `Golang`。 | 将文件大小降至最低 (< 2MB),消除依赖库,并增加逆向工程 的难度。 |

Made with 💻 and ☕ by Lux1dus

标签:C2框架, CMS安全, Flask, IP 地址批量处理, JavaScript, LabRAT, pdftotext, PoC, Python, SQLite, 后门, 命令与控制, 安全学习资源, 恶意软件研究, 教育目的, 数据展示, 无后门, 暴力破解, 木马研究, 漏洞挖掘, 红队, 网络信息收集, 网络安全, 远程管理, 逆向工具, 隐私保护