Custom AI Agent - Burp Suite 与 AI 的智能安全审计桥梁

2 阅读6分钟

Custom AI Agent:Burp Suite 与 AI 的智能桥梁

Custom AI Agent 是一款专为 Burp Suite 设计的创新扩展,它将现代大型语言模型(LLM)的强大分析能力直接注入您的日常安全测试工作流。无论您是使用本地模型还是云服务,都能让 AI 辅助甚至自动执行漏洞发现与审计任务。

功能特性

  • 🤖 10+ AI 后端支持:内置 Burp AI、Ollama、LM Studio、NVIDIA NIM、通用 OpenAI 兼容接口,以及 Gemini CLI、Claude CLI、Codex CLI、OpenCode CLI、Copilot CLI 等多种命令行 AI 助手。
  • 🛠️ 53+ MCP 工具集:通过 MCP (Model Context Protocol) 服务器,允许 Claude Desktop 或其他 MCP 客户端自主驱动 Burp Suite 进行扫描和测试。
  • 🔍 全面漏洞覆盖:内置 62 类漏洞识别能力(如注入、认证、加密缺陷等),通过被动与主动 AI 扫描器自动发现安全风险。
  • 🔒 三级隐私保护模式:提供 STRICT(严格)、BALANCED(平衡,默认)、OFF(关闭)三种模式,智能脱敏 Cookie、Token、Authorization 等敏感数据后再发送至 AI 后端。
  • 📚 自定义提示词库:可针对 HTTP 请求或扫描问题保存自定义提示模板,通过右键菜单快速调用,并支持临时输入。
  • 📜 合规审计日志:以 JSONL 格式记录所有 AI 交互,包含 SHA-256 完整性哈希,并标记提示来源和上下文类型,满足审计合规要求。

安装指南

环境要求

  • Java 21 (Temurin 或 Oracle JDK)
  • Burp Suite (Community 或 Professional 版)

安装步骤

  1. 下载 JAR 文件

    从项目的 Releases 页面下载最新版本的 Custom-AI-Agent-<version>.jar

  2. 加载到 Burp Suite

    • 打开 Burp Suite。
    • 导航至 Extensions > Installed 标签页。
    • 点击 Add 按钮。
    • 在 "Extension Type" 下拉菜单中选择 Java
    • 点击 Select file...,选择你下载的 .jar 文件。
    • 点击 Next 完成加载。
  3. 从源码构建(可选)

    git clone https://github.com/six2dez/burp-ai-agent.git
    cd burp-ai-agent
    ./gradlew clean shadowJar
    # 构建输出位于: build/libs/Custom-AI-Agent-<version>.jar
    

使用说明

基础配置

加载扩展后,你会在 Burp Suite 的主选项卡栏中看到 AI Agent 标签页。

  1. 选择 AI 后端:在 "Settings" 部分,从 "Backend Type" 下拉菜单中选择你的 AI 后端(如 Ollama、NVIDIA NIM 等)。
  2. 配置后端地址:根据所选后端,填写 API 端点、模型名称或 CLI 路径。
  3. 设置隐私模式:在 "Privacy" 部分选择 OFFBALANCEDSTRICT 模式,控制发送到 AI 的数据脱敏程度。
  4. 启用 AI 扫描器:在 "AI Passive Scanner" 或 "AI Active Scanner" 部分,勾选 "Enable" 以启动自动扫描。

典型使用场景

场景一:通过聊天面板辅助分析

在主界面的 "Chat" 面板中,你可以直接向 AI 提问。AI 可以访问 Burp 的上下文(如当前选中的 HTTP 请求),帮助你分析请求或生成测试用例。

示例:分析当前请求的安全性

用户: 请分析选中的这个登录请求,检查是否存在 SQL 注入风险。 AI 助手: (使用 MCP 工具获取请求详情,分析参数并给出初步评估和建议的测试 Payloads。)

场景二:使用自定义提示词
  1. 在 "Prompt Library" 面板中,点击 "Add" 保存一个常用提示,例如:“请检查这个 API 端点的 IDOR 漏洞”。
  2. ProxyRepeater 标签页中,右键点击一个 HTTP 请求。
  3. 选择 Extensions -> AI Agent -> 你保存的提示词。
  4. AI 将自动分析该请求并给出针对性结果。
场景三:通过 MCP 让 Claude 驱动 Burp

