atlas-crew/Apparatus
GitHub: atlas-crew/Apparatus
一个端到端的网络模拟与安全测试平台,通过多协议仿真、AI 蜜罐与混沌工程帮助红蓝队验证防御与提升韧性。
Stars: 1 | Forks: 0





All-in-one cybersecurity testing and simulation lab platform for red teams, chaos engineering, defense validation, and security tool testing.
## 什么是 Apparatus?
Apparatus 是一个**全面的安全测试平台**,能够在受控的沙箱环境中模拟真实攻击、防御机制和基础设施混沌。它专为以下场景设计:
- 🎯 **红队** - 自主 AI 驱动的利用与载荷测试
- 🛡️ **蓝队** - 防御验证、WAF 测试、欺骗工程
- ⚙️ **混沌工程师** - 弹性测试、故障注入、系统恢复
- 🔬 **安全研究人员** - 协议模糊测试、漏洞模拟、攻击模式建模
- 📚 **培训** - 安全工具评估、事件响应演练、威胁情报
可以将其视为 **OWASP WebGoat 混沌猴子 与 全功能安全实验室** 的结合体——集成于单一平台。
## 关键特性
### 🎭 欺骗与蜜罐
- **AI 驱动的蜜罐** - 伪造的管理控制台、Shell 终端与数据库,配合上下文 AI 响应
- **幽灵流量** - 生成模拟合法流量以混淆归因
- **欺骗事件** - 实时追踪与流式传输蜜罐交互
- **多层陷阱** - 伪造的 `.env` 文件、`/etc/passwd`、SQLi 检测蜜罐
### 🔴 红队与利用
- **AI 自动驾驶** - 智能选择并执行工具的红队自治代理
- **载荷验证器** - 测试应用对 XSS、SQLi、路径遍历、命令注入、NoSQL 注入的弹性
- **场景引擎** - 基于模板的多步骤攻击/防御序列
- **SSRF/代理测试** - 测试基于请求的攻击漏洞
### 🛡️ 防御与缓解
- **主动护盾(WAF)** - 基于规则的请求阻断与管理
- **陷阱防御(Tarpit)** - 延缓响应以捕获攻击者的蜜罐
- **移动目标防御(MTD)** - 动态 API 隐藏与旋转前缀
- **自愈 QoS** - 自动负载卸载与事件循环监控
- **速率限制** - 每 IP 速率限制并返回 429 响应
### ⚙️ 混沌工程
- **CPU 峰值** - 触发高 CPU 利用率以测试弹性
- **内存峰值** - 分配内存以模拟 OOM 场景
- **崩溃场景** - 测试优雅关闭与恢复
- **集群攻击** - 通过 UDP 组播协调分布式节点的混沌
### 🌐 网络与诊断
- **DNS 解析器** - 查询 A/AAAA/MX/TXT/SRV/NS/CNAME 记录
- **TCP Ping** - 远程主机连通性测试
- **带宽生成器** - 1B 到 1GB 数据流用于负载测试
- **数据包捕获(PCAP)** - 基于 tcpdump 的流量录制
- **HAR 回放** - 从归档文件重放 HTTP 请求
### 🔐 安全测试
- **数据渗出测试** - 包含信用卡、SSN、邮箱、伪造 SQL 错误的 DLP 生成器
- **容器逃逸测试** - 出口通道与逃逸向量验证
- **云凭证收割** - 模拟 AWS/GCP/Azure 元数据端点
- **供应链攻击** - 包管理器中毒模拟
- **受害者应用** - 故意易受攻击的应用,含 XSS、SQLi、CSRF、认证绕过
### 📡 多协议支持
- **HTTP/1.1**(端口 8090)
- **HTTP/2 TLS**(端口 8443)
- **HTTP/2 明文(h2c)**(端口 8091)
- **WebSocket**(/ws)
- **gRPC**(端口 50051)含 4 种 RPC 方法
- **Redis 模拟**(端口 6379)含完整 RESP 协议
- **MQTT**(端口 1883)
- **SMTP**(端口 2525)
- **Syslog**(端口 5140/5514)
- **ICAP**(端口 1344)
- **TCP/UDP 回声**(端口 9000/9001)
### 📊 实时监控
- **Web 仪表盘** - 基于 React 的 UI,支持实时 SSE 流
- **终端 UI** - 18+ 种组件类型的终端监控
- **SSE 广播** - 向所有连接客户端推送事件
- **请求历史** - 存储并检查最近请求
- **Prometheus 指标** - 请求时长直方图与计数器
### 🧠 高级特性
- **AI 聊天 API** - LLM 驱动的上下文感知响应
- **身份测试** - OIDC/OAuth 提供者模拟、JWT 调试
- **GraphQL 端点** - 完整 GraphQL API 与内省攻击
- **JavaScript 执行** - 沙箱 VM 用于自定义代码测试
- **回声处理器** - 反射所有请求详情用于调试
- **Webhook 接收器** - 捕获并检查传入 Webhook
## 安装
### npm(推荐)
```
# 服务器
npm install -g @atlascrew/apparatus
apparatus
```
启动完整的 Apparatus 平台,地址为 **http://localhost:8090** —— 包含 HTTP/1.1、HTTP/2、gRPC、WebSocket、仪表盘以及所有协议服务器,单进程运行。
### Docker
```
docker run -p 8090:8090 -p 8443:8443 -p 50051:50051 nickcrew/apparatus
```
也可从 GitHub 容器注册表获取:`ghcr.io/nickcrew/apparatus`。
打开 **http://localhost:8090/dashboard** 访问 Web UI。
### 命令行界面
```
npm install -g @atlascrew/apparatus-cli
apparatus health
```
CLI 提供命令行访问所有服务端 API,并包含交互式 REPL。
**连接到运行中的服务器:**
```
# 默认值:http://localhost:8090
apparatus health
# 使用标志或环境变量覆盖
apparatus -u http://myserver:8090 health
export APPARATUS_URL=http://myserver:8090
```
**命令分类:**
| 类别 | 示例 |
|---|---|
| `core` | `health`, `echo /api/users`, `config` |
| `chaos` | `chaos cpu --duration 5000`, `chaos memory` |
| `security` | `security redteam`, `security scan` |
| `defense` | `defense shield`, `defense tarpit` |
| `identity` | `identity forge`, `identity verify` |
| `traffic` | `traffic history`, `traffic replay` |
| `scenarios` | `scenarios list`, `scenarios run` |
| `drills` | `drills start cpu`, `drills status` |
| `autopilot` | `autopilot start`, `autopilot status` |
| `webhooks` | `webhooks list`, `webhooks create` |
| `network` | `network dns`, `network proxy` |
| `labs` | `labs fuzzer`, `labs pcap` |
| `graphql` | `graphql query` |
| `simulator` | `simulator attack` |
**交互式 REPL:**
```
apparatus repl
# 支持制表符补全、命令历史记录和快捷键
# 例如:h → health,cpu → chaos cpu,dns → network dns
```
**全局选项:** `-u
`, `-j/--json`, `-v/--verbose`, `--no-color`, `--config `
**配置文件:** `~/.apparatus/config.json` —— 持久化存储基础 URL、超时与格式偏好。
### 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| `HOST` | `0.0.0.0` | 绑定地址 |
| `PORT_HTTP1` | `8090` | HTTP/1.1 端口 |
| `PORT_HTTP2` | `8443` | HTTP/2 TLS 端口 |
| `DEMO_MODE` | `false` | 启用所有危险端点(绕过本机检查) |
| `TLS_KEY` | `certs/server.key` | 私钥路径 |
| `TLS_CRT` | `certs/server.crt` | TLS 证书路径 |
| `ANTHROPIC_API_KEY` | — | Claude API 密钥(用于 AI 蜜罐与自动驾驶) |
| `ENABLE_COMPRESSION` | `true` | 启用 gzip 压缩 |
| `BODY_LIMIT` | `50mb` | 请求体大小限制 |
| `CLUSTER_SHARED_SECRET` | — | 集群认证令牌 |
## 与 Chimera 集成
Apparatus 可与 **[Chimera](https://github.com/NickCrew/Chimera)** 无缝协作 —— Chimera 是一个包含 450+ 端点和 12 个 UI 的漏洞 Web 应用与 REST API,为安全测试提供真实的攻击目标。
```
# 克隆两个存储库
cd ~/Developer
git clone https://github.com/NickCrew/apparatus.git
git clone https://github.com/NickCrew/Chimera.git
# 启动完整实验(Apparatus + Chimera)
cd apparatus
docker compose --profile chimera up
```
执行后将启动:
- **Apparatus**:http://localhost:8090/dashboard(测试平台)
- **VulnWeb**:http://localhost:3000(漏洞 Web 应用)—— 仅 `chimera` 配置文件
- **VulnAPI**:http://localhost:5000(漏洞 API)—— 仅 `chimera` 配置文件
未使用 `chimera` 配置文件时,仅启动 Apparatus:`docker compose up`。
## 开发
### 先决条件
| 要求 | 版本 |
|---|---|
| Node.js | 23+ |
| pnpm | 最新 |
可选:`tcpdump`(用于 PCAP 捕获)、Docker(用于容器化部署)。
### 从源码运行
```
git clone https://github.com/NickCrew/apparatus.git
cd apparatus
pnpm install
# 生成 TLS 证书(自签名)
mkdir -p certs
openssl req -x509 -newkey rsa:2048 -keyout certs/server.key \
-out certs/server.crt -days 365 -nodes -subj "/CN=localhost"
pnpm build
pnpm start
```
服务将启动在:
- **HTTP/1.1**:http://localhost:8090
- **仪表盘**:http://localhost:8090/dashboard
- **HTTP/2 TLS**:https://localhost:8443
- **gRPC**:localhost:50051
- **WebSocket**:ws://localhost:8090/ws
## 使用示例
### 1. 使用红队 AI 测试 Web 应用
```
# 命令行界面
apparatus autopilot start "Find auth bypass vulnerabilities" \
--max-iterations 20 --interval 2000 \
--tools chaos.cpu,cluster.attack,mtd.rotate
apparatus autopilot status
apparatus autopilot reports
# curl
curl -X POST http://localhost:8090/api/redteam/autopilot/start \
-H "Content-Type: application/json" \
-d '{
"target": "http://myapp.local",
"config": {
"interval": 2000,
"maxIterations": 20,
"allowedTools": ["chaos.cpu", "cluster.attack", "mtd.rotate"]
}
}'
curl http://localhost:8090/api/redteam/autopilot/status
curl http://localhost:8090/api/redteam/autopilot/reports
```
### 2. 验证载荷检测
```
# 命令行界面
apparatus security redteam http://myapp --path /search --method GET
# curl
curl "http://localhost:8090/redteam/validate?target=http://myapp&path=/search&method=GET"
```
### 3. 运行混沌场景
```
# 命令行界面
apparatus chaos cpu --duration 5000 # 5s CPU spike
apparatus chaos memory --size 104857600 # 100MB allocation
apparatus scenarios list # List saved scenarios
apparatus scenarios run --wait
# curl
curl -X POST http://localhost:8090/scenarios \
-H "Content-Type: application/json" \
-d '{
"name": "distributed-attack",
"steps": [
{ "id": "1", "action": "chaos.cpu", "params": { "duration": 5000 } },
{ "id": "2", "action": "delay", "params": { "duration": 2000 } },
{ "id": "3", "action": "cluster.attack", "params": { "target": "http://127.0.0.1:8090/echo", "rate": 100 } }
]
}'
curl -X POST http://localhost:8090/scenarios/{scenario_id}/run
curl http://localhost:8090/scenarios/{scenario_id}/status?executionId={execution_id}
```
### 4. 激活防御机制
```
# 命令行界面
apparatus defense sentinel add block-admin "/admin" --action block
apparatus defense tarpit list
apparatus defense mtd enable
apparatus defense mtd rotate
apparatus defense blackhole add 10.0.0.50 --reason "port scan"
# curl
curl -X POST http://localhost:8090/sentinel/rules \
-H "Content-Type: application/json" \
-d '{"pattern": "/admin", "action": "block"}'
curl -X POST http://localhost:8090/mtd -d '{"prefix": "xyz123"}'
# 现在所有 API 都需要 xyz123 前缀:/xyz123/echo、/xyz123/healthz 等
```
### 5. 实时流量监控
```
# Web 仪表板
open http://localhost:8090/dashboard
# 终端用户界面
pnpm tui
# 命令行界面
apparatus traffic status
# SSE 流
curl http://localhost:8090/sse
```
### 6. 捕获并重放流量
```
# curl
curl "http://localhost:8090/capture.pcap?duration=30&iface=eth0" -o traffic.pcap
curl -X POST http://localhost:8090/replay \
-H "Content-Type: application/json" \
-d @requests.har
```
## 架构
### 单体仓库结构
```
apparatus/
├── apps/
│ ├── apparatus/ # Main server
│ │ ├── src/
│ │ │ ├── app.ts # Express app with all routes
│ │ │ ├── chaos.ts # CPU/memory/crash chaos handlers
│ │ │ ├── deception.ts # AI honeypot engine
│ │ │ ├── tarpit.ts # Tarpit defense
│ │ │ ├── sentinel.ts # Active Shield (WAF)
│ │ │ ├── scenarios.ts # Scenario engine
│ │ │ ├── ai/ # AI autopilot and chat
│ │ │ ├── server-*.ts # Protocol servers (HTTP/2, gRPC, Redis, etc.)
│ │ │ └── dashboard/ # React dashboard (Vite)
│ │ ├── test/ # Integration tests (39+ tests)
│ │ └── dist/ # Compiled output
│ └── cli/ # CLI application
└── libs/ # Shared libraries
```
### 中间件执行顺序
1. **MTD** - 多态路由隐藏
2. **自愈** - 负载卸载
3. **欺骗** - 蜜罐陷阱
4. **陷阱** - 减速陷阱
5. **指标** - 数据收集
6. **压缩** - 响应压缩
7. **日志** - Pino 日志
8. **主体解析** - JSON/URL/原始文本/表单数据
9. **主动护盾** - WAF
10. **CORS** - 跨域处理
11. **路由** - 端点处理器
12. **回声** - 全量反射
## 配置
请参阅安装章节中的 [环境变量](#environment-variables) 获取完整配置参考。
### 功能开关
```
# 切换演示模式(启用所有功能,跳过 localhost 检查)
curl -X POST http://localhost:8090/_sensor/demo/toggle
# 查看配置
curl http://localhost:8090/_sensor/config/integrations
# 更新集成
curl -X PUT http://localhost:8090/_sensor/config/integrations \
-H "Content-Type: application/json" \
-d '{"tunnel_url": "https://ngrok.io/...", "tunnel_api_key": "..."}'
```
## 测试
### 运行全部测试
```
pnpm test # Run all tests
pnpm test -- --reporter=verbose # Verbose output
pnpm test -- test/chaos.test.ts # Run specific test file
```
### 覆盖率
测试覆盖:
- ✅ 场景验证(未知操作、SQL 注入模式、参数净化)
- ✅ 混沌操作(CPU 峰值、内存分配、并发峰值检测)
- ✅ Webhook 捕获与修剪(每个 Hook ID 最多 50 个 Webhook)
- ✅ 攻击场景执行与失败跟踪
- ✅ 多协议回声与 SSE 广播
- ✅ 38+ 跨主要功能的集成测试
## 用途
### 🎓 安全培训
- 模拟真实攻击场景用于事件响应演练
- 培训团队检测与缓解技术
- 在安全环境中学习安全概念
### 🔒 防御验证
- 测试 WAF/IDS/IPS 对已知攻击模式的有效性
- 验证 SIEM 检测规则
- 测量事件响应时间
### 🧪 工具测试
- 评估安全扫描工具(Burp、OWASP ZAP、Nessus)
- 测试 SIEM、DLP 系统与日志聚合
- 在混沌条件下进行性能基准测试
### 🚀 混沌工程
- 注入故障以测试应用弹性
- 验证自动恢复机制
- 测量系统性能降级
### 🔍 安全研究
- 建模攻击向量与防御模式
- 测试新型安全概念
- 开发并验证利用技术
### 🏢 红队操作
- 运行自动化的红队活动与 AI 自动驾驶
- 生成真实攻击场景
- 全面验证安全控制
## 技术栈
| 组件 | 技术 |
|---|---|
| **运行时** | Node.js 23+ |
| **语言** | TypeScript(严格模式) |
| **框架** | Express.js |
| **协议** | HTTP/1.1、HTTP/2、gRPC、WebSocket、Redis、MQTT、SMTP、Syslog、ICAP |
| **前端** | React 18 + Vite + Tailwind CSS |
| **终端 UI** | Blessed + blessed-contrib |
| **监控** | Prometheus 指标、Pino 日志 |
| **测试** | Vitest + Supertest |
| **构建** | Nx 单体仓库、TypeScript 编译器、Vite |
| **包管理器** | pnpm |
## 安全提示
⚠️ **Apparatus 仅设计用于测试与实验室环境,绝不适用于生产环境:**
- 所有数据仅保存在内存中(无持久化)
- 大多数端点无认证/授权
- 故意包含易受攻击的功能(受害者应用、蜜罐、混沌)
- 无审计日志或合规特性
- 仅在隔离网络或本机运行
请在以下场景使用 Apparatus:
- ✅ 开发环境
- ✅ 实验室网络
- ✅ 隔离测试系统
- ✅ Docker 容器
- ✅ 本地虚拟机
**禁止用于:**
- ❌ 生产系统
- ❌ 公网暴露
- ❌ 共享基础设施
- ❌ 包含真实数据的系统
## 贡献
欢迎贡献!可扩展方向包括:
- [ ] 新增协议服务器
- [ ] 更多混沌工程场景
- [ ] 增强自动驾驶 AI 模型
- [ ] 持久化层(PostgreSQL)
- [ ] Kubernetes 操作器
- [ ] 新增防御机制
- [ ] CLI 增强
- [ ] 仪表盘可视化
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取指南。
## 许可证
MIT 许可证 - 详见 [LICENSE](LICENSE)
## 文档
- **[快速参考](docs/quick-reference.md)** - 常用命令、端点与场景
- **[特性](docs/features.md)** - 58+ 功能的完整目录
- **[架构](docs/architecture.md)** - 系统设计、数据流与组件
- **[API 参考](docs/api.md)** - 详细端点文档
- **[相关:Chimera](../Chimera)** - 漏洞 Web 应用与 API(450+ 端点,12 个 UI)
## 支持
- 📖 [完整文档](docs/)
- 🐛 [问题跟踪器](https://github.com/NickCrew/apparatus/issues)
- 💬 [讨论](https://github.com/NickCrew/apparatus/discussions)
- 📧 联系:nick@atlascrew.dev
## 感谢
Apparatus 借鉴了以下项目的思路:
- OWASP WebGoat(故意漏洞)
- Chaos Monkey(故障注入)
- Gremlin(混沌工程)
- 蜜罐与欺骗研究
- 红队方法论与工具
**用心 ❤️ 为安全社区打造**标签:AI驱动, GitHub项目, GNU通用公共许可证, Maven, MITM代理, Node.js, Python工具, TypeScript, WAF测试, 协议仿真, 威胁情报, 安全培训, 安全插件, 安全模拟, 开发者工具, 开源安全工具, 弹性测试, 搜索引擎查询, 故障注入, 欺骗技术, 沙箱环境, 流量仿真, 混合加密, 混沌工程, 漏洞验证, 红队工具集, 网络安全测试平台, 自动化攻击, 自定义请求头, 蓝队防御, 蜜罐, 证书利用, 逆向工程平台