inferno-lab/Apparatus
GitHub: inferno-lab/Apparatus
一站式网络安全测试与仿真平台,在可控沙箱中集攻击模拟、防御验证与混沌工程于一体,覆盖红蓝对抗、安全研究和培训等多种场景。
Stars: 1 | Forks: 0





一站式网络安全测试与仿真实验室平台,适用于红队、混沌工程、防御验证以及安全工具测试。
## 什么是 Apparatus?
Apparatus 是一个**综合安全测试平台**,能够在可控的沙箱环境中模拟真实世界的攻击、防御机制和基础设施混沌。它专为以下用途设计:
- 🎯 **红队** - 自主 AI 驱动的漏洞利用与 payload 测试
- 🛡️ **蓝队** - 防御验证、WAF 测试、欺骗工程
- ⚙️ **混沌工程师** - 弹性测试、故障注入、系统恢复
- 🔬 **安全研究人员** - 协议模糊测试、漏洞模拟、攻击模式建模
- 📚 **培训** - 安全工具评估、事件响应演练、威胁情报
你可以把它看作是 **OWASP WebGoat 与 Chaos Monkey 以及全功能安全实验室的结合体**——集于一身。
## 核心功能
### 🎭 欺骗与蜜罐
- **AI 驱动蜜罐** - 带有上下文 AI 响应的伪造管理员控制台、Shell 终端和数据库
- **幽灵流量** - 生成合成的合法外观流量以混淆归因
- **欺骗事件** - 实时跟踪和流式传输蜜罐交互
- **多层陷阱** - 伪造的 `.env` 文件、`/etc/passwd`、SQLi 检测蜜罐
### 🔴 红队与漏洞利用
- **AI 自动驾驶** - 智能选择和执行工具的自主红队代理
- **Payload 验证器** - 测试应用对 XSS、SQLi、路径遍历、命令注入、NoSQL 注入的弹性
- **场景引擎** - 基于模板的多步攻防序列
- **SSRF/代理测试** - 测试基于请求的漏洞
### 🛡️ 防御与缓解
- **主动盾牌 (WAF)** - 基于模式的请求阻止与规则管理
- **沙盒坑防御** - 将攻击者困在慢速响应连接中的蜜罐
- **移动目标防御 (MTD)** - 通过轮换前缀动态隐藏 API
- **自愈 QoS** - 自主卸载负载和事件循环监控
- **速率限制** - 针对每个 IP 的速率限制强制执行,并返回 429 响应
### ⚙️ 混沌工程
- **CPU 飙升** - 触发高 CPU 利用率以进行弹性测试
- **内存飙升** - 分配内存以模拟 OOM 场景
- **崩溃场景** - 测试优雅关机和恢复
- **集群攻击** - 通过 UDP gossip 跨分布式节点协调混沌
### 🌐 网络与诊断
- **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 Echo** (端口 9000/9001)
### 📊 实时监控
- **Web 仪表板** - 基于 React 的 UI,带有实时 SSE 流
- **终端 UI** - 18+ 种部件类型,用于基于终端的监控
- **SSE 广播** - 将事件推送到所有已连接的客户端
- **请求历史** - 存储和检查最近的请求
- **Prometheus 指标** - 请求持续时间直方图和计数器
### 🧠 高级功能
- **AI 聊天 API** - 由 LLM 驱动的上下文感知响应
- **身份测试** - OIDC/OAuth 提供者模拟,JWT 调试
- **GraphQL 端点** - 带有内省攻击的完整 GraphQL API
- **JavaScript 执行** - 用于自定义代码测试的沙箱化 VM
- **Echo 处理器** - 反射所有请求详情以便调试
- **Webhook 接收器** - 捕获并检查传入的 Webhook
## 安装
### npm (推荐)
```
# Server
npm install -g @atlascrew/apparatus
apparatus
```
在 **http://localhost:8090** 上启动完整的 Apparatus 平台——HTTP/1.1、HTTP/2、gRPC、WebSocket、仪表板以及所有协议服务器均在单一进程中运行。
### Docker
```
docker run -p 8090:8090 -p 8443:8443 -p 50051:50051 nickcrew/apparatus
```
也可以从 GitHub Container Registry 获取:`ghcr.io/nickcrew/apparatus`。
打开 **http://localhost:8090/dashboard** 以访问 Web UI。
### CLI
```
npm install -g @atlascrew/apparatus-cli
apparatus health
```
CLI 提供对所有服务器 API 的命令行访问以及交互式 REPL。
**连接到正在运行的服务器:**
```
# Default: http://localhost:8090
apparatus health
# Override with flag or env var
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
# Supports tab completion, command history, and shortcuts
# e.g. 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` | 启用所有危险端点,无需 localhost 检查 |
| `TLS_KEY` | `certs/server.key` | TLS 私钥路径 |
| `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)** 无缝协作——这是一个包含 450 多个端点和 12 个 UI 的易受攻击 Web 应用程序和 REST API,为安全测试提供了真实的攻击目标。
```
# Clone both repositories
cd ~/Developer
git clone https://github.com/NickCrew/apparatus.git
git clone https://github.com/NickCrew/Chimera.git
# Start the full lab (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
# Generate TLS certificates (self-signed)
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 应用
```
# CLI
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. 验证 Payload 检测
```
# CLI
apparatus security redteam http://myapp --path /search --method GET
# curl
curl "http://localhost:8090/redteam/validate?target=http://myapp&path=/search&method=GET"
```
### 3. 运行混沌场景
```
# CLI
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. 激活防御机制
```
# CLI
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"}'
# Now all APIs require xyz123 prefix: /xyz123/echo, /xyz123/healthz, etc.
```
### 5. 监控实时流量
```
# Web dashboard
open http://localhost:8090/dashboard
# Terminal UI
pnpm tui
# CLI
apparatus traffic status
# SSE stream
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
```
## 架构
### Monorepo 结构
```
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 logger
8. **正文解析** - JSON/URL/raw/text
9. **主动盾牌** - WAF
10. **CORS** - 跨域处理
11. **路由** - 端点处理器
12. **Echo** - 全捕获反射
## 配置
有关完整的配置参考,请参阅安装部分中的[环境变量](#environment-variables)。
### 功能开关
```
# Toggle demo mode (enables all服务器
curl -X POST http://localhost:8090/_sensor/demo/toggle
# Docker
curl http://localhost:8090/_sensor/config/integrations
# CLI
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)
- ✅ 攻击场景执行与失败跟踪
- ✅ 多协议 echo 和 SSE 广播
- ✅ 跨所有主要功能的 38+ 集成测试
## 用例
### 🎓 安全培训
- 为事件响应演练模拟真实的攻击场景
- 对团队进行检测和缓解技术培训
- 学习安全概念的安全环境
### 🔒 防御验证
- 针对已知攻击模式测试 WAF/IDS/IPS 的有效性
- 验证 SIEM 检测规则
- 衡量事件响应时间
### 🧪 工具测试
- 评估安全扫描工具 (Burp、OWASP ZAP、Nessus)
- 测试 SIEM、DLP 系统、日志聚合
- 在混沌条件下进行基准性能测试
### 🚀 混沌工程
- 注入故障以测试应用程序弹性
- 验证自动恢复机制
- 衡量系统性能下降
### 🔍 安全研究
- 建模攻击向量和防御模式
- 测试新型安全概念
- 开发和验证漏洞利用技术
### 🏢 红队行动
- 使用 AI 自动驾驶运行自动化红活动
- 生成逼真的攻击场景
- 全面验证安全控制
## 技术栈
| 组件 | 技术 |
|-----------|------|
| **运行时** | Node.js 23+ |
| **语言** | TypeScript (strict) |
| **框架** | 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 monorepo, TypeScript 编译器, Vite |
| **包管理器** | pnpm |
## 安全提示
⚠️ **Apparatus 专为测试和实验环境设计。** 它不适用于生产环境:
- 所有数据均存储在内存中 (无持久化)
- 大多数端点没有身份验证/授权
- 故意设计的易受攻击功能 (受害者应用、蜜罐、混沌)
- 没有审计跟踪或合规功能
- 仅在隔离网络或 localhost 上运行
请在以下环境使用 Apparatus:
- ✅ 开发环境
- ✅ 实验室网络
- ✅ 隔离的测试系统
- ✅ Docker 容器
- ✅ 您机器上的虚拟机
请勿在以下环境使用:
- ❌ 生产系统
- ❌ 面向公众的网络
- ❌ 共享基础设施
- ❌ 包含真实数据的系统
## 贡献
欢迎贡献!可扩展的领域:
- [ ] 附加协议服务器
- [ ] 更多混沌工程场景
- [ ] 增强的 AI 模型用于自动驾驶
- [ ] 持久化层 (PostgreSQL)
- [ ] Kubernetes operator
- [ ] 附加防御机制
- [ ] CLI 增强
- [ ] 仪表板可视化
有关指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
MIT License - 详情请参见 [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驱动, CISA项目, GitHub项目, GNU通用公共许可证, IP 地址批量处理, Maven, MITM代理, Node.js, OPA, Python工具, TypeScript, WAF测试, 协议模糊测试, 反取证, 多协议, 安全实验室, 安全插件, 安全测试, 安全评估, 攻击性安全, 数据展示, 欺骗技术, 流量模拟, 混乱工程, 漏洞验证, 红队, 网络安全, 网络模拟, 自动化攻击, 自定义请求头, 蜜罐, 证书利用, 请求拦截, 隐私保护, 靶场