inferno-lab/Apparatus

GitHub: inferno-lab/Apparatus

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

Stars: 1 | Forks: 0

![Apparatus Banner](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/118a34384d182350.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) 一站式网络安全测试与仿真实验室平台,适用于红队、混沌工程、防御验证以及安全工具测试。
## 什么是 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测试, 协议模糊测试, 反取证, 多协议, 安全实验室, 安全插件, 安全测试, 安全评估, 攻击性安全, 数据展示, 欺骗技术, 流量模拟, 混乱工程, 漏洞验证, 红队, 网络安全, 网络模拟, 自动化攻击, 自定义请求头, 蜜罐, 证书利用, 请求拦截, 隐私保护, 靶场