# Python-C2-Stager-Demo **Repository Path**: craftedegg/python-c2-stager-demo ## Basic Information - **Project Name**: Python-C2-Stager-Demo - **Description**: 用python演示了一个完善的C2载荷分阶段下载。仅教学用途。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Powershell, Http, Framework ## README # Python-C2-Stager-Demo 一个用于教育目的的 C2 分段框架演示项目 - 展示载荷分发系统的工作原理。 --- ## ⚠️⚠️⚠️ 重要免责声明 ⚠️⚠️⚠️ **在使用或分发本软件之前,请务必阅读以下内容** ### 法律警告 本软件**仅**用于以下用途: - ✅ **教育目的** - 学习 C2 架构和安全概念 - ✅ **授权安全测试** - 测试你拥有或获得明确书面授权的系统 - ✅ **学术研究** - 在适当的机构监督和伦理指导下进行 ### 禁止事项 在大多数司法管辖区,将本软件用于以下目的**属于违法行为**: - ❌ 未经授权访问计算机系统 - ❌ 未经同意在你不拥有的系统上安装软件 - ❌ 从未授权系统窃取数据 - ❌ 干扰或损坏计算机系统 - ❌ 协助任何形式的网络犯罪 - ❌ 为恶意目的分发恶意软件或攻击工具 ### 法律后果 未经授权使用可能导致: | 司法管辖区 | 相关法律 | 最高刑罚 | |------------|----------|----------| | 美国 | CFAA (18 U.S.C. § 1030) | 10年以上监禁 | | 英国 | Computer Misuse Act 1990 | 10年以上监禁 | | 中国 | 刑法第285/286条 | 7年以上监禁 | | 德国 | §202b StGB | 3年以上监禁 | | 加拿大 | Criminal Code §342.1 | 10年以上监禁 | **此列表并不详尽。大多数国家都有类似立法。** ### 用户责任 使用本软件即表示你**明确同意**: 1. 你已阅读并理解本免责声明 2. 你仅在你拥有或有文档授权测试的系统上使用此工具 3. 你理解滥用行为的法律后果 4. 你**承担全部责任**并对你的一切行为负责 5. 你不会将此工具分发给可能滥用它的人 ### 无担保声明 ``` 本软件"按原样"提供,不提供任何形式的担保,无论是明示的还是暗示的, 包括但不限于适销性担保、特定用途适用性担保和非侵权担保。在任何情况 下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是合同 诉讼、侵权行为还是其他事宜,由软件或软件使用或其他处置引起的或与之 相关的。 ``` **作者不对以下情况负责:** - 本软件滥用造成的任何损害 - 未经授权使用产生的法律后果 - 本软件用户采取的任何行动 - 第三方对本软件进行的任何修改 --- ## 功能特性 - **一键构建**:使用 Nuitka 编译器生成独立可执行文件 - **载荷分发**:HTTP 服务器用于分发载荷文件 - **进程管理**:自动清理旧进程和载荷文件 - **跨平台支持**:基本支持 Windows/Linux/macOS (控制方的http分发服务依赖PowerShell运行脚本,可自行用其他http分发工具替代) - **安全措施**: - 路径遍历防护 - 公网 IP 构建警告 - 编译器安装确认提示 - 仅清理工作目录文件 ## 项目结构 ``` Python-C2-Stager-Demo/ ├── source.py # 主分段客户端代码 ├── build.py # 构建工具,用于生成可执行文件 ├── payloadSender.py # 服务端控制器 ├── httpserver.ps1 # PowerShell HTTP 服务器 ├── config.py # 配置文件(由 build 生成) ├── temp.py # 用于编译的临时副本 ├── requirements.txt # Python 依赖 ├── stager.ico # 可执行文件的默认图标 └── payloads/ # 载荷文件目录 ``` ## 系统要求 ### Python 依赖 ``` nuitka>=4.1.1 requests>=2.28.0 ``` ### 系统要求 - Python 3.10+ - Windows(用于构建 Windows 可执行文件) - PowerShell(用于 HTTP 服务器) - C 编译器(MinGW/GCC/MSVC)- 如缺失,Nuitka 会提示安装 ## 安装 1. 克隆仓库: ```bash git clone https://gitee.com/craftedegg/python-c2-stager-demo cd Python-C2-Stager-Demo ``` 2. 安装 Python 依赖: ```bash pip install -r requirements.txt ``` ## 使用方法 ### 构建分段器 使用 `build.py` 生成自定义可执行文件: ```bash python build.py -ip <服务器IP> -port <服务器端口> -o <输出名称> ``` **参数说明:** | 参数 | 描述 | 默认值 | |------|------|--------| | `-o, --output` | 输出可执行文件名 | `stager.exe` | | `-ip, --ip` | 服务器 IP 地址 | `127.0.0.1` | | `-port, --port` | 服务器 TCP 端口 | `8000` | | `-pi, --pollinginterval` | 轮询间隔(秒) | `5` | | `-i, --icon` | 可执行文件图标 | `stager.ico` | **安全特性:** - 如果你指定了**公网 IP 地址**,构建工具会显示警告并要求确认 - 如果 Nuitka 编译器未配置,工具会请求下载依赖的许可 **示例:** ```bash python build.py -ip 192.168.1.100 -port 9000 -o agent.exe ``` ### 运行服务器 运行 `payloadSender.py`(需要管理员权限): ```bash python payloadSender.py ``` **交互式输入提示:** ``` Enter Target IP> 0.0.0.0 Enter Port> 8000 Enter Web Port> 8090 Enter Payload Name> mypayload ``` ### 准备载荷 将载荷文件放入 `payloads/` 目录: ``` payloads/ ├── mypayload.exe # 主可执行载荷 ├── mypayload.arg # 载荷参数文件 ``` ## 技术细节 ### 通信协议 **TCP 连接:** 1. 客户端连接到服务器 TCP 端口 2. 服务器发送 JSON 配置:`{"exe": "payload.exe", "arg": "payload.arg", "webport": 8090}` 3. 客户端关闭连接 **HTTP 下载:** 1. 客户端从 HTTP 服务器下载文件 2. 白名单强制执行 - 仅允许访问指定文件 ### 安全特性 - **路径遍历防护**:使用 `os.path.basename()` 清理文件名 - **HTTP 白名单**:仅服务指定的载荷文件 - **超时处理**:防止网络操作无限阻塞 - **工作目录清理**:仅删除分段器工作目录中的文件 - **构建时 IP 验证**:指定公网 IP 时发出警告 ## 配置 `config.py` 文件由 `build.py` 自动生成: ```python IP, PORT, POLLING_INTERVAL = "192.168.1.100", 8000, 5 ``` ## 限制 - 通信无加密 - 无认证机制 - 无错误报告至服务器 - 仅基本进程清理 - 仅设计用于内网测试 ## 贡献 欢迎贡献**防御性功能**、文档改进和教育性增强。 请勿提交以下贡献: - 添加恶意功能 - 促进未经授权的访问 - 使规避安全控制成为可能 - 移除或削弱现有安全措施 ## 许可证 MIT 许可证 - 详情见 [LICENSE](LICENSE) 文件。 **注意**:MIT 许可证不会覆盖上述免责声明。使用限制在法律上仍然有效。 ## 作者 CraftedEgg ## 版本 1.0.1