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, 云资产清单, 可视化界面, 安全学习资源, 技术调研, 网络信息收集, 网络流量审计, 请求拦截, 逆向工具, 逆向工程, 通知系统