Other

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

把红队工具塞进 MCP:AutoRedTeam-Orchestrator 的编排哲学

项目背景与痛点

安全测试的现状可以用四个字概括:工具碎片化。侦察用 nmap、目录爆破用 ffuf、漏洞验证用 nuclei、注入测试用 sqlmap,每个工具都有自己的参数体系、输出格式和失败语义。安全工程师一半时间花在调工具,另一半时间花在把 JSON、XML、纯文本输出手工拼成一份能看的报告。

更麻烦的是自动化。传统扫描器只回答“有什么”,不回答“下一步打哪”。而近两年兴起的 LLM Agent 恰恰擅长后者——规划路径、根据回显调整策略。可一旦让模型直接执行命令,幻觉和命令注入就成了新的攻击面。

AutoRedTeam-Orchestrator 切的就是这个缝隙:它不做新的扫描引擎,而是做编排层。上游通过 SDK、CLI 和 MCP 三种入口接收意图,下游把 sqlmap、nuclei、ffuf 这类现成工具连同自研的纯 Python 引擎统一封装,中间夹一层 LLM 做研判与规划,最终输出 SARIF 供 CI/CD 消费。

核心技术揭秘

这套架构最关键的一个决定,是把所有能力以 MCP Tool 的形式暴露。132 个工具意味着 132 个可被任意 MCP 客户端(Claude Desktop、自研 Agent、IDE 插件)直接调用的原子能力。这比写死一个 Web API 高明得多——协议标准化之后,平台本身退化成后端,前端可以是任何东西。

第二层是“纯 Python 引擎”。外部二进制工具不通过 shell 字符串拼接调用,而是由 Python 以子进程方式管理:超时、退出码、输出流分流、结构化解析全部在代码里完成。这一层看着朴素,实际是安全产品的生命线——命令拼接是注入漏洞的重灾区,而结构化解析让下游的 LLM 拿到的是干净的字段,不是一坨 ANSI 转义符。

第三层是隔离。Docker 沙箱把执行环境和宿主机切开,扫描流量、落盘文件、工具依赖全在容器内闭环,这让“自动下载 sqlmap/nuclei/ffuf”这种带供应链风险的操作有了兜底:即便工具被投毒,影响面也被限制在沙箱网络策略内。

数据流的整体形态大致如下:

graph TD A[SDK / CLI / MCP 客户端] --> B[MCP Server 网关] B --> C{"任务意图路由"} C -->|"侦察与枚举"| D[侦察引擎] C -->|"漏洞验证"| E[验证引擎] C -->|"后渗透控制"| F[C2 通道] D --> G[Python 工具适配层] E --> G G --> H[Docker 沙箱] H --> I[结构化结果解析] I --> J[LLM 研判与下一步规划] J --> K[SARIF 报告 / CI 门禁] J -->|"需要继续"| C

注意这条回路:J -->|"需要继续"| C。这是整个设计最有意思的地方——LLM 不执行动作,只输出“下一步该调哪个工具、带什么参数”的决策,真正的动作由确定性引擎完成。换句话说,模型被放在了规划位而非执行位,幻觉的代价从“误删文件”降级为“多扫一轮”。这是把 AI 塞进安全工具链时最稳妥的分工方式。

C2 通道的存在说明作者瞄准的是完整红队生命周期,而不只是扫描。生产级 C2 意味着长连接、任务下发、心跳保活这一套;配合 1980 个测试,工程完整度确实不像玩具项目。

功能亮点与差异

和 XBOW 这类“AI 全自动渗透”产品比,它的差异在于可组合而非端到端黑盒。你可以在 CI 里只调 nuclei 相关的几个 MCP 工具做增量验证,也可以自己写 Agent 串起完整攻击链,平台不强制工作流。

和 Metasploit 比,它的差异在于协议化。MSF 的模块是 Ruby 生态内循环,MCP 工具则天然对 LLM 和外部编排系统友好。

