AFrenchBanana/PrometheanProxy
GitHub: AFrenchBanana/PrometheanProxy
一款模块化 C2 框架,通过 Go implant 与 Python 服务器实现运行时动态加载命令插件和可配置的混淆通信协议。
Stars: 1 | Forks: 0
# PrometheanProxy C2
```
/ _ \_ __ ___ _ __ ___ ___| |_| |__ ___ __ _ _ __ / _ \_ __ _____ ___ _
/ /_)/ '__/ _ \| '_ ` _ \ / _ \ __| '_ \ / _ \/ _` | '_ \ / /_)/ '__/ _ \ \/ / | | |
/ ___/| | | (_) | | | | | | __/ |_| | | | __/ (_| | | | / ___/| | | (_) > <| |_| |
\/ |_| \___/|_| |_| |_|\___|\__|_| |_|\___|\__,_|_| |_|\/ |_| \___/_/\_\\__, |
|___/
```
[][contributors-url]
[][forks-url]
[][stars-url]
[][issues-url]
[][license-url]
## 目录
- [概述](#overview)
- [功能](#features)
- [架构](#architecture)
- [前置条件](#prerequisites)
- [安装](#installation)
- [配置](#configuration)
- [使用说明](#usage)
- [测试](#testing)
- [贡献](#contributing)
- [许可证](#license)
- [未来功能](#future-features)
- [免责声明](#disclaimer)
## 概述
PrometheanProxy 是一个模块化的命令与控制框架,包含基于 Go 的植入体和基于 Python 的服务器。它专注于运行时可插拔的命令模块,以及无需重新编译即可调整的混淆传输格式。部分组件(如远程管理客户端)正在积极开发中。
## 功能
- Go 植入体(Linux/Windows),支持 Beacon 和 Session 模式
- Python 服务器包含:
- Beacon HTTP endpoint 和命令排队
- 用于会话和实用工具的多 handler 架构
- 基于 SQLite 的服务器数据库
- 数据包嗅探工具(可选)
- 动态、通过 plugin 交付的命令:
- Go plugin 二进制文件按 plugin 构建,并在运行时交付给植入体
- plugin 实现稳定的 RPC 接口,并按需执行(延迟启动)
- 混淆的协议层:
- 通过 `obfuscate.json` 对请求/响应字段进行 JSON key 混淆
- 混淆 module/plugin 名称(支持每个 plugin 使用独立的 `obfuscate.json`)
- 为 Beacon endpoint 生成随机、类似 Web 的 URL 路径/参数
- 构建工具:
- Make 目标用于构建 Go 植入体和 Python 服务器(PyInstaller ELF)
- 自动发现并编译基于 Go 的 plugin
- 安装辅助程序,用于将 plugin 暂存到 `~/.PrometheanProxy/plugins` 下
## 架构
### 客户端
- 通过纯 HTTP 进行 Beacon 通信(可配置 host/port),使用随机的 URL 路径;参见 `src/Client/beacon/http/urlObfuscation.go`
- 由 `src/Server/obfuscate.json` 定义并在 `src/Client/generic/config/obfuscation_map.go` 中映射的混淆 JSON 字段
- 通过 HashiCorp go-plugin RPC 动态加载命令;参见 `src/Client/dynamic/shared/` 和 `src/Client/generic/rpc_client/`
- 提供内置命令和 session shell;新命令是一等 plugin
### 服务器
- 在 `Modules/beacon/beacon_server` 中定义的 Beacon HTTP 服务器(默认无 TLS)
- 在 `Modules/beacon/beacon.py` 中为 Beacon 提供命令排队和分发
- 统一的 plugin 模型:
- 编译后的 Go plugin 位于 `~/.PrometheanProxy/plugins//{release,debug}/` 下
- Python plugin 源码位于 `~/.PrometheanProxy/plugins/Plugins/...` 下
- module 加载会将 Base64 编码的 plugin 二进制文件发送到植入体,并使用混淆的 module 名称
## 前置条件
- Go 1.20+(已在 Linux/Windows amd64 上测试)
- Python 3.12(服务器),pip/venv
- 用于构建 Go 和打包服务器的 make、gcc/clang 工具链
## 安装
1. 为服务器克隆代码并设置虚拟环境
```
git clone https://github.com/AFrenchBanana/PrometheanProxy.git
cd PrometheanProxy
make venv
```
2. 构建服务器(PyInstaller ELF)和 Go plugin(可选但推荐)
```
make server # builds bin/PrometheanProxy
make plugins # builds Go plugins found under src/Server/Plugins/*
make install-all-plugins # stages plugins to ~/.PrometheanProxy/plugins
```
3. 构建 Go 植入体二进制文件
```
make linux windows
```
## 配置
- 服务器配置:`~/.PrometheanProxy/config.toml`
- 首次运行时自动创建(从 `src/Server/config.toml` 复制)
- 控制 listen address、webPort(Beacon HTTP)、日志记录和 module 位置
- 混淆映射:`src/Server/obfuscate.json`
- 服务器直接加载它;客户端通过 `-obfuscate` 标志或 ldflags 读取相同的映射(由 Makefile 传递)
- 您可以更改植入体信息和命令的 JSON 字段名,以及 module 名称混淆
- plugin 名称混淆:每个 plugin 可以提供自己的 `obfuscate.json`(例如 `src/Server/Plugins/netstat/obfuscate.json`),以更改在传输层通告的名称
- HMAC:可以在构建时从 `~/.PrometheanProxy/Certificates/hmac.key` 注入密钥(由 Makefile 使用)。通过 `-hmac-key` 和 ldflags 传递给客户端;集成工作正在进行中 (WIP)。
## 使用说明
### 启动服务器(源码或打包版本)
- 从源码运行:
```
PYTHONPATH=src python3 src/Server/server.py
```
- 或运行打包的 ELF(在执行 `make server` 之后):
```
./bin/PrometheanProxy
```
Beacon HTTP 服务器会监听 `config.toml` 中的 address/port(设计上为纯 HTTP)。
### 运行植入体
- 使用 Make 在 debug 模式下快速构建并运行:
```
make run-client
```
- 或使用显式标志运行已构建的二进制文件:
```
./bin/promethean-client-linux-amd64-debug -conn=beacon -obfuscate=$(pwd)/src/Server/obfuscate.json
```
### 加载 plugin (module)
- 从服务器控制台中,选择一个 Beacon 并使用 module 加载器来列出和发送 module。服务器将会:
- 定位 `~/.PrometheanProxy/plugins///[ -debug].{so|dll}`
- 将构建产物进行 Base64 编码,并使用混淆的 module 名称将 `module` 命令排队发送给 Beacon
- 植入体将字节缓存到内存中,并按需延迟执行 plugin
## 远程管理客户端 (WIP)
`src/RemoteServer/` 包含一个实验性的远程管理客户端,它通过 TLS 和额外的应用层 ECDH 步骤连接到服务器。它支持简单的身份验证以及植入体的列出/选择。随着其逐渐成熟,预期会有更多更改。
## 测试
运行用于服务器实用程序和身份验证组件的 Python 单元测试:
```
make test
```
## 许可证
详情请参阅 [LICENSE](LICENSE)。
## 未来工作
- 加强基于 HMAC 的请求身份验证,以覆盖 Beacon 和 session 流程
- 扩展远程管理客户端功能(命令、上传、更丰富的 TUI)
- 增加更多内置命令和示例 plugin
- 可选的用于监控的 Web UI(正在调研中)
## 免责声明
本项目仅用于授权的测试和研究。使用前必须获得所有相关方的明确许可。
标签:C2框架, Go, IP 地址批量处理, Python, Ruby工具, 安全学习资源, 无后门, 日志审计, 漏洞挖掘, 红队框架, 网络信息收集, 逆向工具