AFrenchBanana/PrometheanProxy

GitHub: AFrenchBanana/PrometheanProxy

一款模块化 C2 框架,通过 Go implant 与 Python 服务器实现运行时动态加载命令插件和可配置的混淆通信协议。

Stars: 1 | Forks: 0

# PrometheanProxy C2 ``` / _ \_ __ ___ _ __ ___ ___| |_| |__ ___ __ _ _ __ / _ \_ __ _____ ___ _ / /_)/ '__/ _ \| '_ ` _ \ / _ \ __| '_ \ / _ \/ _` | '_ \ / /_)/ '__/ _ \ \/ / | | | / ___/| | | (_) | | | | | | __/ |_| | | | __/ (_| | | | / ___/| | | (_) > <| |_| | \/ |_| \___/|_| |_| |_|\___|\__|_| |_|\___|\__,_|_| |_|\/ |_| \___/_/\_\\__, | |___/ ``` [![贡献者](https://img.shields.io/github/contributors/AFrenchBanana/PrometheanProxy.svg?style=for-the-badge)][contributors-url] [![分支](https://img.shields.io/github/forks/AFrenchBanana/PrometheanProxy.svg?style=for-the-badge)][forks-url] [![星标](https://img.shields.io/github/stars/AFrenchBanana/PrometheanProxy.svg?style=for-the-badge)][stars-url] [![议题](https://img.shields.io/github/issues/AFrenchBanana/PrometheanProxy.svg?style=for-the-badge)][issues-url] [![Unlicense 许可证](https://img.shields.io/github/license/AFrenchBanana/PrometheanProxy.svg?style=for-the-badge)][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工具, 安全学习资源, 无后门, 日志审计, 漏洞挖掘, 红队框架, 网络信息收集, 逆向工具