BrightGir/AI-Honeypot

GitHub: BrightGir/AI-Honeypot

MIRAGE 是一款开源 AI 蜜罐系统,通过诱饵角色和伪造数据实时检测、欺骗并研究针对 AI agent 的 prompt 注入等对抗性攻击。

Stars: 5 | Forks: 1

# MIRAGE — AI 蜜罐 ![MIRAGE 横幅](https://static.pigsec.cn/wp-content/uploads/repos/cas/75/751e9f81ddeb83ef2d5a6e436f5f06b5fd5df23aa8a7108b734e55e06773cf02.png) **实时检测、欺骗并研究 AI 驱动的攻击。** MIRAGE 位于您的 AI agent 前端,负责拦截对抗性流量——包括 prompt 注入、越狱、数据窃取尝试、角色操纵等。当检测到攻击时,MIRAGE 不会将其静默拦截:它会启动一个极具迷惑性的诱饵角色,向攻击者提供伪造数据,同时记录其每一个动作,以供威胁情报分析。 ## 工作原理 ``` Attacker ──► /chat endpoint ──► Lobster Trap (risk analysis) │ risk < threshold ──► forward to real upstream │ risk ≥ threshold ──► honeypot switcher │ decoy persona (LLM) fake data, honey tokens │ session stored in Redis WS event → dashboard ``` 1. **每一条消息**都会经过 Lobster Trap——这是一个本地 DPI sidecar,负责对消息的注入模式、角色操纵、数据窃取尝试、混淆手段和凭证请求进行评分。 2. **低风险消息**会透明地转发到您真实的上游 AI(兼容 OpenAI 的 API 或直通模式)。 3. **高风险消息**会被路由到诱饵角色。攻击者将与一个极具迷惑性的虚假 AI 进行交互,该 AI 会提供伪造数据、honey token 和合成凭证——这些全都是假的。 4. **每个会话**都会被记录:完整的对话记录、MITRE ATLAS 技术标签、风险时间轴、IOC feed。 5. **仪表盘**会实时展示所有内容——攻击现场、会话档案、情报时间轴。 ## 仪表盘 Theater 视图会逐轮重放任何活跃的会话,并附带 MITRE ATLAS 技术分类标注: - **Dossier Rail(档案栏)** — 攻击者指纹、风险评分、14 天风险时间轴、IOC 标签 - **Conversation Pane(对话窗格)** — 完整的对话记录,包含诱饵与攻击者的标签,以及伪造材料的标注 - **Trap Rail(陷阱栏)** — 活跃角色、蜜罐材料清单、销毁控制 - **Wire(活动条)** — 所有活跃会话的实时条带,可按风险进行排序 其他视图:**Intel(情报)**(捕获的攻击 feed)、**Library(库)**(角色 + 数据集)、**Settings(设置)**(阈值、集成、上游配置)。 ## 快速开始 ### 演示模式(无需 API 密钥) ``` git clone https://github.com/BrightGir/AI-Honeypot.git cd AI-Honeypot cp backend/.env.example .env # 编辑 .env — 将 API_KEY 设置为任意值,留空 AI keys,设置 DEMO_MODE=true docker compose up --build -d ``` 打开 `http://localhost`——仪表盘随之加载,并循环模拟涵盖所有 9 种技术类别的攻击会话。 ### 生产模式 ``` cp backend/.env.example .env ``` 编辑 `.env`: ``` # 必需 API_KEY= GEMINI_API_KEY= # primary decoy LLM # 或 OPENAI_API_KEY= # alternative / fallback # 推荐 SECRET_ENCRYPTION_KEY= # encrypts integration keys at rest CORS_ORIGINS=https://your-dashboard.example.com # 可选 DEMO_MODE=false HONEYPOT_RISK_THRESHOLD=0.6 # 0.0–1.0, default 0.6 APP_ENV=production ``` ``` docker compose up --build -d ``` 该技术栈会启动四个服务:**Redis**、**Lobster Trap**(DPI)、**Backend**(Go API)、**Nginx**(静态前端 + 反向代理)。 ## 架构 ``` ┌─────────────────────────────────────────────────────┐ │ Nginx :80 │ │ ├── / → frontend (static HTML/JS/CSS) │ │ ├── /api/v1/* → backend :8081 │ │ └── /ws/live → backend :8081 (WebSocket) │ └─────────────────────────────────────────────────────┘ │ ┌─────────────┴──────────────────────────────────────┐ │ Backend (Go 1.24 · Gin) │ │ ├── /chat — main entry point for agents │ │ ├── Lobster Trap client → :8080 (DPI sidecar) │ │ ├── Honeypot switcher → decoy LLM (Gemini/OAI) │ │ ├── Session / Attack store → Redis │ │ └── WS hub → live dashboard events │ └────────────────────────────────────────────────────┘ │ ┌─────────────┴──────────────────────────────────────┐ │ Lobster Trap :8080 (Go) │ │ Deep-packet inspection, risk scoring, policy │ └────────────────────────────────────────────────────┘ │ ┌─────────────┴──────────────────────────────────────┐ │ Redis :6379 │ │ Sessions, attacks, personas, rules, settings │ └────────────────────────────────────────────────────┘ ``` ### Backend 包 | 包 | 职责 | |---|---| | `api` | HTTP 处理程序、路由器、WebSocket hub 处理程序 | | `honeypot` | 风险阈值检查、诱饵角色路由 | | `lobster` | Lobster Trap DPI 客户端 | | `decoy` | 生成器接口(Gemini / OpenAI 实现) | | `store` | Redis 持久化——会话、攻击、角色、规则 | | `model` | 领域类型:Session、Attack、Persona、Rule、Settings | | `demo` | 演示模拟器——生成逼真的攻击会话 | | `ws` | WebSocket hub——向所有仪表盘客户端进行广播 | | `crypto` | 用于静态集成密钥的 AES-256-GCM 加密 | | `upstream` | 指向客户真实 LLM endpoint 的透明代理 | | `prompt` | 角色 prompt 加载器 | ## API 所有 endpoint 都需要 `X-API-Key: ` 请求头。 基础路径:`/api/v1` ### Sessions ``` GET /sessions list sessions (limit, offset) GET /sessions/:id get session with full transcript GET /sessions/:id/analyze AI-powered session analysis POST /sessions/:id/burn burn trap — blocklist agent, persist evidence, emit IOC POST /sessions/:id/terminate terminate without burn POST /sessions/:id/inject-trail inject a decoy message into the session GET /sessions/export export CSV or JSON ``` ### Attacks / Intel ``` GET /attacks list captured attacks (limit, offset) GET /attacks/:id get single attack POST /attacks/:id/ioc export to IOC feed GET /attacks/export export CSV ``` ### 检测规则 ``` GET /rules list custom detection rules POST /rules create rule PATCH /rules/:id update rule DELETE /rules/:id delete rule GET /rules/engine/stats rules engine hit counters ``` ### Personas ``` GET /personas list decoy personas POST /personas create persona PATCH /personas/:id update persona DELETE /personas/:id delete persona POST /personas/:id/test test persona with a sample message POST /personas/:id/datasets attach a fake dataset GET /personas/datasets list available datasets POST /personas/import import persona from YAML ``` ### Stats ``` GET /stats aggregate stats (risk histogram, top techniques) GET /stats/timeline attack volume over time GET /stats/techniques technique distribution GET /stats/top-agents most active attacking agents GET /stats/geo origin country distribution GET /stats/export full data export ``` ### Settings ``` GET /settings get current settings PATCH /settings update settings PUT /settings/upstream configure real upstream AI endpoint POST /settings/upstream/test test upstream connectivity POST /settings/panic quarantine mode — block all agents immediately POST /settings/wipe wipe all session/attack data ``` ### WebSocket ``` GET /ws/live live event stream (auth via first message: {"token":""}) ``` **WS 事件类型:** - `session_created` — 检测到新会话 - `session_updated` — 会话风险/状态发生变化 - `session_burned` — 会话被操作员销毁 - `attack_detected` — 保存了新的攻击记录 - `heartbeat` — 每 5 秒:`{ collectors, events_per_sec }` - `auth_ok` — 在 WS 身份验证成功后发送 ### Chat(agent 入口点) ``` POST /chat { "session_id": "...", "message": "...", "agent_id": "..." } ``` 这是您的 AI agent 或代理调用的 endpoint。MIRAGE 会拦截、评分,并将其路由到诱饵或上游,然后返回让攻击者无法辨真伪的响应。 ## 配置参考 | 变量 | 必需 | 默认值 | 描述 | |---|---|---|---| | `API_KEY` | **是** | — | 仪表盘 + WebSocket 身份验证密钥 | | `GEMINI_API_KEY` | 二选一 | — | 主诱饵 LLM | | `OPENAI_API_KEY` | 二选一 | — | 备用诱饵 LLM | | `SECRET_ENCRYPTION_KEY` | 推荐 | — | 用于静态密钥的 AES-256-GCM 密钥(`openssl rand -hex 32`) | | `REDIS_URL` | 否 | `redis://localhost:6379` | Redis 连接字符串 | | `LOBSTER_TRAP_URL` | 否 | `http://localhost:8080` | Lobster Trap DPI sidecar URL | | `LOBSTER_API_KEY` | 否 | 回退到 AI 密钥 | 专用的 Lobster Trap 凭证 | | `HONEYPOT_RISK_THRESHOLD` | 否 | `0.6` | 触发蜜罐激活的风险评分(0–1) | | `CORS_ORIGINS` | 否 | `http://localhost:3000` | 逗号分隔的允许的仪表盘来源 | | `TRUSTED_PROXIES` | 否 | `127.0.0.1,::1` | 受信任用于 X-Forwarded-For 的 IP;`none` 表示直连互联网 | | `DEMO_MODE` | 否 | `false` | 每 15 秒生成逼真的攻击会话 | | `PORT` | 否 | `8081` | Backend HTTP 端口 | | `LOG_FORMAT` | 否 | `json` | `json` 或 `text` | | `LOG_LEVEL` | 否 | `info` | `debug`、`info`、`warn`、`error` | | `APP_ENV` | 否 | `development` | 设置为 `production` 以强制要求 `SECRET_ENCRYPTION_KEY` | | `PROMPTS_DIR` | 否 | `./prompts` | 包含角色 `.txt` 文件的目录 | ### 前端 将 `frontend/config.js` 复制到 `frontend/config.local.js`(已被 gitignored)并进行设置: ``` window.MIRAGE_CONFIG = { apiBase: 'https://your-server.example.com/api/v1', wsUrl: 'wss://your-server.example.com/ws/live', apiKey: 'your-api-key', }; ``` 在 Docker 中,配置会在请求时由 Nginx 注入——只需在 `.env` 中设置 `API_KEY` 和 `CORS_ORIGINS`,剩下的交由 compose 技术栈处理即可。 ## 检测技术 MIRAGE 根据 [MITRE ATLAS](https://atlas.mitre.org/) 框架对攻击进行分类: | ID | 技术 | 描述 | |---|---|---| | `prompt_inject` | Prompt 注入 | 覆盖系统 prompt,通过用户内容注入指令 | | `jailbreak_dan` | 越狱(DAN 风格) | 已知的越狱模式、角色覆盖 | | `data_exfil` | 数据泄露 | 索取用户数据、数据库、API 密钥 | | `sys_override` | 系统覆盖 | 开发者模式欺骗、声称解除限制 | | `role_switch` | 角色操纵 | 请求切换为其他角色(OMEGA、HackerBot 等) | | `tool_abuse` | 工具滥用 | 滥用代码执行或函数调用工具 | | `context_leak` | 上下文泄露 | 请求重复上下文窗口、先前的会话 | | `encoded_payload` | 编码载荷 | Base64 或其他经过混淆的攻击字符串 | | `multi_turn` | 多轮攻击 | 通过多轮对话逐步进行胁迫 | ## 销毁陷阱工作流 在仪表盘上点击 **Burn this trap**: 1. 将 Redis 中的会话状态标记为 `burned`(带时间戳) 2. 移除 Redis TTL——证据将永久保留 3. 将攻击者的 `agent_id` 添加到黑名单——以后来自该 agent 的所有 `/chat` 请求都将立即被拒绝并返回 403 4. 自动创建一条总结该会话的 IOC 攻击记录 5. 向所有已连接的仪表盘客户端广播 `session_burned` WS 事件 ## 部署说明 - compose 技术栈仅将 backend 和 Lobster Trap 绑定到 `127.0.0.1`;只有 Nginx 暴露在 `:80` 端口。 - 如果需要 HTTPS,请在前面放置一个负责 TLS 终止的反向代理(Caddy、Nginx、Cloudflare Tunnel)。 - `SECRET_ENCRYPTION_KEY` 会在集成 API 密钥存入 Redis 之前使用 AES-256-GCM 对其进行加密。请在添加任何集成之前对其进行设置;轮换密钥需要重新输入集成凭证。 - `APP_ENV=production` 会启用一项启动保护机制:如果未设置 `SECRET_ENCRYPTION_KEY`,系统将退出。 - 全新安装的 Ubuntu 系统可使用位于 `deploy/setup.sh` 的服务器设置脚本。 ## 开发 ### Backend ``` cd backend cp .env.example .env # fill in values go run ./cmd/server ``` 运行测试: ``` go test ./... ``` 集成测试使用 `miniredis`——不需要真实的 Redis。 ### Frontend 无需构建步骤。直接在浏览器中打开 `frontend/index.html`,或使用任何静态服务器进行托管: ``` cd frontend python3 -m http.server 3000 ``` 在 `config.local.js` 中设置 `apiBase`、`wsUrl` 和 `apiKey`。 ## 技术栈 - **Backend:** Go 1.24、Gin、gorilla/websocket、go-redis、google/uuid - **LLM 提供商:** Google Gemini(主要)、OpenAI(备用/替代) - **存储:** Redis 7 - **DPI sidecar:** Lobster Trap(Go,在 Docker 中从源码构建) - **Frontend:** 原生 React 18(无需构建,CDN),纯 CSS - **基础设施:** Docker Compose、Nginx ## 演示 实时演示地址:[mirage-demo.space](http://mirage-demo.space) ## 文档 - [API.md](API.md) — 完整的 REST + WebSocket 参考文档 - [DOCS.md](DOCS.md) — 平台概述、架构、UI 指南 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 ## 状态 Alpha 阶段。核心检测与欺骗 pipeline 已稳定。仪表盘功能完备。API 可能会在不同版本之间发生变化。 已知的不足: - 尚未实现 IOC 导出(STIX/TAXII) - 没有内置 HTTPS——需要外部 TLS 终止 - 会话分析(`/analyze`)需要 OpenAI 密钥 ## 社区与支持 如果该项目对您的研究或生产环境安全有所帮助,请考虑给本仓库点一个 ⭐ 以表支持!我们正在积极寻求反馈和贡献者,以共同提升 AI 主动防御的标准。🚀
标签:AI安全, Chat Copilot, CISA项目, EVTX分析, LLM防御, Petitpotam, 威胁情报, 开发者工具, 搜索引擎查询, 数据展示, 日志审计, 红队, 蜜罐, 证书利用, 请求拦截