真正稀缺的是 SARIF 出口。安全工具大多吐自己的格式,能直接喂给 GitHub Code Scanning 的并不多。这一条决定了它能不能进研发流程,而不是停在安全团队的本地目录里。

应用场景与落地建议

适合三类场景:企业内网授权渗透的流程标准化、CI/CD 中的安全门禁、以及 AI Agent 安全研究的能力底座。

落地时有几件事必须先想清楚:

  • 授权边界。平台能力越完整,误用代价越大,务必在沙箱网络策略和工具白名单上做硬约束,不要指望 LLM 自我克制。
  • C2 的合规性。多数企业环境对 C2 流量零容忍,建议在生产部署时直接关闭该模块,只在隔离靶场启用。
  • 外部工具版本漂移。自动下载解决了安装问题,但没解决版本锁定问题,建议固定哈希并纳入内部制品库。
  • LLM 成本与延迟。研判环节是 token 消耗大户,长任务要设计缓存与提前终止条件。

综合评价

优点很明确:MCP 原生化让能力复用率极高,纯 Python 引擎保证了执行层可控,沙箱与 SARIF 补齐了“安全地跑”和“跑完能落地”两头,1980 个测试说明作者不是玩票。

短板同样明显:132 个工具的维护成本是长期负担,外部工具的接口一变就要跟着改;LLM 研判的稳定性依赖提示工程质量,误报与漏报的归因会比传统扫描器更难;C2 模块在企业采购流程里大概率是减分项而非加分项。

一句话:它不是一个更强的扫描器,而是一套把渗透工具、模型和 CI 粘起来的标准接口层。价值不在单点能力,在于让你自己的 Agent 有了手脚。

关于

GitHub 原始描述(英文)

Enterprise AI Red Team Platform | 企业级AI红队平台 | 132 MCP Tools | Pure Python Engines | SDK+CLI+MCP | Auto-Download sqlmap/nuclei/ffuf | Production C2 | LLM Enhanced | Docker Sandbox | SARIF CI/CD | 1980 Tests

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Dockerfile
Python

README

AutoRedTeam-Orchestrator

面向授权测试与 AI/MCP 攻击面审计的 local-first、MCP-native 安全自动化工作台。

Python License Version Status

中文 · English · Русский

能力成熟度 · 安全模型 · 安全审计

Beta / Research Preview — 优先支持静态分析、dry-run 与本地靶场。exploit、横向移动、持久化、C2、数据外传等高风险能力属于受限实验特性;policy 与 sandbox 元数据不等同于操作系统或容器级隔离。

目录

概述

AutoRedTeam-Orchestrator 在单一代码库中提供可组合的安全能力,并通过三个入口暴露:MCP Server、Python SDK 与 Typer CLI。产品主线是 AI 辅助的安全自动化——让 AI 编辑器与 Agent 通过 MCP 使用受控的安全能力,并对 AI/MCP 系统自身的攻击面做静态审计。

适用于授权实验、安全自动化研发、AI/MCP 安全审计、CTF 与教学。不是开箱即用的企业平台、自主攻击 Agent 或生产级 C2。

能力

能力域 状态 边界
侦察与漏洞检测(JSON/SARIF) Beta 仅限授权目标;暂无公开准确率基准
AI/MCP 攻击面静态自审 Preview 只读 AST → SARIF;覆盖 FastMCP 与 low-level SDK
CVE 情报与 PoC Preview NVD 同步、Nuclei 兼容执行
报告(JSON/SARIF/HTML) Beta HTML 转义加固进行中
编排 / 利用 / 后渗透 / C2 / 横向 / 持久化 Restricted Experimental 仅限一次性隔离靶场

完整定义见能力成熟度。

快速开始

单行安装(安装 autort 与 autoredteam-mcp 两个命令):

pip install autoredteam-orchestrator                # PyPI
pipx install autoredteam-orchestrator               # 隔离环境
uvx --from autoredteam-orchestrator autort --help    # 免安装直接运行

