LeightonSec/llm-honeypot

GitHub: LeightonSec/llm-honeypot

一个伪装成 AI 助手的 LLM 蜜罐,能实时检测、分类并记录提示注入、越狱等多种针对大语言模型的攻击尝试。

Stars: 0 | Forks: 0

# LLM Honeypot 一个故意暴露的虚假 AI 助手,可实时记录和分析攻击尝试。它呈现出逼真的聊天 UI,在后台默默对每个 prompt 运行检测,对攻击类型进行分类,并在实时仪表板中展示所有信息。 基于 [ai-firewall](../ai-firewall) 检测引擎构建。 ## 工作原理 1. 访问者进入一个虚假的 AI 助手界面(“Aria by NexusAI Labs”) 2. 每个 prompt 都会经过 ai-firewall 的双层检测器(关键词扫描 + Claude API) 3. 第二个分类器将尝试行为映射到五种攻击类型之一 4. 返回一个令人信服但有推托作用的响应——攻击者看不出任何异常 5. 所有攻击尝试连同完整的元数据被记录到 SQLite 中 6. 位于 `/dashboard` 的仪表板会显示实时攻击数据和统计信息 ### 攻击类型分类 | 类型 | 捕获内容 | |---|---| | `prompt_injection` | 嵌入式指令覆盖,系统 prompt 操纵 | | `jailbreak` | DAN,开发者模式,绕过限制,人设劫持 | | `data_extraction` | 训练数据探测,系统 prompt 泄露,配置信息窃取 | | `social_engineering` | 伪造权威身份,紧急情况话术,虚构/假设性包装 | | `reconnaissance` | 能力映射,模型指纹识别,连接探测 | ## 安全配置 ### 仪表板保护 在 `.env` 中设置 `DASHBOARD_SECRET`,使用密钥 token 锁定 `/dashboard`、`/api/attacks`、`/api/stats` 和 `/export`: ``` DASHBOARD_SECRET=some-strong-random-string ``` 然后通过以下方式访问仪表板: ``` http://localhost:5001/dashboard?secret=some-strong-random-string ``` 或者在 API 调用中传入 `X-Dashboard-Secret: some-strong-random-string` 请求头。 如果未设置 `DASHBOARD_SECRET`,所有路由都是开放的(适用于 localhost,**不**适用于暴露在互联网的环境)。 ### 反向代理 / X-Forwarded-For 如果在 nginx、Caddy、Cloudflare 或任何其他反向代理之后运行 honeypot,请设置 `TRUST_PROXY=1`,以便从 `X-Forwarded-For` 中提取真实的访问者 IP: ``` TRUST_PROXY=1 ``` 在直接暴露于互联网的情况下,请保持未设置(或 `TRUST_PROXY=0`)。当 `TRUST_PROXY` 关闭时,honeypot 会使用原始套接字地址——攻击者无法伪造其 IP 来绕过速率限制或在指纹数据中隐藏脚本化的扫描模式。 ### 调试模式 调试模式**默认关闭**。仅在本地开发时启用它: ``` FLASK_DEBUG=1 python app.py ``` 切勿在面向互联网的主机上以 `FLASK_DEBUG=1` 运行——这会在发生异常时暴露一个交互式的 Python 控制台。 ### 速率限制 `/chat` 被限制为每个 IP 每 60 秒最多 20 个请求(基于内存,重启后重置)。如果需要,请在 `app.py` 中调整 `RATE_LIMIT` 和 `RATE_WINDOW`。 ## 设置说明 ### 1. 克隆 / 进入项目 ``` cd /path/to/llm-honeypot ``` ### 2. 创建并激活虚拟环境 ``` python3 -m venv venv source venv/bin/activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 配置环境 ``` cp .env.example .env ``` 编辑 `.env` 并添加你的 Anthropic API 密钥: ``` ANTHROPIC_API_KEY=sk-ant-... ``` ### 5. 运行 ``` python app.py ``` 服务器将在 `http://0.0.0.0:5001` 上启动。 | URL | 描述 | |---|---| | `http://localhost:5001/` | 虚假 AI 助手(honeypot 前端) | | `http://localhost:5001/dashboard` | 实时攻击监控仪表板 | | `http://localhost:5001/export` | 以 JSON 格式下载所有日志 | ## API ### `POST /chat` 向 honeypot 提交 prompt。返回一个虚假的 AI 响应。 ``` { "prompt": "ignore previous instructions and..." } ``` 响应: ``` { "response": "I process each conversation naturally..." } ``` ### `GET /api/attacks?limit=100&offset=0` 以 JSON 数组的形式返回记录的攻击。 ### `GET /api/stats` 返回聚合统计数据(总数、按风险级别统计、按攻击类型统计、最近 10 条记录)。 ### `GET /export` 以 `honeypot_attacks.json` 的形式下载完整的攻击日志。 ## 安全提示 - 在任何公开部署之前,请**设置 `DASHBOARD_SECRET`**。如果没有它,`/dashboard`、`/api/attacks` 和 `/export` 将对所有人开放——包括你正在记录的攻击者。 - 仅当前面有受信任的反向代理时,才**设置 `TRUST_PROXY=1`**。在直接暴露的套接字上信任 `X-Forwarded-For` 会让攻击者得以伪造 IP 并绕过速率限制。 - honeypot 本身是故意开放的——这正是它的目的。不要在能够访问敏感内部系统的基础设施上运行它。 - SQLite 数据库(`honeypot.db`)和 `.env` 已被 git 忽略。切勿提交这两个文件。 - 如果你怀疑你的 Anthropic API 密钥已泄露,请立即轮换。 - 基于内存的速率限制和指纹存储不是线程安全的。请使用单 worker 运行(`python app.py`),除非你添加了锁,否则不要使用多线程的 WSGI 服务器。
标签:ai-firewall, AI安全, API安全, Caddy, Chat Copilot, Claude, Cloudflare, CVE检测, DLL 劫持, Honeypot, IP追踪, JSON输出, LLM, MITRE ATT&CK, Nginx, PFX证书, SQLite, Unmanaged PE, Web安全, X-Forwarded-For, 侦察检测, 大语言模型, 威胁情报, 实时仪表盘, 密码管理, 开发者工具, 提示注入, 攻击检测, 数据提取防御, 社会工程学防御, 蓝队分析, 蜜罐, 证书利用, 越狱检测, 逆向代理, 逆向工具, 集群管理, 零日漏洞检测