Shannon — Keygraph 开发的 AI Pentester
Shannon 是一款用于 Web 应用和 API 的自主白盒 AI 渗透测试工具。它分析您的源代码,识别攻击向量,并执行真实漏洞利用,以在漏洞到达生产环境之前证明其存在。
🎯 Shannon 是什么?
Shannon 是由 Keygraph 开发的 AI 渗透测试工具。它通过结合源代码分析与实时漏洞利用,对 Web 应用及其底层 API 进行白盒安全测试。
Shannon 分析您的 Web 应用的源代码,以识别潜在的攻击向量,然后使用浏览器自动化和命令行工具对运行中的应用程序及其 API 执行真实漏洞利用(注入攻击、身份验证绕过、SSRF、XSS)。最终报告中仅包含具有可工作概念验证的漏洞。
Shannon 存在的原因
得益于 Claude Code 和 Cursor 等工具,您的团队可以持续交付代码。但您的渗透测试呢?那通常一年才进行一次。这造成了一个巨大的安全差距。在其余的 364 天里,您可能在不经意间将漏洞交付到生产环境。
Shannon 通过提供可按需执行的自动化渗透测试来弥补这一差距,它可以针对每个构建或发布运行。
[!NOTE] Shannon 是 Keygraph 安全与合规平台的一部分
Keygraph 是一个集成的安全与合规平台,涵盖 IAM、MDM、合规自动化(SOC 2、HIPAA)和应用程序安全。Shannon 负责应用安全层。更广泛平台可自动化证据收集、审计准备和跨多个框架的持续合规。
🎬 Shannon 实际操作演示
Shannon 在 OWASP Juice Shop 中识别出 20 多个漏洞,包括身份验证绕过和数据库数据泄露。完整报告 →

