atlas-crew/Apparatus

GitHub: atlas-crew/Apparatus

一个端到端的网络模拟与安全测试平台,通过多协议仿真、AI 蜜罐与混沌工程帮助红蓝队验证防御与提升韧性。

Stars: 1 | Forks: 0

![Apparatus Banner](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/480a886bb5140602.png) ![Node.js](https://img.shields.io/badge/Node.js-v23-green) ![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue) ![Multi-Protocol](https://img.shields.io/badge/Protocols-13%2B-orange) ![Open Source](https://img.shields.io/badge/License-MIT-black) 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测试, 协议仿真, 威胁情报, 安全培训, 安全插件, 安全模拟, 开发者工具, 开源安全工具, 弹性测试, 搜索引擎查询, 故障注入, 欺骗技术, 沙箱环境, 流量仿真, 混合加密, 混沌工程, 漏洞验证, 红队工具集, 网络安全测试平台, 自动化攻击, 自定义请求头, 蓝队防御, 蜜罐, 证书利用, 逆向工程平台