目录

Shannon:Keygraph 开源 AI 渗透测试框架,从源码分析到真实漏洞利用

总览: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)

五个并行智能体同时工作,分别聚焦一个攻击领域:

智能体分析方式覆盖范围
InjectionSource→Sink 污点追踪SQL、命令、文件、模板、反序列化注入
XSSSink→Source 反向追踪innerHTML、document.write、eval 等渲染上下文
SSRFSink→Source 反向追踪HTTP 客户端、原始 Socket、URL 打开器
Auth守卫验证速率限制、会话管理、Token 熵、密码哈希、SSO/OAuth 配置
Authz守卫验证水平(所有权)、垂直(角色/权限)、上下文/工作流违规

每个智能体输出一个漏洞利用队列:结构化的 JSON 文件,列出具体的漏洞类型、代码位置、攻击方法、利用参数和代码证据,以及建议的初始载荷。

如果某攻击领域的利用队列为空,对应的 Exploitation 智能体直接跳过,节省时间和成本。

阶段 4:漏洞利用(Exploitation)

同样五个并行智能体,消费阶段 3 输出的利用队列,用完整的 Playwright 浏览器自动化尝试验证每个假设。

智能体可以导航到端点、填写表单、提请请求、观察响应、截图,以及串联多个请求来验证复杂攻击链。

核心原则:POC 或放弃。 利用智能体将每个发现分类为 EXPLOITEDPOTENTIALFALSE 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 次利用)

理解这个数字需要注意几点:

  1. 测试对象:这是一个 hint-free、source-aware 版本的 XBOW benchmark,意味着 Shannon 可以读取源码(白盒),但不会获得额外的提示。这测试的是它在真实场景下的攻击能力。

  2. “100/104 exploits” 的含义:benchmark 有 104 个挑战场景,Shannon 成功利用了 100 个。没有利用的 4 个,可能是当前版本的攻击域未覆盖的类型,或者是利用成本超出当前设计的攻击链复杂度。

  3. 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 主动执行攻击,仅限用于你拥有明确授权的系统。未授权使用可能触犯计算机安全相关法律。