这是最强大的功能之一。你可以让 Claude Desktop 等 MCP 客户端直接控制 Burp Suite 进行扫描。

  1. 在 AI Agent 设置中,确保 MCP Server 已启用(默认启用)。
  2. 配置你的 MCP 客户端(如 Claude Desktop),连接到 Burp AI Agent 提供的 MCP 服务。
  3. 在 Claude 中,你可以发出如下指令:
    • “使用 site_map 工具列出当前项目的所有 API 端点。”
    • “对 https://example.com/api/user 这个请求进行 SQL 注入测试,使用 http1_request 工具发送带有 ' 的测试请求。”
    • “读取 proxy_http_history,分析最近 10 条请求,寻找可能的敏感信息泄露。”

注意:部分 MCP 工具(如发送修改后请求的工具)需要在客户端启用 Unsafe Mode

核心代码

1. 隐私保护模块 - 敏感数据脱敏

该模块负责在将 HTTP 请求和响应发送给 AI 后端之前,根据用户选择的隐私模式对敏感信息进行清洗,是保护用户数据安全的关键组件。

// 来自 redact/Redactor.kt 的核心逻辑示意
enum class PrivacyMode { STRICT, BALANCED, OFF }

class PrivacyRedactor(private val mode: PrivacyMode) {
    
    fun redact(request: HttpRequest): HttpRequest {
        if (mode == PrivacyMode.OFF) return request
        
        var redactedRequest = request
        // 脱敏 Authorization Header
        redactedRequest = redactAuthHeader(redactedRequest)
        // 脱敏常见 Token Headers
        redactedRequest = redactTokenHeaders(redactedRequest)
        // 脱敏 URL 查询参数中的敏感字段
        redactedRequest = redactUrlParams(redactedRequest)
        
        if (mode == PrivacyMode.STRICT) {
            // 严格模式下脱敏 Cookie
            redactedRequest = redactCookieHeader(redactedRequest)
            // 严格模式下移除或替换请求体中的敏感字段
            redactedRequest = redactBody(redactedRequest)
        }
        return redactedRequest
    }
    
    private fun redactTokenHeaders(request: HttpRequest): HttpRequest {
        val sensitiveHeaders = listOf(
            "X-Auth-Token", "X-Access-Token", "X-Session-Token", 
            "X-CSRF-Token", "X-Api-Secret", "X-Client-Secret"
        )
        // 遍历并替换敏感 Header 的值为 [REDACTED]
        // ... 实现逻辑
    }
}

2. MCP 工具定义 - 扫描技能入口

此代码展示了如何通过 MCP 定义一个 burp-scan 技能,该技能集成了 Burp Suite 的核心扫描能力,供 AI 助手(如 Claude)调用。

// 来自 mcp/McpTools.kt 和 skills/burp-scan.md 的定义
class BurpScanSkill : McpSkill {
    override val name = "burp-scan"
    override val description = "通过 MCP 工具进行 Burp Suite 扫描 — 被动流量分析、主动 Payload 测试、带外验证..."
    
    fun getToolDefinitions(): List<McpTool> {
        return listOf(
            McpTool(
                name = "scope_check",
                description = "检查一个 URL 是否在 Burp Suite 的作用域内",
                inputSchema = scopeCheckSchema
            ),
            McpTool(
                name = "http1_request",
                description = "通过 Burp Suite 发送一个 HTTP/1.1 请求并获取响应 [unsafe]",
                inputSchema = httpRequestSchema
            ),
            McpTool(

                description = "为已验证的漏洞创建一个 Burp Suite 问题",

            ),
            // ... 更多工具: site_map, proxy_http_history, collaborator_generate 等
        )
    }
}

3. AI 被动扫描器 - 流量监控与问题创建

被动扫描器在后台持续分析代理流量,当 AI 模型对某个风险的确信度达到阈值(如 85%)时,会自动在 Burp Suite 的目标中创建一个安全问题。

// 来自 scanner/PassiveScanner.kt 的简化逻辑
class AiPassiveScanner : IScannerCheck {
    

        // 1. 从请求/响应中提取分析上下文
        val context = buildContextFromTraffic(baseRequestResponse)
        
        // 2. 调用配置的 AI 后端进行分析
        val aiResult = aiBackend.analyzePassive(context)
        
        // 3. 如果 AI 返回的置信度高于阈值 (如 85%)
        if (aiResult.confidence >= CONFIDENCE_THRESHOLD) {
            // 4. 创建一个标记为 [AI Passive] 的扫描问题

                name = "[AI Passive] ${aiResult.vulnerabilityName}",
                detail = aiResult.evidence,
                severity = aiResult.severity,
                confidence = "FIRM"
            )

        }
        return null
    }
}

4QP0eWakiolTgHKD0qOkSwKoj3cnUBzh6PrQy9Iuh+s=