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, 侦察检测, 大语言模型, 威胁情报, 实时仪表盘, 密码管理, 开发者工具, 提示注入, 攻击检测, 数据提取防御, 社会工程学防御, 蓝队分析, 蜜罐, 证书利用, 越狱检测, 逆向代理, 逆向工具, 集群管理, 零日漏洞检测