等不及 PyPI 发布,从 Git 直装:

pip install "git+https://github.com/Coff0xc/AutoRedTeam-Orchestrator.git"
uvx --from git+https://github.com/Coff0xc/AutoRedTeam-Orchestrator autort --help

从源码运行(开发):

git clone https://github.com/Coff0xc/AutoRedTeam-Orchestrator.git
cd AutoRedTeam-Orchestrator
pip install -r requirements.txt
python -m cli.main --help

只读、无网络的起步命令:

python -m cli.main ai-surface scan --path handlers --format sarif -o surface.sarif
python -m cli.main capabilities manifest --profile safe

MCP Server 接入

MCP Server 把安全能力暴露为 MCP 工具,供 AI 编辑器或 Agent 调用。它是 local-first 的:无云端、无遥测,仅限受信本地 stdio。

启动服务

两种等价方式:

autoredteam-mcp --stdio                # 安装后的命令(PyPI / Git)
python -m mcp_stdio_server --stdio     # 源码 checkout 运行

--stdio 选择 stdio 传输,这正是 MCP 客户端(Claude Code、Cursor、Windsurf、Kiro 等)所用的方式。

接入 AI 编辑器

Claude Code、Cursor 等 MCP 客户端读取 mcpServers 键下的 JSON 配置。本项目最小 .mcp.json:

{
  "mcpServers": {
    "autoredteam": {
      "command": "autoredteam-mcp",
      "args": ["--stdio"],
      "env": {
        "AUTORT_CAPABILITY_PROFILE": "safe",
        "AUTOREDTEAM_AUTH_MODE": "strict",
        "AUTOREDTEAM_API_KEY": "replace-with-a-real-key"
      }
    }
  }
}

AUTORT_CAPABILITY_PROFILE 决定注册哪些工具(见能力档案)。省略则回退到 fail-closed 的 safe 默认值。

档案选择

档案按以下顺序解析:显式参数 → AUTORT_CAPABILITY_PROFILE 环境变量 → safe 默认值。任何 minimum_profile 高于所选档案的工具都不会注册,任何未在 manifest 中分类的 surface 会在注册阶段 fail-closed(CapabilityManifestError)。

环境变量

变量 取值 默认 含义
AUTORT_CAPABILITY_PROFILE safe | scan | active-lab | full safe 注册为 MCP 工具的能力层级
AUTOREDTEAM_AUTH_MODE strict | permissive | disabled strict 受保护工具的授权门禁
AUTOREDTEAM_API_KEY 任意字符串 (未设置) strict 模式校验的 API Key;MCP_API_KEY 为等价别名

Python SDK

SDK 是 core/ 引擎之上的薄异步封装,从源码 checkout 导入:

from autort import Scanner, Exploiter, AutoPentest, RedTeam, Reporter
from autort import __version__        # 单源版本号,如 "3.1.0"

所有调用均为 async,返回 dict(少数扫描方法返回列表)。成功以 "success": True 标记;失败携带真实的 "error" 字符串,不吞异常。

Scanner — 侦察与检测

from autort import Scanner

scanner = Scanner("http://127.0.0.1:8000")

ports = await scanner.port_scan(ports="1-1000")          # 或 top=100
recon = await scanner.full_recon()                        # 完整 10 阶段侦察
vulns = await scanner.detect_vulns(categories=["sqli", "xss", "ssrf"])
nuclei = await scanner.nuclei_scan(tags=["cve"], severity=["high", "critical"])

关键方法:full_recon()、port_scan(ports="1-1000", top=None)、detect_vulns(categories=None, config=None)、fingerprint()、waf_detect()、subdomain_enum(domain=None)、passive_recon(domain=None)、nuclei_scan(tags=None, severity=None, template_dir=None, concurrency=10, limit=None)。

Exploiter — 利用与 CVE 情报

from autort import Exploiter

exploiter = Exploiter("http://127.0.0.1:8000")

