Shannon 拆解:一个「打不穿就不写报告」的 AI 渗透测试 Agent
一、速览:值不值得你花时间
推荐指数:★★★★☆(4 / 5)
给到这个分数的理由:它是目前把「利用验证」做进主流程、且工程完成度相当高的开源 AI 渗透 Agent —— 分析源码 → 找攻击面 → 真打一遍 → 只留打穿的。这一步过滤掉了绝大多数 AI 安全工具最烦人的问题:一堆看着像漏洞、实际打不动的噪声。
扣掉的一颗星在两个地方:一是 AGPL-3.0(不是 Apache-2.0,后面单独说,这条对企业很关键);二是它会真的改目标系统状态,只能打 staging,而且每次跑都要烧模型 token,成本得自己掂量。
关键数据(截至 2026-09-19)
| 项 | 值 |
|---|---|
| 语言 | TypeScript |
| Star / Fork | 48,143 / 5,522 |
| 许可证 | AGPL-3.0(可自用可改,对外提供服务需开源改动) |
| 活跃度 | 最近提交 2026-09-08(11 天前);Open Issues 20 |
| 首次发布 | 2025-09(约一年涨到 4.8 万 star,是今年增速最猛的安全项目之一) |
| 官方标签 | ai-penetration-testing、appsec、owasp、sarif、devsecops、red-teaming |
适合谁
| 人群 | 匹配度 | 说明 |
|---|---|---|
| 红队 / 渗透工程师 | ★★★★☆ | PoC 是真的,省掉大量「疑似漏洞」的复现时间;但 mutative 特性决定了只能打 staging |
| AI 安全研究员 | ★★★★☆ | 「代码分析候选 + 利用验证」的双流结构,是很合适的评测与研究对象,SARIF 输出便于量化 |
| 企业安全运营 | ★★★☆☆ | CI/CD 门禁 + SARIF 接代码扫描很顺,但 AGPL 合规、staging 环境和授权流程是前置条件 |
| CTF 选手 | ★☆☆☆☆ | 面向 Web 应用 / API 的 OWASP 类问题,不是 CTF 工具箱 |
| 个人 / 独立开发 | ★★★★☆ | npx 一条命令就能打自己的项目,门槛只在 Docker 和一点 API 费用 |
一句话判断:它服务的是「有 staging 环境、想要可复现结论的人」,不是「想要一键合规报告的人」。
二次开发
允许吗?能改,但要看你怎么用。 AGPL-3.0 不同于 Apache-2.0:自己内部用、自己改、自己托管都没问题;一旦你把它包装成对外提供的服务(SaaS、托管扫描平台),网络交互就会触发 AGPL 的源码提供义务 —— 你的改动也得开源。这条直接决定了它能不能进商业产品的分发链路。
难不难?分层看:
| 改动层级 | 难度 | 说明 |
|---|---|---|
| 调规则与范围(rules of engagement、认证 / TOTP / 登录流) | ★☆☆☆☆ | 配置文件为主,不用碰代码 |
| 接 CI/CD | ★★☆☆☆ | 官方 GitHub Action / GitLab 组件,配 fail-on-severity 即可 |
| 换模型 / 接网关 | ★★☆☆☆ | 支持自定义 base URL 和自定义模型配置,可指向代理或本地 Ollama、vLLM、LM Studio |
| 改 Agent 内核 | ★★★★☆ | TypeScript + 自研 harness,要吃透多阶段编排 |
二、先说它是什么,不是什么
它的官方一句话定位:autonomous AI pentester for web applications and APIs——面向 Web 应用和 API 的自主渗透测试 Agent。
跟常见工具的区别:
- 扫描器(nuclei、zap):规则匹配 → 报「可能存在」→ 人工复现
- 评估派 AI 工具(Garak 等):拿探针打模型,产出是分数
- Shannon:读你的源码 → 推攻击路径 → 对正在运行的应用真打一遍 → 只把打穿的写进报告
README 里那句口号就是它的产品哲学:No exploit, no report. 没有可复现的 PoC,就不算发现。
这个取舍很有意思:它必然漏报(模型没想到、或者想到了但没打成的漏洞,都不会出现在报告里),换来的是极低的误报。对「报告能不能直接交给研发去修」这件事,后者通常更值钱。
项目名来自 Claude Shannon(信息论之父)。作者给的理由挺贴切:渗透测试本质是个信息问题,每一次探测都在降低对系统状态的不确定性。
三、架构:两条候选流,一次裁决
1 | 源码 ──┬──► ① 侦察 + 漏洞分析(对着跑起来的应用) |
六个阶段:
- 侦察与漏洞分析:探索运行中的应用,把运行时行为跟源码对上,按注入、XSS、SSRF、认证、授权五类分派专门的 Agent
- Agentic 安全代码分析:先画架构图 —— 信任边界、暴露接口、依赖、数据流、高风险资产,再对重点区域开定向调查
- 候选归并:两条流的结果合并、去重,编成利用队列
- 利用 Agent:对运行中的目标尝试真实 PoC
- 验证:打不出来的全部丢掉
- 报告:PDF + Markdown 带证据,另有 JSON 和 SARIF 给下游系统
只有状态为 exploited 的发现才计入 CI/CD 的严重度门禁 —— 代码分析的「假设」不会让流水线挂掉。这个设计很关键,否则 AI 的猜测会天天卡住发布。
每次扫描跑在一次性的 Docker 容器里,工作区隔离,目标仓库以只读方式挂载进去。
四、Shannon 3.0 带来了什么
README 顶部挂着 3.0 的公告,几条实打实的升级:
- 更深的安全代码分析
- 发现结果经过更严格的复核
- 重写的 CLI
- 原生 CI/CD(GitHub Action / GitLab CI 组件)
- 专业的 PDF 报告
- SARIF(exploit 模式默认开启)
SARIF 这点值得单独说:有了它,Shannon 的发现可以直接进 GitHub code scanning,跟其他扫描器结果放在同一个视图里看,不用再维护一套单独的看板。
五、上手
前置条件:Docker(worker 容器)、Node.js 18+、模型 API key(Anthropic / OpenAI / xAI / AWS Bedrock,或本地模型)。
1 | # 交互式配置凭证 |
它会拉起 worker 镜像、启动本地基础设施、把目标仓库只读挂进临时容器,结果写进本地工作区。工作区可恢复 —— 扫描中断后能从断点接着跑,不重复已完成的工作。
接 CI:
1 | - name: Run Shannon |
要求私有仓库、带 Docker 和 Docker Compose v2 的 runner、能从 runner 访问到目标环境。
一个便利细节:它支持 OpenAI Codex(ChatGPT Plus/Pro)和 xAI 订阅的登录方式,不想烧 API 额度的话可以走订阅。Claude Code 订阅则只有 1.9.0 及更早版本支持(那是最后一个基于 Claude Agent SDK 构建的发布)。
六、效果怎么评估
作者在仓库里放了一份 benchmark:拿 Photoview 2.4.0(Doyensec 对比 Aikido 和 XBOW 时用的同一个应用、同一个版本)跑了一遍,三种模型的报告(DeepSeek v4 Flash / Grok 4.6 / Claude Opus 5)的 PDF 和 SARIF 都公开在仓库里,方法论和局限也写在配套的文档里。
我的建议是别只看 star 数,去翻那份 SARIF:
- 看它报了什么类别(是不是集中在注入 / 越权这类它覆盖得好的面)
- 看证据链是否完整(请求、响应、复现步骤)
- 换你自己的项目跑一遍,对比人工渗透的结果,才能知道它在你的技术栈上有多少召回
star 数高说明社区热度,不等于在你的场景里好用。
七、边界与风险(这几条别跳过)
1. 它真的会改目标系统。 利用 Agent 会创建用户、提交表单、改变应用状态、触发对外请求。只在 sandbox / staging / 本地开发环境里跑,数据用一次性的。 别指向生产。
2. 授权是硬前提。 只打你自己拥有或已有明确书面授权的系统。这条不是免责话术 —— 它是主动发起攻击的工具,法律边界比被动扫描器严得多。
3. AGPL-3.0 的合规边界。 内部自用没问题,做成对外服务就要开源你的改动。企业引入前先过一遍法务。
4. 报告仍需人工复核。 README 自己就写明:LLM 生成的报告可能包含证据薄弱或错误的细节。别把 PoC 通过当成结论。
5. 模型能力决定上限。 模型不遵循指令时,扫描质量会明显下降;不同 provider 的表现差得挺多。
6. 覆盖有边界。 当前聚焦 OWASP 类可 exploited 的问题(注入、XSS、SSRF、失效认证、失效授权)。开源版定位是「日常开发和 CI 里的快速代码驱动渗透」,穷尽式的 agentic SAST、更宽的扫描覆盖、集中式治理和全生命周期漏洞管理,作者放在了商业版 Keygraph Platform 里。
八、一句话结论
Shannon 的差异不在「AI 会挖洞」,而在它愿意为每一条发现付出一次真实利用的代价,并接受打不穿就删掉的代价。这让它从「又一个 AI 扫描器」变成了「可以接进流水线的一道门禁」。
适合:有 staging、有授权流程、想让安全测试跟着发布节奏跑的团队。
不适合:想拿它替代年度人工渗透测试,或者打算闭源集成到商业产品里 —— 前者它自己就说做不到(定位是「把渗透左移」,不是替代专家),后者被 AGPL 挡着。
本文是 Scanners-Box 每日 AI 工具推荐 的详细分析篇。