ZZ0R0/Proteus
GitHub: ZZ0R0/Proteus
面向 Mythic 框架的 Rust C2 agent,通过函数乱序与 ChaCha20 数据段加密生成多态 shellcode。
Stars: 70 | Forks: 8
# Proteus
[Mythic](https://github.com/its-a-feature/Mythic) 框架的 Rust C2 agent。由三个 Rust crate(shellcode agent、链接前 COFF 分析器、数据段混淆)与一个 Python Mythic Payload Type 服务打包而成:
- **`proteus-agent`** — `no_std`、`no_main` 的 payload(`x86_64-pc-windows-gnu`),无需静态导入即可直接从 PEB 解析 Win32/NT API,完全运行于私有 NT 堆中,并通过 WinHTTP 与 Mythic 通信。它通过自定义的 `_start` 和一次性的 `initialize()` 启动,该函数将栈上引导的 `Instance` 提升为注册在 `PEB.ProcessHeaps` 中的永久堆槽位。**生成原生 shellcode(`Proteus.bin`)。**
- **`layout-manifest`** — 宿主机端的 COFF 分析器,可生成包含各个节、REL32 重定位以及推断出的调用图的 JSON 清单。可用作调试辅助工具,也是函数乱序器的基础。
- **`obf/runtime`**(`proteus-obf`)+ **`obf/macros`**(`proteus-obf-macros`)— 数据段加密系统的 runtime 与 proc-macro 两部分。每个 `obf!("…")` / `obf_bytes!(b"…")` / `obf_utf16_z!(b"…")` 调用处都会在其专属的 `.rdata$prx_obf_` COFF 节中生成一个加密数据块,并在使用时通过 ChaCha20 keystream 在栈上进行解码。
- **`Payload_Type/proteus/proteus/`** — 声明构建参数与命令的 Python 包(Mythic `MythicContainer` SDK),通过 `mythic/agent_functions/` 自动注册。
其标志性特性是 **shuffle pipeline**:每次构建都会生成一个二进制文件,其中 `_start` 固定在偏移量 0 处,但所有其他函数都会被随机重新排序,同时所有 REL32 / RIP 相对引用都会由链接器修复。结合每次构建随机生成的 ChaCha20 主密钥与 nonce salt,相同的源码在每次构建时都会产生结构完全不同的输出。
## 布局
```
Proteus/
├── config.json # mythic-cli install gateway
├── README.md, ROADMAP.md
├── LICENSE
├── documentation-payload/ # ships with payload (config: exclude=false)
│ ├── ARCHITECTURE.md # global system schema
│ ├── DEV_GUIDELINES.md # rules for new code
│ ├── STATE_OF_WORK.md # development log
│ ├── DATA_SECTIONS_CIPHERING.md # Phase 1.5 design doc
│ └── analysis/ # detectability scoring scripts
└── Payload_Type/proteus/ # Docker build context (mythic-cli copies this)
├── Dockerfile
├── .dockerignore
├── main.py, requirements.txt
├── README.md
└── proteus/ # Python package — everything below lives here
├── __init__.py
├── mythic/ # Mythic SDK glue
│ ├── __init__.py # glob auto-import of agent_functions/*.py
│ ├── agent_functions/ # PayloadType + per-command CommandBase subclasses
│ ├── browser_scripts/
│ ├── builders/ # shellcode build orchestration
│ └── agent_icon/
└── agent_code/ # Rust crates (Docker-only compilation)
├── proteus-agent/ # shellcode agent (no_std, no_main, windows-gnu)
│ ├── build.rs # per-build CFG_*, master key, nonce salt
│ ├── Linker.{ld,shuffled.ld}
│ ├── Makefile.toml
│ ├── tools/ # gen-shuffled-linker.py, link-shuffled.sh
│ └── src/
│ ├── main.rs # _start + initialize + run + _Unwind_Resume
│ ├── log.rs # debug-log feature
│ ├── obf.rs # MASTER_KEY + obf!*-macro re-exports
│ ├── build_config.rs # include!() of $OUT_DIR/build_config.rs
│ ├── win/ # Windows OS surface
│ ├── agent/ # Mythic agent business logic
│ └── comms/ # comms stack (crypto + envelope + http + json)
├── layout-manifest/ # pre-link COFF analyzer (host dev tool)
└── obf/ # ChaCha20 data-section obfuscation
├── runtime/ # `proteus-obf` runtime library
└── macros/ # `proteus-obf-macros` proc-macros
```
## 安装
所有的编译过程都在 Mythic Docker container 内进行。安装(或在代码修改后重新安装)步骤如下:
```
sudo mythic-cli install folder / -f
```
操作人员通过 Mythic Web UI 触发构建;这会调用 `proteus.mythic.agent_functions.builder.Proteus.build`,它会在容器内暂存的 `agent_code/` 目录树中执行 `cargo make shuffle`,并返回原生的 `Proteus.bin` shellcode。
构建参数和命令在 `Payload_Type/proteus/proteus/mythic/agent_functions/` 中声明,并进行自动注册。
## PE wrapper
Proteus 仅生成原生的位置无关 shellcode。要将 `Proteus.bin` 转换为可自行注入的 Windows 可执行文件,请使用配套的 [Minotaur](https://github.com/ZZ0R0/Minotaur) wrapper payload type — Minotaur 会通过 `.rsrc` 位图资源中的隐写术,将 shellcode 嵌入到伪装的 GUI PE 中。
## 文档
| 文件 | 内容 |
|---|---|
| [ROADMAP.md](ROADMAP.md) | 分阶段开发路线图 |
| [documentation-payload/ARCHITECTURE.md](documentation-payload/ARCHITECTURE.md) | 系统架构图 |
| [documentation-payload/DEV_GUIDELINES.md](documentation-payload/DEV_GUIDELINES.md) | 编码规范与规则 |
| [documentation-payload/DATA_SECTIONS_CIPHERING.md](documentation-payload/DATA_SECTIONS_CIPHERING.md) | 1.5 阶段混淆设计 |
| [documentation-payload/STATE_OF_WORK.md](documentation-payload/STATE_OF_WORK.md) | 开发日志 |
| [Payload_Type/proteus/proteus/agent_code/proteus-agent/README.md](Payload_Type/proteus/proteus/agent_code/proteus-agent/README.md) | Shuffle pipeline 详情 |
| [Payload_Type/proteus/proteus/agent_code/layout-manifest/README.md](Payload_Type/proteus/proteus/agent_code/layout-manifest/README.md) | COFF 分析器用法 |
## 免责声明
本项目是一个开源的红队教育训练工具及个人作品集项目。在范围和功能上,我们有意使其与现有的公开 Mythic agent([Apollo](https://github.com/MythicAgents/Apollo)、[Athena](https://github.com/MythicAgents/Athena)、[Thanatos](https://github.com/MythicAgents/thanatos)、[Poseidon](https://github.com/MythicAgents/poseidon))保持相似。
所有的开发与测试均在作者自有的硬件及实验环境 VM 中进行。
标签:C2框架, DNS 反向解析, Rust, Shellcode, 云资产清单, 可视化界面, 安全学习资源, 技术调研, 网络信息收集, 网络流量审计, 请求拦截, 逆向工具, 逆向工程, 通知系统