cves = await exploiter.cve_search("Apache Log4j", severity="critical", has_poc=True)

cve_search(keyword, severity=None, has_poc=None, limit=20) 仅做情报查询,在 safe 档案即可用。cve_exploit(cve)、auto_exploit(top_n=5)、exploit(vuln, **kwargs) 需要 active-lab(及以上)、授权的一次性目标、隔离执行器与 API Key。

AutoPentest — 一键编排

from autort import AutoPentest

pentest = AutoPentest("http://127.0.0.1:8000", config={"timeout": 3600})
result = await pentest.run(phases=["recon", "vuln_scan"])   # 省略 phases 则跑完整流程

run(phases=None) 驱动 RECON → VULN_SCAN → POC_EXEC → EXPLOIT → PRIV_ESC → LATERAL → EXFIL → REPORT 流水线。resume(session_id) 续跑中断的会话;status(session_id) 读取实时状态。这是 full 档案能力,仅在隔离、授权的靶场运行。

RedTeam — 后渗透(受限)

RedTeam(config=None) 聚合横向移动、C2、持久化、提权与凭据发现:lateral_move(target, method="ssh", ...)、c2_start(host, port=443, protocol="https")、persist(target="", method="crontab", ...)、privesc(target, ...)、credential_find(...)。所有方法返回 {"success": bool, ...}。它们属于 full 档案、需审批、隔离执行器的 surface,此处仅作目录列出,不写调用示例。

Reporter — 报告

from autort import Reporter

reporter = Reporter("session_id_here")
html_path = await reporter.generate(format="html")     # html | json | markdown | executive
findings = await reporter.export_findings(format="json")

CLI 命令清单

Typer CLI 是本地分析的主入口,也是安装后的 autort 命令;源码下用 python -m cli.main。

顶层命令

命令 用途 示例(仅限授权目标)
scan 端口扫描 / 完整侦察 autort scan http://127.0.0.1:8000 --full
detect 漏洞检测 autort detect http://127.0.0.1:8000 -c sqli,xss,ssrf --format sarif
exploit CVE / 自动利用 autort exploit http://127.0.0.1:8000 --cve CVE-2021-44228
cve-search CVE 情报 autort cve-search "Log4j" --severity critical --has-poc -n 20
pentest 一键编排 autort pentest http://127.0.0.1:8000 --phases recon,vuln_scan
report 生成报告 autort report <session-id> -f html
nuclei 纯 Python Nuclei 扫描 autort nuclei http://127.0.0.1:8000 -t cve,rce -s high,critical
tools 外部工具状态 autort tools
version 显示版本 autort version

detect(以及 ai-* 扫描器)的 CI 友好参数:--ci 输出精简摘要,并在发现达到 --severity-threshold(info/low/medium/high/critical)的项时返回非零退出码。

子命令组

分组 命令 用途
ai-redteam run、catalog、convert、eval-run 声明式 AI 红队场景(默认 dry-run)
ai-surface scan、scan-mcp-config、scan-skills 静态 AI/MCP 攻击面盘点(只读)
code-agent expand 调用链上下文扩展(不执行代码)
runtime-api serve 只读本地 runtime API(/api/runs)
sandbox docker-smoke 本地 Docker 沙箱 smoke
capabilities matrix、readiness、manifest、profiles 能力 manifest 与覆盖
tools lint MCP 工具契约检查(静态)

只读、无网络的起步命令:

autort ai-surface scan --path handlers --format sarif -o surface.sarif
autort ai-surface scan-mcp-config --path .mcp.json
autort ai-surface scan-skills --path ./skills
autort capabilities profiles
autort capabilities manifest --profile safe
autort tools lint --path handlers

配置与授权

能力档案

档案是有序的暴露层级,每个继承上一个:

档案 包含 运行边界
safe 本地分析、dry-run、元数据、受控本地状态 受信本地进程;无目标网络访问或主机命令执行
scan safe + 授权侦察与漏洞扫描 需明确目标范围与外部网络控制
active-lab scan + 利用验证与攻击规划 需一次性靶场、独立审批、隔离执行器
full 全部 surface,含后渗透与受限研究特性 仅显式 opt-in 的隔离、授权、一次性环境

