Sundew
A carnivorous honeypot for AI agents
______________________________________________________________________
Sundew部署了看起来逼真的服务,吸引了自主的人工智能代理,然后对他们的行为进行指纹识别和分类。每个部署都是独一无二的——由一个生成连贯身份的角色引擎提供支持,使每个实例与真实服务无法区分。
以 茅膏菜 --一种食肉植物,有像露珠一样闪闪发光的粘性触手。昆虫被吸引,着陆,无法逃脱。美丽、耐心、有效。
Sundew starts, shows persona: "Northvane Analytics (fintech)" 2. Split terminal: simulate AI agent discovering /.well-known/ai-plugin.json, reading /docs (OpenAPI), enumerating endpoints, connecting via MCP 3. Sundew logs light up with real-time classification, confidence scores climbing 4. sundew query --last-session -> full captured session with ai_agent (confidence: 0.91) 5. sundew generate --persona healthcare -> completely different deployment in seconds -->
Every deployment looks different. Every agent gets caught.
为什么是Sundew?
自主AI代理是进攻性安全的下一个前沿。他们浏览网页,调用API,连接到MCP服务器,并执行多步攻击链——所有这些都没有人为指导。三十年的蜜罐研究一直集中在人类攻击者身上。AI代理几乎什么都不存在。
阳光填补了这个空白。它暴露了人工智能代理实际与之交互的表面——MCP服务器、OpenAPI规范、人工智能插件清单——并使用行为指纹来分类访问者是人类、自动扫描仪、人工智能辅助工具还是完全自主的代理。
核心创新是 角色引擎当AI代理了解一个蜜罐的样子时,它可以避免所有相同的部署。Sunnew通过为每个实例生成唯一标识来解决这一问题——不同的公司名称、API结构、响应格式、时间配置文件和数据主题。看过一个Sundew部署的代理对其他代理没有任何优势。
快速开始
Docker(推荐):
docker run -p 8080:8080 karpie28/sundewpip:
pip install sundewsh
sundew serve来源:
git clone https://github.com/sundew-sh/sundew.git
cd sundew && make runSundew现在正在运行 http://localhost:8080 使用随机生成的角色。打开另一个终端,看看会发生什么。
你会看到什么
当AI代理发现你的Sundew部署时,日志会告诉你:
$ sundew serve
INFO Sundew v0.1.0 starting...
INFO Persona loaded: Northvane Analytics (fintech)
INFO Endpoints: /api/v2/transactions, /api/v2/accounts, /api/v2/customers
INFO MCP server active: query_transactions, get_customer_profile, read_config
INFO Listening on 0.0.0.0:8080
12:04:31 GET /.well-known/ai-plugin.json src=83.21.4.17 signal=ai_discovery
12:04:31 GET /openapi.json src=83.21.4.17 signal=api_enum
12:04:32 GET /api/v2/transactions?limit=100 src=83.21.4.17 signal=data_access
12:04:32 GET /api/v2/customers src=83.21.4.17 signal=data_access
12:04:33 POST /api/v2/auth/login src=83.21.4.17 signal=auth_attempt
12:04:33 MCP initialize src=83.21.4.17 signal=mcp_connect
12:04:34 MCP tools/call: read_config src=83.21.4.17 signal=sensitive_access
SESSION CLASSIFIED: ai_agent (confidence: 0.91)
Timing: 0.85 (consistent 200-800ms intervals)
Enumeration: 0.92 (systematic path discovery)
Headers: 0.78 (missing Referer, bot-like UA)
MCP: 1.00 (connected via MCP protocol)
Prompt leak: 0.88 ("As an AI assistant" in POST body)使用CLI查询捕获的会话:
sundew query --last-session
sundew query --type ai_agent --last 24h
sundew stats或者使用Sundew作为MCP服务器从Claude查询您的蜜罐数据:
{
"mcpServers": {
"sundew": {
"command": "sundew",
"args": ["mcp-client"]
}
}
}运作原理
Incoming Request
|
+----------+-----------+
| |
MCP Protocol HTTP Request
| |
+-------+-------+ +---------+---------+
| MCP Trap | | REST API Trap |
| Fake tools | | Fake endpoints |
| per persona | | per persona |
+-------+-------+ +---------+---------+
| |
+----------+-----------+
|
+---------+---------+
| Fingerprinter |
| 5 signal scores |
| 0.0-1.0 each |
+---------+---------+
|
+---------+---------+
| Classifier |
| human | automated |
| ai_assisted | |
| ai_agent |
+---------+---------+
|
+---------+---------+
| Storage |
| SQLite + JSONL |
| Structured logs |
+-------------------+
The Persona Engine shapes everything above:
endpoint paths, response bodies, headers,
timing, error formats, tool names, data themes.
Every deployment is unique.Persona引擎
在第一次运行时,Sundew生成了一个部署角色——一个连贯的身份,塑造了蜜罐的各个方面:
# Auto-generated, stored in ./data/persona.yaml
persona:
company_name: "Northvane Analytics"
industry: "fintech"
api_style: "rest"
framework_fingerprint: "express"
auth_scheme: "bearer_jwt"
data_theme: "financial"
response_latency_ms: [80, 350]
server_header: "nginx/1.24.0"
endpoint_prefix: "/api/v2"人物角色是在部署时使用LLM(本地通过Ollama或云API)生成的。响应在运行时被预先生成、缓存和确定性地提供——操作期间没有LLM延迟。
没有法学硕士?Sundew为常见行业预装了角色包。
陷阱表面
| 陷阱 | 它做什么 |
|---|---|
| MCP服务器 | 完全符合协议的MCP服务器,配备适合个人的工具 |
| REST API | 具有Swagger文档、身份验证和真实响应的自适应端点 |
| 人工智能发现 | /.well-known/ai-plugin.json, /.well-known/mcp.json, robots.txt, sitemap.xml |
指纹信号
| 信号 | 测量内容 | 重量 |
|---|---|---|
| 定时一致性 | 规则的请求间间隔 | 0.0-1.0 |
| 路径枚举 | 系统发现与随机发现 | 0.0-1.0 |
| 标头异常 | 缺少Referer、bot UA、异常Accept | 0.0-1.0 |
| 提示泄漏 | 请求体中的LLM工件 | 0.0-1.0 |
| MCP行为 | MCP协议连接 | 0.0-1.0 |
分类的综合评分图: human (\0.8).
配置
所有配置都存在 sundew.yaml:
traps:
mcp_server: true
rest_api: true
ai_discovery: true
persona: auto # or path to custom persona.yaml
llm:
provider: ollama # ollama, anthropic, openai, bedrock, none
model: llama3
server:
host: 0.0.0.0
port: 8080
storage:
database: ./data/sundew.db
log_file: ./data/events.jsonl请参阅 配置指南 对于所有选项。
路线图
看 ROADMAP.md 对于完整的计划。
| 版本 | 代号 | 焦点 |
|---|---|---|
| v0.1 | First Catch | Persona引擎、MCP/REST/发现陷阱、指纹识别、CLI |
| v0.2 | 更深的根 | RAG陷阱,金丝雀跟踪,PostgreSQL,插件系统 |
| v0.3 | Wider Net | 地形模块、STIX/TAXII导出、仪表板、多实例 |
| v1.0 | 研究平台 | 公共数据集、学术论文、社区陷阱库 |
文档
完整文档可在 医生s.sundw.sh:
贡献
Sundew是Apache 2.0许可下的开源软件。我们欢迎各种捐助。
看 贡献.md 关于开发设置、代码风格以及如何提交pull请求。
我们希望得到帮助的关键领域:
- Persona包 --新的行业主题(电子商务、物联网、游戏、政府)
- 圈闭类型 --GraphQL、gRPC、WebSocket、SSH
- 指纹信号 --新的检测启发式方法
- 研究 --部署Sundew并分享匿名调查结果
致谢
Sundew建立在数十年蜜罐研究的基础上,同时解决了人工智能攻击工具的新现实。
许可证
Apache许可证2.0。看 许可证 了解详情。
______________________________________________________________________
sundew.sh · docs · github