✨ 功能特性
- 完全自主运行:一条命令即可启动完整渗透测试。Shannon 处理 2FA/TOTP 登录(包括 SSO)、浏览器导航、漏洞利用和报告生成,无需人工干预。
- 可复现的概念验证漏洞利用:最终报告中仅包含经过验证的可利用发现,附带可复制粘贴的概念验证。无法利用的漏洞不会被报告。
- OWASP 漏洞覆盖:识别和验证注入、XSS、SSRF 和身份验证/授权故障,开发中还有其他类别。
- 代码感知动态测试:分析源代码以指导攻击策略,然后使用实时浏览器和基于 CLI 的漏洞利用对运行中的应用程序进行验证。
- 集成安全工具:在侦察和发现阶段利用 Nmap、Subfinder、WhatWeb 和 Schemathesis。
- 并行处理:漏洞分析和漏洞利用阶段在所有攻击类别中并行运行。
📦 产品系列
Shannon 由 Keygraph 开发,提供两种版本:
| 版本 | 许可证 | 适合场景 |
|---|---|---|
| Shannon Lite | AGPL-3.0 | 本地测试您自己的应用程序。 |
| Shannon Pro | 商业许可 | 需要单一应用安全平台(SAST、SCA、密钥、业务逻辑测试、自主渗透测试)并具有 CI/CD 集成和自托管部署的组织。 |
此仓库包含 Shannon Lite,即核心自主 AI 渗透测试框架。Shannon Pro 是 Keygraph 的全功能应用安全平台,结合 SAST、SCA、密钥扫描、业务逻辑安全测试和自主 AI 渗透测试,在一个关联工作流中提供。每个发现都通过可工作的概念验证漏洞利用进行验证。
[!IMPORTANT] 仅限白盒。 Shannon Lite 专为**白盒(源代码可用)**应用程序安全测试设计。 它需要访问您的应用程序的源代码和仓库布局。
Shannon Pro:架构概述
Shannon Pro 是一个全功能应用安全平台,可以替代需要将单独的 SAST、SCA、密钥扫描和渗透测试工具组合在一起的需求。它作为两阶段管道运行:代码库的代理静态分析,然后是自主 AI 渗透测试。两个阶段的发现相互关联,因此每个报告的漏洞都具有可工作的概念验证漏洞利用和精确的源代码位置。
阶段 1:代理静态分析
Shannon Pro 将代码库转换为代码属性图 (CPG),结合抽象语法树 (AST)、控制流图和程序依赖图。然后它运行五种分析功能:
- 数据流分析 (SAST):识别数据源(用户输入、API 请求)和数据接收端(SQL 查询、命令执行),然后跟踪它们之间的路径。在每个节点上,LLM 评估所应用的具体清理是否足以针对特定上下文中的特定漏洞,而不是依赖硬编码的安全函数白名单。
- 单点问题检测 (SAST):基于 LLM 检测单点漏洞:弱加密、硬编码凭证、不安全配置、缺失安全标头、弱 RNG、禁用证书验证和过于宽松的 CORS。
- 业务逻辑安全测试 (SAST):LLM 代理分析代码库,以发现应用程序特定的不变量(例如,“文档访问必须验证组织所有权”),生成针对这些不变量的定向模糊器,并合成完整的概念验证漏洞利用。这可以捕获授权失败和特定领域逻辑错误,这些错误基于模式的扫描器无法检测到。
- SCA 与可达性分析:不仅标记 CVE,还通过 CPG 追踪漏洞函数是否实际上可以从应用程序入口点到达。无法到达的漏洞将降级优先级。
- 密钥检测:结合正则表达式模式匹配、基于 LLM 的检测(用于动态构建的凭证、自定义格式、混淆令牌)并对相应服务使用只读 API 调用进行实时验证。
阶段 2:自主动态渗透测试
与 Shannon Lite 相同的多代理渗透测试管道(侦察、并行漏洞分析、并行漏洞利用、报告),但增强了静态发现注入到漏洞利用队列中。静态发现映射到 Shannon 的五个攻击域(注入、XSS、SSRF、身份验证、授权),并且针对每个发现的运行应用程序执行真实的概念验证攻击。
静态-动态关联
这是核心差异化。在静态分析中发现的漏洞(例如,未清理的输入到达 SQL 查询)不会作为理论风险报告。它被传递给相应的漏洞利用代理,该代理尝试在运行的应用程序上利用它。确认的漏洞被追溯到确切的源代码位置,为开发人员提供漏洞可利用性的证明以及要修复的代码行。
部署模型
Shannon Pro 支持自托管运行器模型(类似于 GitHub Actions 自托管运行器)。数据平面(处理代码访问和所有 LLM API 调用)完全在客户的基础设施内运行,使用客户自己的 API 密钥。源代码永远不会离开客户的网络。Keygraph 控制平面处理作业编排、扫描调度和报告 UI,仅接收聚合发现。
| 功能 | Shannon Lite | Shannon Pro (全功能应用安全) |
|---|---|---|
| 许可证 | AGPL-3.0 | 商业许可 |
| 静态分析 | 代码审查提示 | 全功能代理 SAST、SCA、密钥、业务逻辑测试 |
| 动态测试 | 自主 AI 渗透测试 | 自主 AI 渗透测试与静态-动态关联 |
| 分析引擎 | 代码审查提示 | 基于 CPG 的数据流,每个节点使用 LLM 进行推理 |
| 业务逻辑 | 无 | 自动化不变量发现、模糊器生成、漏洞利用合成 |
| CI/CD 集成 | 手动 / CLI | 本地 CI/CD,GitHub PR 扫描 |
| 部署 | CLI | 管理云或自托管运行器 |
| 边界分析 | 无 | 自动服务边界检测和团队路由 |
📑 目录
🚀 设置与使用说明
前提条件
- Docker - 容器运行时 (安装 Docker)
- AI 提供者凭证(选择一个):
- Anthropic API 密钥(推荐)- 从 Anthropic 控制台 获取
- Claude Code OAuth 令牌
- AWS Bedrock - 使用 AWS 凭证通过 Amazon Bedrock 路由(见 AWS Bedrock)
- Google Vertex AI - 通过 Google Cloud Vertex AI 路由(见 Google Vertex AI)
- [实验性 - 不支持] 路由模式(替代提供者) - 通过 OpenRouter 的 OpenAI 或 Google Gemini(见 路由模式)
快速入门
# 1. 克隆 Shannon
git clone https://github.com/KeygraphHQ/shannon.git
cd shannon
# 2. 配置凭证(选择一种方法)
# 选项 A:导出环境变量
export ANTHROPIC_API_KEY="your-api-key" # 或 CLAUDE_CODE_OAUTH_TOKEN
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000 # 推荐
# 选项 B:创建 .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=your-repo
Shannon 将构建容器,启动工作流,并返回一个工作流 ID。渗透测试在后台运行。
监控进度
# 查看实时工作器日志
./shannon logs
# 查询特定工作流的进度
./shannon query ID=shannon-1234567890
# 打开 Temporal Web UI 进行详细监控
open http://localhost:8233
停止 Shannon
# 停止所有容器(保留工作流数据)
./shannon stop
# 完全清理(删除所有数据)
./shannon stop CLEAN=true
使用示例
# 基本渗透测试
./shannon start URL=https://example.com REPO=repo-name
# 使用配置文件
./shannon start URL=https://example.com REPO=repo-name CONFIG=./configs/my-config.yaml
# 自定义输出目录
./shannon start URL=https://example.com REPO=repo-name OUTPUT=./my-reports
# 命名工作区
./shannon start URL=https://example.com REPO=repo-name WORKSPACE=q1-audit
# 列出所有工作区
./shannon workspaces
工作区与恢复
Shannon 支持 工作区,允许您在不重新运行已完成的代理的情况下恢复中断或失败的运行。
工作原理:
- 每个运行都会在
audit-logs/中创建一个工作区(默认自动命名,例如example-com_shannon-1771007534808) - 使用
WORKSPACE=<name>为您的运行指定一个自定义名称以便于参考 - 要恢复任何运行,请通过
WORKSPACE=传递其工作区名称——Shannon 会检测哪些代理已成功完成并从它离开的地方继续 - 每个代理的进度通过 git 提交进行检查点,因此恢复运行将从干净、已验证的状态开始
# 使用命名工作区启动
./shannon start URL=https://example.com REPO=repo-name WORKSPACE=my-audit
# 恢复相同的工作区(跳过已完成的代理)
./shannon start URL=https://example.com REPO=repo-name WORKSPACE=my-audit
# 恢复自动命名的先前运行的工作区
./shannon start URL=https://example.com REPO=repo-name WORKSPACE=example-com_shannon-1771007534808
# 列出所有工作区及其状态
./shannon workspaces
[!NOTE] 恢复时
URL必须与原始工作区 URL 匹配。Shannon 会拒绝不匹配的 URL 以防止跨目标污染。
准备您的仓库
Shannon 预期目标仓库放置在项目根目录下的 ./repos/ 文件夹中。REPO 标志是指 ./repos/ 内的一个文件夹名称。将您要扫描的仓库复制到 ./repos/,或直接克隆到那里:
git clone https://github.com/your-org/your-repo.git ./repos/your-repo
对于单体仓库:
git clone https://github.com/your-org/your-monorepo.git ./repos/your-monorepo
对于多仓库应用程序(例如,前端/后端分离):
mkdir ./repos/your-app
cd ./repos/your-app
git clone https://github.com/your-org/frontend.git
git clone https://github.com/your-org/backend.git
git clone https://github.com/your-org/api.git
平台特定说明
对于 Windows:
原生(Git Bash):
安装 Git for Windows 并使用 Docker Desktop 安装后从 Git Bash 运行 Shannon。
WSL2(推荐):
步骤 1:确保 WSL 2
wsl --install
wsl --set-default-version 2
# 查看已安装的发行版
wsl --list --verbose
# 如果您没有发行版,请安装一个(推荐 Ubuntu 24.04)
wsl --list --online
wsl --install Ubuntu-24.04
# 如果您的发行版显示版本为 1,请将其转换为 WSL 2:
wsl --set-version <distro-name> 2
有关 WSL 基本命令 的参考。
步骤 2:在 Windows 上安装 Docker Desktop 并在 设置 > 一般 > 使用 WSL 2 基于引擎 下启用。
步骤 3:在 WSL 中克隆并运行 Shannon。 在 PowerShell 或 CMD 中输入 wsl -d <distro-name> 并按 Enter 打开 WSL 终端。
# 在 WSL 终端中
git clone https://github.com/KeygraphHQ/shannon.git
cd shannon
cp .env.example .env # 编辑您的 API 密钥
./shannon start URL=https://your-app.com REPO=your-repo
要访问 Temporal Web UI,请在 WSL 中运行 ip addr 找到您的 WSL IP 地址,然后在 Windows 浏览器中导航到 http://<wsl-ip>:8233。
Windows Defender 可能会标记报告中包含的利用代码为误报。这些是误报,因为报告中包含利用代码。在 Windows Defender 中为 Shannon 目录添加排除项,或使用 Docker/WSL2。
[实验性 - 不支持] 路由模式(替代提供者)
Shannon 可以通过 claude-code-router 实验性路由请求通过替代 AI 提供者。此模式不提供官方支持,主要用于:
- 模型实验 — 使用 GPT-5.2 或 Gemini 3 系列模型测试 Shannon
快速设置
- 将您的提供者 API 密钥添加到
.env:
# 选择一个提供者:
OPENAI_API_KEY=sk-...
# 或
OPENROUTER_API_KEY=sk-or-...
# 设置默认模型:
ROUTER_DEFAULT=openai,gpt-5.2 # 提供者,模型格式
- 使用
ROUTER=true运行:
./shannon start URL=https://example.com REPO=repo-name ROUTER=true
实验性模型
| 提供者 | 模型 |
|---|---|
| OpenAI | gpt-5.2, gpt-5-mini |
| OpenRouter | google/gemini-3-flash-preview |
免责声明
此功能是实验性的且不受支持。输出质量严重依赖于模型。Shannon 基于 Anthropic Agent SDK 构建,主要针对 Anthropic Claude 模型进行优化和测试。替代提供者可能会产生不一致的结果(包括失败早期阶段如侦察),具体取决于模型和路由设置。
输出与结果
所有结果默认保存到 ./audit-logs/{hostname}_{sessionId}/。使用 --output <path> 指定自定义目录。
输出结构:
audit-logs/{hostname}_{sessionId}/
├── session.json # 指标和会话数据
├── agents/ # 每个代理的执行日志
├── prompts/ # 用于可重复性的提示快照
└── deliverables/
└── comprehensive_security_assessment_report.md # 最终综合安全报告
📊 样本报告
来自行业标准易受攻击应用程序的渗透测试样本报告:
🧃 OWASP Juice Shop • GitHub
一个以 OWASP 维护的以安全闻名的 Web 应用程序,旨在测试工具发现现代漏洞的能力。
结果: 在一次自动运行中识别出 20 多个针对 OWASP 类别的漏洞。
值得注意的发现:
- 身份验证绕过和完整用户数据库数据泄露通过 SQL 注入
- 通过注册工作流绕过提升为管理员权限
- IDOR 漏洞允许访问其他用户的数据和购物车
- SSRF 启用内部网络侦察
📄 查看完整报告 →
🔗 c{api}tal API • GitHub
Checkmarx 提供的一个故意易受攻击的 API,旨在测试工具发现 OWASP API 安全十大风险。
结果: 识别出大约 15 个严重和关键级别的漏洞。
值得注意的发现:
- 通过 denylist 绕过在隐藏的调试端点中的根级命令注入
- 通过遗留且未修补的 v1 API 端点进行身份验证绕过
- 通过用户配置文件更新函数中的 Mass Assignment 提权
- XSS 没有误报(正确确认了强大的 XSS 防御)
📄 查看完整报告 →
🚗 OWASP crAPI • GitHub
OWASP 提供的一个现代的故意易受攻击的 API,旨在测试工具对 OWASP API 安全十大风险的有效性。
结果: 识别出超过 15 个严重和关键级别的漏洞。
值得注意的发现:
- 通过 JWT 攻击(算法混淆、alg:none、弱密钥注入)进行身份验证绕过
- 完整 PostgreSQL 数据库通过注入被攻破,窃取用户凭证
- SSRF 攻击转发内部认证令牌到外部服务
- XSS 没有误报(正确识别了强大的 XSS 防御)
📄 查看完整报告 →
📈 基准测试
Shannon Lite 在 hint-free、源感知的 XBOW 安全基准测试中得分 96.15% (100/104 攻击)。
🏗️ 架构
Shannon 使用多代理架构,结合白盒源代码分析与动态漏洞利用,分为四个阶段:
┌──────────────────────┐
│ 侦察 │
└──────────┬───────────┘
│
▼
┌──────────┴───────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 漏洞分析 │ │ 漏洞分析 │ │ ... │
│ (注入) │ │ (XSS) │ │ │
└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 漏洞利用 │ │ 漏洞利用 │ │ ... │
│ (注入) │ │ (XSS) │ │ │
└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘
│ │ │
└─────────┬───────────────────┘
│
▼
┌──────────────────────┐
│ 报告 │
└──────────────────────┘
架构概述
Shannon 使用 Anthropic 的 Claude Agent SDK 作为其推理引擎,采用多代理架构。该系统结合白盒源代码分析与黑盒动态漏洞利用,由协调器跨四个阶段管理。架构设计为通过“无漏洞利用,无报告”策略实现最小化误报。
阶段 1:侦察
第一阶段构建了应用程序攻击面的完整地图。Shannon 分析源代码,并使用 Nmap 和 Subfinder 等工具集成,以了解技术堆栈和基础设施。同时,它通过浏览器自动化执行实时应用程序探索,将代码级见解与真实行为相关联,为下一阶段生成所有入口点、API 端点和身份验证机制的详细地图。
阶段 2:漏洞分析
为了最大化效率,此阶段并行运行。使用侦察数据,针对每个 OWASP 类别的代理并行搜索潜在缺陷。对于注入和 SSRF 等漏洞,代理执行结构化数据流分析,跟踪用户输入到危险接收端点的路径。此阶段生成一个关键交付物:假设可利用路径列表,然后将其传递给验证。
阶段 3:漏洞利用
继续并行工作以保持速度,此阶段完全用于将假设转化为实际漏洞利用。专用的漏洞利用代理接收假设路径,并使用浏览器自动化、命令行工具和自定义脚本对运行的应用程序及其 API 执行真实漏洞利用(注入攻击、身份验证绕过、SSRF、XSS)。此阶段强制执行严格的 “无漏洞利用,无报告” 策略:如果假设无法成功利用以证明影响,则将其作为误报丢弃。
阶段 4:报告
最终阶段将所有验证发现汇总成一个专业的、可操作的报告。代理汇总侦察数据并执行清理,删除任何噪声或幻觉工件。最终报告中仅包含验证的漏洞,附带可复制粘贴的概念验证,专注于交付仅包含已验证风险的最终渗透测试报告。
📋 覆盖范围与路线图
有关 Shannon 安全测试覆盖范围和开发路线图的详细信息,请参阅我们的 覆盖范围与路线图 文档。
⚠️ 免责声明
重要使用指南与免责声明
在使用 Shannon (Lite) 之前,请仔细阅读以下指南。作为用户,您需对自己的行为负责并承担所有责任。
1. 潜在的突变效应与环境选择
这不是一个被动扫描器。漏洞利用代理旨在主动执行攻击以验证漏洞。此过程可能对目标应用程序及其数据产生突变效应。
[!WARNING] ⚠️ 不要在生产环境中运行 Shannon。
- 它专用于在沙盒、暂存或本地开发环境中运行,在这些环境中数据完整性不是问题。
- 潜在突变效应包括但不限于:创建新用户、修改或删除数据、损害测试帐户、触发注入攻击的意外副作用。
2. 法律与道德使用
Shannon 仅设计用于合法的安全审计目的。
[!CAUTION] 在运行 Shannon 之前,您必须获得目标系统的明确书面授权
未经授权扫描和利用您不拥有的系统是非法的,可能受到法律制裁,例如计算机欺诈和滥用法 (CFAA)。Keygraph 不对 Shannon 的任何滥用负责。
3. LLM 与自动化注意事项
- 验证是必需的: 尽管在“通过漏洞利用验证”方法上投入了大量工程工作以消除误报,但底层的 LLM 仍然可能生成幻觉或支持不足的内容。最终报告中所有报告的发现都需要人工监督以验证其真实性和严重性。
- 全面性: Shannon Lite 中的分析可能由于 LLM 上下文窗口的固有限制而不够全面。对于您整个代码库的更全面、基于图的分析,Shannon Pro 利用其先进的数据流分析引擎确保更深入和彻底的覆盖范围。
4. 分析范围
- 针对漏洞的分析: Shannon Lite 的当前版本专门针对以下可利用漏洞类别:
- 身份验证/授权故障
- 注入
- 跨站脚本 (XSS)
- 服务器端请求伪造 (SSRF)
- Shannon Lite 不涵盖的内容: 此列表并非所有潜在安全风险的详尽列表。Shannon Lite 的“通过漏洞利用验证”模型意味着它不会报告它无法主动利用的漏洞,例如易受攻击的第三方库或配置不安全。这些类型的深度静态分析发现是 Shannon Pro 的核心分析引擎的重点。
5. 成本与性能
- 时间: 在当前版本中,完整测试运行通常需要 1 到 1.5 小时 才能完成。
- 成本: 使用 Anthropic Claude 4.5 Sonnet 模型运行完整测试可能产生约 $50 美元 的成本。成本因模型定价和应用程序复杂性而异。
6. Windows 防病毒误报
Windows Defender 可能会标记 xben-benchmark-results/ 或 deliverables/ 中的文件为恶意软件。这些是误报,因为报告中包含利用代码。在 Windows Defender 中为 Shannon 目录添加排除项,或使用 Docker/WSL2。
7. 安全注意事项
Shannon Lite 设计用于测试您拥有或获得明确授权测试的应用程序。不要将它指向不受信任或对抗性代码库。像任何读取源代码的 AI 驱动的工具一样,Shannon Lite 对内容库中的提示注入易受攻击。
📜 许可证
Shannon Lite 发布在 GNU Affero General Public License v3.0 (AGPL-3.0) 许可证下。
Shannon 是开源的 (AGPL v3)。此许可证允许您:
- 自由用于所有内部安全测试。
- 私密修改代码用于内部使用,无需共享您的更改。
AGPL 的共享要求主要适用于将 Shannon 作为公共或托管服务(例如 SaaS 平台)提供的组织。在这些特定情况下,对核心软件的任何修改都必须开源。
👥 社区与支持
社区资源
📅 1:1 办公时间 — 星期四,两个时区 预订免费的 15 分钟会话,获得有关 bug、部署或配置问题的动手帮助。 → 美国/欧洲:上午 10:00 PT | 亚洲:下午 2:00 IST → 预订时段
💬 加入我们的 Discord 提问、分享反馈并与其他 Shannon 用户建立联系。
贡献:目前我们不接受外部代码贡献 (PRs)。
问题欢迎报告 bug 和功能请求。
- 🐛 报告 bug via GitHub Issues
- 💡 建议功能 in Discussions
保持联系
- 🐦 Twitter: @KeygraphHQ
- 💼 LinkedIn: Keygraph
- 🌐 网站: keygraph.io
💬 联系我们
Shannon Pro
Shannon Pro 是 Keygraph 的全功能应用安全平台。对于需要统一 SAST、SCA、密钥、业务逻辑测试和自主 AI 渗透测试并具有 CI/CD 集成和自托管部署的组织,请参阅 Shannon Pro 技术概述。
📧 电子邮件: shannon@keygraph.io