查看实时定义:

autort capabilities profiles              # 有序档案、继承关系、surface 数量
autort capabilities manifest -p scan      # 按档案过滤的完整 manifest

授权模式

授权通过装饰器按工具施加。由 AUTOREDTEAM_AUTH_MODE 选择,共三档:

模式 行为
strict(默认) 受保护工具要求有效 API Key(AUTOREDTEAM_API_KEY 或 MCP_API_KEY)
permissive 记录警告但放行
disabled 不校验——仅在 AUTOREDTEAM_ENV=test 或设置 PYTEST_CURRENT_TEST 时生效

能力 manifest

manifest(core/capability_manifest.py)是每个暴露 MCP surface 的机器可读、单一事实来源。每条声明 kind、name、handler、category、minimum_profile、risk、maturity,以及必需控制——auth_required、approval_required 与 executor(in-process / external-process / isolated-required)。任何未分类的 surface 注册即 fail-closed。

required_controls 字段是声明式的:它们只控制 MCP schema 暴露,不负责强制。它们不替代认证、目标范围、独立审批或隔离执行器。

AI/MCP 安全自审

对你自己的仓库做纯静态审计:盘点 MCP server 与 AI agent 工具的攻击面,结果以 file:line 精度进入 GitHub Code Scanning。无需 target、网络、secret 或授权。

作为 GitHub Action 在每个 PR 上运行(完整示例见 self-audit.example.yml):

- uses: Coff0xc/[email protected]
  with:
    mode: self-audit
    path: '.'
    severity-threshold: high

或本地运行:

python -m cli.main ai-surface scan --path . --format sarif        # MCP handler 工具面
python -m cli.main ai-surface scan-mcp-config --path .mcp.json    # 危险命令与明文 secret
python -m cli.main ai-surface scan-skills --path ./skills         # 高危指令标记

审计外部仓库时,以 --auth-mode lenient 抑制项目特化的授权判定。

设计思路与方案

  • 一套引擎,三个入口。 侦察、检测、利用、编排、CVE、AI 红队与 AI 攻击面逻辑都落在 core/;MCP Server、SDK(autort/)与 CLI(cli/main.py)都是同一引擎之上的薄适配层。能力只实现一次,而非三遍。
  • fail-closed 的 MCP 暴露。 每个注册的 surface 必须在 capability manifest 中分类。未分类或超出所选档案的 surface 不会被静默暴露——注册即抛错。默认是最窄的 safe 档案,而非最宽的。
  • 声明式暴露与强制授权分层。 档案过滤「哪些工具对客户端存在」;授权决定「受保护工具能否运行」。二者刻意独立,避免改档案时意外放宽「谁能行动」。
  • 本地优先、默认 dry-run。 服务仅 stdio,信任本地进程。高风险能力默认 dry-run,仅在显式 opt-in 的隔离一次性靶场中离开 dry-run。
  • 自审是一等公民。 同一仓库自带对 MCP handler、MCP 客户端配置、skill/prompt 文件的只读扫描器,无需目标或网络即可审 AI/MCP 攻击面本身。

安全与边界

  • MCP capability profile(safe/scan/active-lab/full)在注册阶段过滤工具,但不替代认证、目标范围、独立审批或隔离执行器。
  • 高风险能力默认 dry-run,仅应在一次性隔离环境中启用。
  • 认证由单个工具装饰器接入,尚未构成覆盖全部注册面的统一边界。

详见安全模型与能力成熟度。

许可与免责

MIT License,见 LICENSE。

仅供明确授权的安全测试、内部验证、教育研究与本地实验使用。使用者须遵守适用法律并取得目标所有者的书面授权;禁止用于未授权的扫描、利用、持久化、数据外传或规避安全控制。

评论

暂无评论