在应用安全领域,传统渗透测试面临人工成本高、频率低的困境 —— 大多数团队每年仅能承担一次全面审计,而日常开发中引入的漏洞往往在生产环境才被发现。Shannon 是 Keygraph 团队开源的自主白盒 AI 渗透测试框架,旨在通过源码分析与动态利用的深度结合,实现按需自动化漏洞发现与验证。本文从架构设计、源码分析引擎、攻击向量识别与实时漏洞验证四个维度进行技术解析,并给出关键配置参数与工程实践建议。

多阶段 Agent 编排架构

Shannon 采用五阶段流水线架构,每一阶段由专门的 AI Agent 负责,通过 Temporal 工作流引擎进行任务编排与状态管理。整个系统基于 Anthropic 的 Claude Agent SDK 构建,利用大语言模型的推理能力实现自主决策。

第一阶段:预侦察(Pre-Reconnaissance)。该阶段并行执行两项任务:外部基础设施指纹识别使用 nmap、subfinder、WhatWeb 等工具扫描目标服务,识别技术栈、开放端口与子域名;同时对源码进行初步扫描,定位应用框架类型、入口文件与路由定义。这一阶段的产出是目标应用的初步攻击面概览,包括技术组件列表与代码结构摘要。

第二阶段:侦察(Reconnaissance)。基于预侦察结果,Shannon 通过浏览器自动化(Puppeteer/Playwright)对运行中的应用进行动态探索,将代码级发现与实际运行时行为进行关联。Agent 会模拟用户操作路径,遍历主要功能流程,记录认证机制、API 端点与数据流向。该阶段输出详细的攻击面地图,标注所有可测试的入口点。

第三阶段:漏洞分析(Vulnerability Analysis)。这是框架的核心效率来源 —— 五个并行 Agent 分别针对 Injection、XSS、SSRF、认证(Auth)、授权(Authz)五个 OWASP 类别进行定向分析。每个 Agent 接收侦察阶段产生的攻击面数据,执行结构化数据流分析,追踪用户输入从入口点到危险 sink 的完整路径。分析结果不以漏洞报告形式输出,而是生成可利用路径假设列表,传递给下一阶段进行验证。

第四阶段:利用(Exploitation)。利用 Agent 接收漏洞分析阶段产出的假设路径,通过浏览器自动化、命令行工具与自定义脚本尝试真实攻击。该阶段严格遵循「无利用即无报告」原则 —— 如果某个假设路径无法被实际利用并证明影响,则直接丢弃,不进入最终报告。这一机制从根本上降低了误报率。

第五阶段:报告(Reporting)。汇总所有成功利用的漏洞证据,生成包含可复制 PoC 的专业渗透测试报告。报告仅包含经过实战验证的发现,每个漏洞均附带完整的利用步骤与影响说明。

关键工程参数:默认配置下漏洞分析阶段支持 5 个并发管道max_concurrent_pipelines: 5),可通过配置文件调整以平衡扫描速度与 API 速率限制。一次完整扫描的典型耗时为 1 至 1.5 小时,使用 Claude 4.5 Sonnet 模型的成本约为 50 美元

源码分析引擎与数据流追踪

Shannon 的源码分析采用白盒视角,直接读取目标仓库的源代码来指导攻击策略制定。与传统 SAST 工具依赖规则匹配不同,Shannon 利用 LLM 的上下文理解能力进行语义分析。

在漏洞分析阶段,Agent 首先构建目标代码的静态视图。对于每个识别的用户输入源(如请求参数、HTTP Header、Cookie),Agent 会追踪数据在代码中的传播路径,检查是否未经适当过滤即到达危险操作。关键在于,Shannon 不仅检查是否存在过滤代码,还会评估所使用过滤机制的有效性 —— 同一个过滤函数在不同的漏洞类型与数据上下文中可能表现出不同的安全强度,这需要语义理解而非简单模式匹配。

对于 Injection 类漏洞,分析引擎会识别所有数据库查询、命令执行与文件操作语句,检查其参数是否来源于用户可控输入。SSRF 分析则追踪 HTTP 请求的目标 URL 是否可被用户操纵。XSS 分析关注输出点的上下文(HTML 标签内、JavaScript 字符串内、属性值中),评估现有过滤或转义是否充分。

Shannon Pro 进一步引入了 Code Property Graph(CPG) 概念,将抽象语法树(AST)、控制流图(CFG)与程序依赖图(PDG)进行融合,构建代码的完整知识图谱。在此基础上执行数据流分析时,CPG 使得分析引擎能够以图遍历方式高效追踪跨函数、跨文件的污点传播,显著提升分析精度与覆盖率。

攻击向量识别策略

Shannon 的攻击向量识别采用「假设 - 验证」模式,这与传统扫描器的「规则匹配 - 报告」模式有本质区别。Agent 在分析阶段生成的攻击向量假设基于以下策略:

输入源枚举。Agent 从源码与运行时行为中识别所有用户可控的输入点,包括但不限于:URL 路径参数、查询字符串、POST/JSON 请求体、HTTP Header、Cookie、文件上传内容。在代码分析过程中,Agent 会追踪这些输入在业务逻辑中的使用方式,识别可能的处理缺陷。

