shannon

2026-02-09

ai

任何节约归根到底是时间的节约。——马克思

Shannon:让“渗透测试”从年审变成每次发布的标配

传统安全测试有一个根本缺陷:一年做一两次,开发却每天在发生。Keygraph 推出的开源项目 Shannon(Lite 版本)把这件事颠倒过来——它是一个“全自动 AI 渗透测试员”,核心理念是“证明式检测”:不仅提示风险,还要用内置浏览器与命令行在你的应用上真正打出漏洞的可复现实验,生成可复制的 PoC 与专业报告。

  • 仓库与主页:KeygraphHQ/shannon · keygraph.io
  • 简述:Fully autonomous AI hacker to find actual exploits in your web apps. Shannon Lite 在“无提示、源码可用”的 XBOW 基准上达成 96.15% 成功率。
  • 许可:AGPL-3.0
  • 语言与工具:TypeScript,Docker 运行;Anthropic Claude Agent SDK 为核心推理引擎;集成 Nmap、Subfinder、WhatWeb、Schemathesis 等安全工具
  • 定位:白盒(需要源码),自动化渗透与合规平台中的核心组件

什么是 Shannon:它不只是扫描器

  • 目标:在别人之前“攻破”你的 Web 应用,给出可验证的漏洞证据
  • 方法:结合白盒源码分析与黑盒动态利用,分阶段自动完成“侦察→漏洞分析→利用→报告”
  • 输出:渗透测试级别的报告,只收录“已验证、可复现”的漏洞,附带复制即可运行的 PoC

示例成果:

  • 对 OWASP Juice Shop 一次自动运行就识别出 20+ 高危漏洞,包括完全的认证绕过与数据库外泄,详见仓库的完整报告。

为什么需要它:把 364 天的风险降到最低

很多团队已经接入了 Claude Code、Cursor 等编码代理,开发效率显著提升。但渗透测试仍然是年度事件,这在剩下的 364 天里留下巨大的安全缺口。
Shannon 旨在成为“按需的白盒渗透测试员”:不是报“潜在问题”,而是给出“实际可利用”的证据,让每次发布都能伴随一次自动化安全校验。


基准成绩:XBOW 的 96.15% 成功率意味着什么

Shannon Lite 在“无提示、源码可用(白盒)”的 XBOW 基准上达成 96.15% 成功率(100/104 漏洞)。这不是与黑盒结果完全对等的“同台比较”,但它证明了 Shannon 在“真实内部安全审查场景(白盒)”下的深层代码推理能力。

细分成绩(摘自基准报告):

  • Broken Authorization:25/25(100%)
  • SQL Injection:7/7(100%)
  • Blind SQLi:3/3(100%)
  • SSRF/Misconfiguration:21/22(95.45%)
  • XSS:22/23(95.65%)
  • SSTI:12/13(92.31%)
  • Command Injection:10/11(90.91%)

报告还公开了 4 个失败案例的分析与改进方向,体现“透明化评估与迭代路线”。


端到端工作流:四阶段并行化“证据优先”

架构的核心是“多代理 + 并行化”,以“无证不报”为原则,最大限度减少误报:

1
Reconnaissance → Vulnerability Analysis → Exploitation → Reporting
  • Reconnaissance(侦察):源码分析 + Nmap/Subfinder 等工具 + 浏览器探索,建攻击面地图
  • Vulnerability Analysis(漏洞分析):按 OWASP 类别的专用代理并行寻迹(注入/SSRF 等做数据流追踪),产出“可利用路径假设”
  • Exploitation(利用):专用利用代理对假设路径进行真正攻击(浏览器自动化/命令行/自定义脚本),无法证明的假设直接丢弃
  • Reporting(报告):汇总“侦察信息 + 已验证证据”,生成可复制 PoC 的专业报告

一键上手:从克隆到输出的 5 分钟

准备条件:

  • Docker
  • AI 凭据(二选一):Anthropic API Key(推荐)或 Claude Code OAuth token。另有“Router Mode”实验性支持 OpenAI/Gemini(OpenRouter),不保稳定。

快速运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. Clone Shannon
git clone https://github.com/KeygraphHQ/shannon.git
cd shannon

# 2. 配置凭据(环境变量或 .env)
export ANTHROPIC_API_KEY="your-api-key"
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000

# 或 .env 文件
cat > .env << 'EOF'
ANTHROPIC_API_KEY=your-api-key
CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
EOF

# 3. 启动一次渗透测试
./shannon start URL=https://your-app.com REPO=/path/to/your/repo

进度与监控:

1
2
3
./shannon logs              # 实时 worker 日志
./shannon query ID=shannon-1234567890 # 查询指定工作流
open http://localhost:8233 # 打开 Temporal Web UI

停止与清理:

1
2
./shannon stop              # 停止容器,保留数据
./shannon stop CLEAN=true # 完整清理,删除数据

常用参数:

1
2
3
./shannon start URL=https://example.com REPO=/path/to/repo
./shannon start URL=... REPO=... CONFIG=./configs/my-config.yaml # 使用自定义配置
./shannon start URL=... REPO=... OUTPUT=./my-reports # 指定输出目录

输出位置与结构:

1
2
3
4
5
6
audit-logs/{hostname}_{sessionId}/
├── session.json
├── agents/
├── prompts/
└── deliverables/
└── comprehensive_security_assessment_report.md

配置实用示例:登录与范围控制

Shannon 支持 2FA/TOTP 与自定义登录流程,以及“聚焦/避免”测试路径的规则设定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
authentication:
login_type: form
login_url: "https://your-app.com/login"
credentials:
username: "test@example.com"
password: "yourpassword"
totp_secret: "LB2E2RX7XFHSTGCK" # 可选

login_flow:
- "Type $username into the email field"
- "Type $password into the password field"
- "Click the 'Sign In' button"

success_condition:
type: url_contains
value: "/dashboard"

rules:
avoid:
- description: "AI should avoid testing logout functionality"
type: path
url_path: "/logout"

focus:
- description: "AI should emphasize testing API endpoints"
type: path
url_path: "/api"

注意事项与边界

  • 目标环境:不要在生产环境运行(可能会创建用户、修改数据、触发注入副作用)
  • 合法与伦理:必须获得明确授权;未经许可的扫描/利用是违法行为
  • LLM 局限:尽管“证据优先”显著降低误报,仍需人工复核;Lite 版不覆盖所有风险类型
  • 时间与成本:一轮测试通常 1–1.5 小时;以 Claude 4.5 Sonnet 计费,约 50 美元上下(随模型/复杂度波动)

Shannon 生态与路线图

  • Lite(AGPL-3.0):开源、可自由用于内部测试
  • Pro(商业):更强的数据流分析(参考 LLMDFA 思路)、企业级编排、CI/CD 集成、深度覆盖与支持
  • 公开基准:提供“清理版 XBOW 基准”与完整结果(104 份报告 + 逐回合日志),便于社区复现与验证

结语:让渗透测试走向“每次发布”

Shannon 不想做“找可能问题”的工具,而是“拿证据”的安全伙伴。把每次部署变成一次自动化的、可复核的安全校验,让“年审式安全”转变为“持续式安全”。
如果你已经在用编码代理加速交付,也应该让渗透代理为你的上线保驾护航。