内容
# 红队机器学习API MCP
专业的AI/ML API渗透测试和红队模拟,基于MCP。
红队机器学习API MCP是一款针对机器学习和大型语言模型(LLM)API的防御性红队模拟器。
它提供了MCP工具和命令行界面(CLI),允许安全团队对授权的AI/ML API端点运行受控的测试包,评估响应,生成证据,并将结果与SOC 2、ISO 27001和GDPR控制区域对齐。
## 思维转变
该项目被设计为AI系统的**对抗验证平面**。
思维转变是:
- 从提示列表到可衡量的安全控制。
- 从一次红队演示到持续的对抗回归测试。
- 从模型安全到完整的人工智能系统安全:模型、提示、RAG、工具、身份、用户界面和部署。
- 从护栏作为复选框到护栏作为有证据支持的控制。
- 从通过/失败报告到具有所有者、证据和补救措施的发布决策。
对于面向AWS的工作,可以将其定位为:
**红队机器学习API MCP在发布前验证Bedrock Guardrails、应用程序策略、RAG边界和代理工具控制是否有效。**
## AI API渗透测试模式
红队的价值在于渗透测试工作流程:
1. 定义授权范围和参与规则。
2. 在不利用基础设施的情况下执行安全的端点侦察。
3. 运行对抗性AI测试活动。
4. 捕获每个案例的证据。
5. 按类别计算绕过率。
6. 将故障映射到防护措施和架构控制。
7. 将结果与SOC 2、ISO 27001和GDPR控制区域对齐。
8. 为安全审查生成JSON和HTML工件。
这是为授权的AI/ML API渗透测试设计的。它不执行凭证攻击、破坏性操作、第三方扫描或基础设施利用。
## 低影响安全性
运行器被构建为避免对目标系统造成不必要的压力:
- 测试用例之间的默认延迟。
- 每个请求的超时时间。
- 可选的最大案例限制。
- 验证范围的dry-run模式,而不发送提示。
- 渗透测试模式的显式 `--authorized` 门控。
低影响运行示例:
```bash
redteam-ml-api pentest \
--target-url http://127.0.0.1:8765/chat \
--pack aws_2026_professional \
--authorized \
--delay-seconds 1.0 \
--max-cases 5
```
## 核心思想
许多机器学习API都部署了弱安全、隐私或操作控制。该项目通过模拟现实但安全的对抗性请求,在生产前测试这些控制。
模拟器关注:
- 提示注入的恢复能力。
- 敏感数据泄露。
- 不安全的模型行为。
- 过度自信或幻觉的政策声明。
- 弱API合同行为。
- 模型版本之间的回归测试。
## 基础设施图
```mermaid
flowchart LR
Operator["安全/机器学习运维操作员"] --> Client["MCP客户端\n(Codex, Claude, Cursor等)"]
Client --> Server["红队机器学习API MCP服务器\nstdio JSON-RPC"]
Server --> Packs["攻击包\nJSON测试用例"]
Server --> Runner["测试运行器\n速率限制 + 请求模板"]
Runner --> Target["授权机器学习API\n/评分, /聊天, /预测"]
Target --> Runner
Runner --> Evaluator["响应评估器\n泄露 + 拒绝 + 策略检查"]
Evaluator --> Store["本地证据\nJSON报告"]
Store --> Client
Client --> Report["风险摘要 + 补救计划"]
```
## 工作流程
```mermaid
sequenceDiagram
participant U as 操作员
participant C as MCP客户端
participant M as 红队MCP服务器
participant A as 攻击包
participant T as 目标机器学习API
participant E as 评估器
U->>C: 在预发布API上运行红队包
C->>M: 工具/调用 run_red_team
M->>A: 加载提示注入/泄露案例
loop 每个测试案例
M->>T: 发送授权的HTTP请求
T-->>M: 返回模型/API响应
M->>E: 评估响应
end
E-->>M: 发现 + 风险评分
M-->>C: 结构化报告
C-->>U: 摘要和修复
```
## MCP工具
### `list_attack_packs`
列出可用的本地测试包。
### `run_red_team`
在授权的目标上运行攻击包。
输入:
```json
{
"target_url": "http://localhost:8000/chat",
"pack": "baseline_safe",
"method": "POST",
"timeout_seconds": 10
}
```
### `evaluate_text`
评估单个响应中的风险信号。
输入:
```json
{
"text": "模型响应此处"
}
```
### `generate_report`
根据以前的运行结果创建紧凑的补救报告。
### `generate_operating_model`
为安全团队、红队、AI架构师、平台团队和执行赞助商创建战略运营模型简介。
它将红队类别映射到防护措施控制、架构控制、所有者和发布决策。
### `run_ai_api_pentest`
运行授权的AI/ML API渗透测试工作流程,包括范围、侦察、活动执行、证据、指标、发布决策和保存的报告工件。
## 快速入门
```bash
cd "/home/local-renad/renad-repo/RedTeam-ML-PenTest-MCP"
python3 -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"
python -m pytest
```
运行演示API:
```bash
scripts/start_mock_api.sh
```
打开浏览器健康检查:
```text
http://127.0.0.1:8765/
```
尝试一个示例浏览器请求:
```text
http://127.0.0.1:8765/chat?input=hello
```
演示API完成后停止:
```bash
scripts/stop_mock_api.sh
```
在另一个终端中运行模拟器:
```bash
redteam-ml-api run --target-url http://127.0.0.1:8765/chat --pack baseline_safe
```
运行专业的2026年AWS面向包:
```bash
redteam-ml-api run --target-url http://127.0.0.1:8765/chat --pack aws_2026_professional --report
```
生成思维转变的操作模型:
```bash
redteam-ml-api brief --target-url http://127.0.0.1:8765/chat --pack aws_2026_professional
```
运行渗透测试:
```bash
redteam-ml-api pentest \
--target-url http://127.0.0.1:8765/chat \
--pack aws_2026_professional \
--tester "红队" \
--environment "预发布" \
--authorized
```
从可重用的配置文件运行:
```bash
redteam-ml-api pentest --config examples/pentest_scope.json
```
身份验证API示例:
```bash
redteam-ml-api pentest \
--target-url https://api.example.com/chat \
--authorized \
--bearer-token "$API_TOKEN" \
--header "X-Environment: 预发布" \
--input-field 消息 \
--delay-seconds 1.0
```
报告保存在:
```text
reports/
```
或者运行完整的演示:
```bash
scripts/demo_pentest.sh
```
更多详情:
- [快速入门](docs/QUICKSTART.md)
- [控制映射](docs/CONTROL_MAPPING.md)
- [示例范围](examples/pentest_scope.json)
启动MCP服务器:
```bash
redteam-ml-api-mcp
```
## MCP客户端配置
```json
{
"mcpServers": {
"redteam-ml-api": {
"command": "python",
"args": ["-m", "redteam_ml_api_mcp.server"],
"cwd": "/Users/renad-local/renad-repo/RedTeam-ML-PenTest-MCP"
}
}
}
```
## 安全边界
该项目仅用于授权的防御性测试。它不利用基础设施、绕过身份验证、扫描第三方系统或生成恶意软件。攻击包是纯JSON,因此团队可以审查正在发送的内容。