上下文感知过滤评估。对于每个潜在的数据流路径,Agent 评估当前代码中存在的过滤与净化机制。关键区别在于,Shannon 会判断过滤是否针对具体的攻击场景 —— 例如,HTML 转义对 XSS 有效但对 SQL 注入无效,参数化查询能防御 SQL 注入但无法防止命令注入。Agent 根据输入类型、目标操作与上下文环境综合判断是否存在可绕过的过滤缺陷。

业务逻辑弱点识别。Shannon 特别关注业务逻辑层面的安全缺陷,如 IDOR(不安全的直接对象引用)、权限提升、越权访问等。这类漏洞无法通过通用规则检测,需要理解业务语义。Agent 在侦察阶段已经遍历了应用的业务流程,在漏洞分析阶段会针对性地检查:资源访问是否验证了所有权、敏感操作是否检查了用户权限、状态变更是否可被滥用。

认证与授权机制审计。认证类漏洞包括会话管理缺陷、密码重置逻辑问题、JWT 实现缺陷等。Agent 通过分析认证流程代码与运行时行为,识别身份验证的薄弱环节。授权类漏洞则关注访问控制是否在每个敏感端点得到正确执行。

实时漏洞验证架构

漏洞验证是 Shannon 区别于静态分析工具的核心环节。该阶段不仅验证漏洞是否存在,还尝试实际利用以证明真实影响。

浏览器自动化利用。对于 XSS、CSRF、需要认证的端点等场景,Shannon 使用无头浏览器模拟真实用户操作。Agent 能够执行复杂的登录流程,包括表单提交、会话 cookie 管理,甚至 TOTP 双因素认证(通过配置 totp_secret 参数)。这种自动化能力使框架可以在完整认证保护下测试内部功能。

命令行工具与脚本利用。对于 Injection、SSRF 等漏洞,Agent 调用系统工具与自定义脚本构造攻击载荷。例如,SQL 注入测试会尝试 UNION 查询、数据提取与写入操作;SSRF 测试会构造指向内部服务(127.0.0.1169.254.169.254)的请求并验证响应。

PoC 可复现性保障。所有成功利用的漏洞都会附带完整的攻击复现步骤。这些步骤可以直接复制到其他测试环境中验证,确保报告中的发现真实可信而非理论推断。

静态 - 动态关联(Shannon Pro 特性)。在 Pro 版本中,静态分析发现的漏洞会被注入到动态利用队列。分析引擎首先通过 CPG 数据流分析识别潜在漏洞,然后将其映射到五个攻击域,由对应的利用 Agent 尝试实际攻击。成功利用的漏洞可以追溯到具体的源码位置与行号,实现漏洞定位与修复指导的一体化。

关键配置参数与工程实践

基于 Shannon 的架构设计,以下参数与实践建议可在实际部署中优化扫描效果:

并发控制。默认 5 个并发管道适用于大多数场景。若遇到 API 速率限制(Anthropic 订阅计划基于 5 小时滚动窗口),可调整 max_concurrent_pipelines: 2 降低并发,并配置 pipeline.retry_preset: subscription 将最大重试间隔延长至 6 小时、重试次数提升至 100 次。

认证配置。对于需要认证的测试目标,在配置文件中定义 authentication 块:指定 login_type: form、登录 URL、credentials(含 totp_secret 用于 2FA 场景),以及 login_flow 步骤描述。Shannon 支持登录成功条件判断(URL 包含特定路径或页面元素存在),确保认证流程完成后才开始漏洞测试。

目标聚焦与排除。通过 rules.focusrules.avoid 参数可以指导 Agent 优先测试特定路径或跳过无关区域。例如,聚焦 API 端点测试可设置 type: pathurl_path: /api;排除登出功能可设置 type: pathurl_path: /logout

工作空间管理。Shannon 支持工作空间(workspace)机制,每次扫描创建独立的工作目录存储中间结果与最终报告。使用 -w <name> 命名工作空间可便于后续恢复与对比。扫描中断后可使用相同工作空间名称恢复,Agent 会跳过已完成的阶段。

环境隔离要求。由于利用阶段会执行真实攻击(可能修改数据、创建测试账户),禁止在生产环境运行。官方推荐使用沙箱、预发布环境或本地开发环境。Docker 容器化部署确保了测试环境隔离,容器内运行扫描而非直接操作宿主机。

总结

Shannon 通过五阶段 Agent 流水线、源码语义分析与实时利用验证的深度结合,重新定义了自动化渗透测试的能力边界。其「无利用即无报告」策略有效降低了误报率,平行管道设计提升了扫描效率,而浏览器自动化与 TOTP 支持则扩展了可测试场景的覆盖面。对于追求持续安全验证的开发团队,Shannon 提供了一种介于静态扫描与人工渗透测试之间的工程化方案,尤其适合在每次构建或发布前执行自动化安全检查。

资料来源:Shannon 官方 GitHub 仓库(KeygraphHQ/shannon)