Shannon:Keygraph 开源 AI 渗透测试框架,从源码分析到真实漏洞利用
posts posts 2026-05-17T20:10:00+08:00Shannon 是 Keygraph 开发的白盒 AI 渗透测试框架,通过源码分析识别攻击向量,再用浏览器自动化执行真实漏洞利用。测试周期约 1-1.5 小时,XBOW benchmark 得分 96.15%。本文深入解析其五阶段多智能体架构、OWASP 漏洞覆盖范围,以及 Shannon Lite 与 Pro 两个版本的定位差异。技术笔记AI安全, 渗透测试, Keygraph, 自动化安全, Claude, Web安全, 多智能体总览:AI 渗透测试真正在解决的问题
传统渗透测试一年一次,但团队每天都在往生产环境推送代码。这一年的安全空窗期,正是 Shannon 想填的坑。
Shannon 是 Keygraph 开发的一个自主化、白盒 AI 渗透测试框架。它的核心逻辑很直接:先读目标应用的源码,识别潜在攻击向量,再通过 Playwright 浏览器自动化对这些向量发起真实攻击,最后只把能被利用的漏洞写进报告——没有 PoC 的漏洞,根本不报告。
这个"源码引导 + 动态验证"的组合,是它与大多数安全扫描工具最本质的区别。
本文覆盖内容:
- Shannon 的技术定位与适用场景
- 多智能体五阶段架构的运行机制
- OWASP 漏洞覆盖范围与已知边界
- XBOW benchmark 成绩的解读方式
- Shannon Lite 与 Pro 的版本差异与选型建议
一、为什么需要自主渗透测试
工具链能跑 CI/CD,渗透测试却还在靠年度采购。这个缺口不补上,生产环境里低垂的漏洞果实就一直在那里。
传统 SAST 工具的问题在于误报率高——它们看到了数据流过危险函数,就报漏洞,但不会验证这个漏洞是否真的能被利用。渗透测试能验证,但频率太低、费用太高。
Shannon 的出现正是瞄准这个 gap:把渗透测试的验证能力自动化,让它在每次 build 或 release 时都能跑一遍。
关键约束是白盒测试。Shannon 读取目标源码来引导攻击策略,这意味着它只适用于你拥有源码权限的应用(内部项目、staging 环境、授权测试目标)。它不做黑盒被动扫描,而是主动分析代码、主动构造攻击载荷。
⚠️ 未经明确授权,运行 Shannon 对任何系统发起攻击均属违法行为。使用前必须取得目标系统所有者的书面授权。
二、技术架构:五阶段多智能体系统
Shannon 的核心引擎是 Anthropic 的 Claude Agent SDK,采用多智能体架构分五个阶段运行:
预侦察 → 侦察 → 并行漏洞分析 → 并行漏洞利用 → 报告生成阶段 1:预侦察(Pre-Reconnaissance)
纯静态分析阶段。不启动浏览器,只读源码。
这个阶段做三件事:识别应用框架和入口点、梳理所有安全相关组件(认证系统、数据库访问模式、输入处理逻辑)、建立完整的攻击面清单,包括所有 XSS、SSRF、Injection 类型的 sinks 及其代码位置。
预侦察的输出为后续所有阶段提供基础情报。如果源码里用了 ORM 且全部参数化,Injection 智能体就知道把精力放在别的地方。
阶段 2:侦察(Reconnaissance)
从静态走向动态。用 Playwright 浏览器自动化对运行中的应用进行实际访问,验证端点是否真实存在、映射认证流程、盘点所有输入向量(URL 参数、POST 字段、Header、Cookie),并记录真实授权架构。
侦察阶段建立了代码视角与运行时行为之间的关联,确保后续漏洞分析不会基于错误的假设。
阶段 3:漏洞分析(Vulnerability Analysis)
五个并行智能体同时工作,分别聚焦一个攻击领域:
| 智能体 | 分析方式 | 覆盖范围 |
|---|---|---|
| Injection | Source→Sink 污点追踪 | SQL、命令、文件、模板、反序列化注入 |
| XSS | Sink→Source 反向追踪 | innerHTML、document.write、eval 等渲染上下文 |
| SSRF | Sink→Source 反向追踪 | HTTP 客户端、原始 Socket、URL 打开器 |
| Auth | 守卫验证 | 速率限制、会话管理、Token 熵、密码哈希、SSO/OAuth 配置 |
| Authz | 守卫验证 | 水平(所有权)、垂直(角色/权限)、上下文/工作流违规 |
每个智能体输出一个漏洞利用队列:结构化的 JSON 文件,列出具体的漏洞类型、代码位置、攻击方法、利用参数和代码证据,以及建议的初始载荷。
如果某攻击领域的利用队列为空,对应的 Exploitation 智能体直接跳过,节省时间和成本。
阶段 4:漏洞利用(Exploitation)
同样五个并行智能体,消费阶段 3 输出的利用队列,用完整的 Playwright 浏览器自动化尝试验证每个假设。
智能体可以导航到端点、填写表单、提请请求、观察响应、截图,以及串联多个请求来验证复杂攻击链。
核心原则:POC 或放弃。 利用智能体将每个发现分类为 EXPLOITED、POTENTIAL 或 FALSE POSITIVE。只有 EXPLOITED(有具体证据的)才会进入最终报告。POTENTIAL 发现会在报告生成前被程序化剥离——这给了智能体一个记录不确定观察的空间,同时不会污染最终交付物。
阶段 5:报告生成(Reporting)
一个报告智能体综合所有证据文件,生成一份专业的执行摘要级别的渗透测试报告。该智能体只看确认的发现(阶段 4 的证据文件),从不看原始假设。
报告去重、评估严重性、提供修复指导。每条报告的漏洞都包含可复现步骤和复制粘贴验证命令。
三、一次攻击的完整流程
理解各阶段如何配合的最好方式,是跟踪一个具体案例。
假设目标是 OWASP Juice Shop,一个故意留有漏洞的 Web 应用。
阶段 1:预侦察
智能体读取 Juice Shop 的 Node.js 源码,识别 Express 路由、SQL ORM 使用情况、用户输入入口点。它发现应用使用 Sequelize ORM 但某些端点的查询是字符串拼接的——这是一个潜在的 SQL 注入 sink。
阶段 2:侦察
Playwright 启动,访问应用,注册一个测试账户,登录。智能体映射所有 API 端点、认证流程和输入向量。它发现登录端点有个隐藏的参数 debug=true,可以触发额外的错误输出。
阶段 3:漏洞分析
Injection 智能体追踪用户输入到 SQL 查询的路径,发现登录表单的 email 参数在 WHERE 子句中直接拼接。它生成一个利用载荷:' OR '1'='1,并将其加入利用队列。
阶段 4:漏洞利用
Injection Exploitation 智能体接收队列,用 Playwright 向登录端点发送特殊构造的请求。它观察到响应中返回了管理员数据——注入成功。智能体将这次成功利用的证据(请求/响应截图、数据库泄漏的记录)写入证据文件。
阶段 5:报告生成
报告智能体综合所有 EXPLOITED 状态的发现,生成最终报告:SQL 注入导致用户数据库完整拖库、认证绕过允许普通用户获得管理员权限。报告包含完整的 PoC 命令和修复建议。
这个流程体现了 Shannon 的核心承诺:没有真实利用的漏洞,不出现在报告中。
四、OWASP 漏洞覆盖范围与已知盲区
当前覆盖的漏洞类型
Shannon Lite 目前针对以下可利用的漏洞类别:
- Broken Authentication & Authorization:缺失的授权检查、认证绕过、水平/垂直权限提升
- SQL Injection:SQL 查询注入、数据库拖库
- Command Injection:操作系统命令注入
- Cross-Site Scripting (XSS):反射型、存储型
- Server-Side Request Forgery (SSRF):内部网络侦察、令牌转发
在 OWASP WSTG 测试清单中,已通过验证的检查项包括:
- WSTG-INPV-01/02(反射/存储 XSS)
- WSTG-INPV-05(SQL 注入)
- WSTG-INPV-11/12(代码/命令注入)
- WSTG-INPV-18(服务端模板注入)
- WSTG-INPV-19(SSRF)
- WSTG-SESS-01/02/03/04/05/06/07/10(会话管理多项)
- WSTG-ATHN 系列(11 项认证测试)
- WSTG-ATHZ 系列(5 项授权测试)
- WSTG-CLNT-01/02/03/04/12/13(客户端测试 6 项)
- WSTG-APIT-01/02/99(API 测试 3 项)
Shannon 不覆盖什么
这不是一份完整的安全风险清单。Shannon 的"无利用不报告"模式意味着它不会报告它无法主动利用的漏洞,例如:
- 脆弱的第三方库依赖(需要 SCA 工具)
- 弱加密算法(纯静态检查)
- 不安全配置(如生产环境启用 DEBUG 模式)
- 纯理论风险的架构缺陷
这些类型的发现,恰恰是 Shannon Pro 版中 SAST 模块的核心关注点。
五、Benchmark 成绩怎么理解
Shannon Lite 在 XBOW 安全 benchmark 上取得了 96.15% 的成绩(100/104 次利用)。
理解这个数字需要注意几点:
测试对象:这是一个 hint-free、source-aware 版本的 XBOW benchmark,意味着 Shannon 可以读取源码(白盒),但不会获得额外的提示。这测试的是它在真实场景下的攻击能力。
“100/104 exploits” 的含义:benchmark 有 104 个挑战场景,Shannon 成功利用了 100 个。没有利用的 4 个,可能是当前版本的攻击域未覆盖的类型,或者是利用成本超出当前设计的攻击链复杂度。
96.15% 不能推出什么:这个数字不能说明"你的应用在 Shannon 下就是安全的"。benchmark 是用故意留有漏洞的靶场测的,生产应用中可能有 benchmark 未涵盖的攻击面。此外,LLM 生成的内容仍可能产生幻觉,观察到的成功率在不同的应用技术栈上可能有显著差异。
benchmark 成绩更大的参考价值在于:它在受控环境下验证了 Shannon 的攻击方法论是系统化的而不是随机撞的。
六、Shannon Lite 与 Pro:两个版本怎么选
| 维度 | Shannon Lite(本文仓库) | Shannon Pro(商业版) |
|---|---|---|
| 许可证 | AGPL-3.0 | 商业 |
| 静态分析 | 代码审查引导 | 完整 SAST(含 CPG 数据流分析) |
| 动态测试 | 自主 AI 渗透测试 | 自主 AI 渗透测试(含静态-动态关联) |
| 分析引擎 | 代码审查提示词 | CPG + LLM 节点级推理 |
| 业务逻辑安全 | 无 | 自动不变式发现 + Fuzzer 生成 + Exploit 合成 |
| SCA | 无 | 含可达性分析 |
| Secrets 检测 | 无 | 正则 + LLM + 活性验证 |
| CI/CD 集成 | 手动 / CLI | 原生 CI/CD,GitHub PR 扫描 |
| 部署模式 | CLI | 托管云或自托管 Runner |
| 边界分析 | 无 | 自动服务边界检测 + 团队路由 |
Shannon Lite 的适用场景
- 在本地测试自己开发的应用(AGPL-3.0 要求你对修改版开源)
- 快速验证某个 Web 应用的攻击面
- 在 CI/CD 中通过 CLI 手动集成(需要自己写 pipeline)
Shannon Pro 的适用场景
- 需要 SAST + SCA + Secrets + 业务逻辑安全的一体化 AppSec 平台
- 需要在自托管 Runner 中运行(源码和 LLM API 调用不离开客户网络)
- 需要对静态分析发现执行动态验证(静态-动态关联)
- 需要 GitHub PR 扫描和 CI/CD 原生集成
Shannon Pro 的核心差异化在于静态-动态关联:SAST 阶段发现的数据流漏洞(如未净化输入到达 SQL 查询)不会只作为理论风险报告,而是会被送入对应的 Exploitation 智能体,在运行中的应用上尝试真实攻击。确认的利用会追溯到具体的源码行号,给开发者"可证明可利用 + 精确修复位置"的两件事。
七、快速上手
环境要求
- Docker:容器运行时
- Node.js 18+:用于
npx模式 - pnpm:本地构建模式需要
- AI Provider:Anthropic API Key(推荐)或 AWS Bedrock / Google Vertex AI
npx 快速启动(推荐)
# 配置凭证(一次性设置向导)
npx @keygraph/shannon setup
# 或直接导出环境变量
export ANTHROPIC_API_KEY=your-api-key
# 启动渗透测试
npx @keygraph/shannon start -u https://your-app.com -r /path/to/your-repo本地构建模式
git clone https://github.com/KeygraphHQ/shannon.git
cd shannon
cat > .env << 'EOF'
ANTHROPIC_API_KEY=your-api-key
CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
EOF
pnpm install
pnpm build
./shannon start -u https://your-app.com -r /path/to/your-repo监控与输出
# 查看工作区日志
npx @keygraph/shannon logs <workspace>
# 查看状态
npx @keygraph/shannon status
# 打开 Temporal Web UI
open http://localhost:8233输出结构:
workspaces/{hostname}_{sessionId}/
├── session.json # 指标和会话数据
├── workflow.log # 人类可读的流程日志
├── agents/ # 各智能体执行日志
├── prompts/ # Prompt 快照(可复现性)
└── deliverables/
└── comprehensive_security_assessment_report.md # 最终报告注意事项
- 不要在生产环境运行:Shannon 会主动执行攻击,可能修改目标数据。隔离的 staging 或本地 VM 是唯一安全的运行环境。
- 完整测试耗时约 1-1.5 小时,Anthropic Claude 4.5 Sonnet 模型约花费 $50(取决于应用复杂度)
- Windows Defender 可能误报:报告中的漏洞利用代码会被标记为恶意软件,属于误报。在 Windows Defender 中为 Shannon 目录添加排除项,或使用 Docker/WSL2。
八、谁该用,谁可以等等
适合优先采用的团队:
- 有自己源码的 Web 应用,需要在 CI/CD 中嵌入自动化渗透测试
- 安全团队想用 AI 提升渗透测试频率,但不想放弃人工复核
- 开发团队想在上线前获得"带 PoC 的漏洞报告"而不是一堆理论风险
可以等等的场景:
- 团队没有源码访问权限(黑盒测试场景)
- 需要覆盖第三方库漏洞、CVE、配置类风险(目前需要 SAST/SCA 工具)
- 应用是纯移动端或桌面端(Shannon 面向 Web 应用和 API)
总结
Shannon 真正解决的不是"找漏洞",而是把渗透测试的验证闭环自动化。源码引导攻击策略、Playwright 执行真实利用、“无 PoC 不报告”——这三件事加在一起,让它比传统 DAST/SAST 更接近真实渗透测试的工作方式。
如果你有白盒测试场景、需要频繁的安全验证、想要带 PoC 的漏洞报告,Shannon 值得试试。如果需要更深入的 SAST、SCA 或业务逻辑安全测试,可以关注 Shannon Pro 的商业版本。
重要声明:Shannon 主动执行攻击,仅限用于你拥有明确授权的系统。未授权使用可能触犯计算机安全相关法律。