mitre/mcp
GitHub: mitre/mcp
基于Caldera的AI驱动插件,通过LLM工作流自动生成对抗模拟能力和行动规划,支持STIX威胁情报增强与全链路追踪。
Stars: 23 | Forks: 4
# Caldera MCP 插件
一个由 AI 驱动的 Caldera 插件,用于编排长时间运行的 LLM 工作流,以自动创建对手模拟能力和规划行动。可选择利用来自 STIX JSON 文件的网络威胁情报 (CTI) 通过检索增强生成 (RAG) 来丰富工作流。所有执行过程均通过 MLflow 进行跟踪,从而实现对 LLM 推理和工具使用的完全可观测性。
## 功能特性
- **LLM Ability Factory**:根据自然语言描述生成自定义 Caldera 能力
- **LLM Operation Planner**:创建并执行完整的对手模拟行动
- **CTI 集成**:利用来自 STIX 包的真实威胁情报增强能力
- **MLflow 跟踪**:对 LLM 推理、工具调用和执行轨迹的完全可观测
- **灵活的模型支持**:兼容大多数 LLM 提供商(OpenAI、Anthropic 等)
- **运行历史**:浏览并搜索所有历史执行记录及其完整详情
## 快速开始
### 1. 启动 Caldera
在 Caldera 根目录下运行:
```
python3 server.py --insecure
```
MCP 插件会在 Caldera 初始化期间自动在端口 5000 上启动 MLflow。
### 2. 访问 MCP 接口
导航至 Caldera Web 界面,并从侧边栏选择 **MCP** 插件。
### 3. 配置您的 LLM
在 Global Model Configuration 面板中:
- 输入您的 **API key**(必填)
- 选择您的 **model**(默认:gpt-4o)
- 根据需要调整 **temperature** 和 **max_tokens**
- 设置 ReAct 迭代的 **max tool calls**(默认:5)
### 4. 选择您的工作流
**LLM Ability Factory**:创建特定能力
- 示例:“创建一个使用 PowerShell 转储凭据的 Windows 能力”
**LLM Operation Planner**:规划并执行行动
- 示例:“在 Windows 代理上执行勒索软件模拟”
### 5. 运行您的任务
1. 用自然语言输入您的提示词
2. (可选)选择 STIX CTI 文件以利用威胁情报进行增强
3. 点击 **Execute**
4. 通过 MLflow 阶段和推理查看实时进度
5. 查看结果以及创建的能力/行动
## 架构
### 核心组件
**前端 (Vue.js)**
- `mcp.vue`:带有导航的主着陆页
- `local_mcp_ability_factory.vue`:能力创建界面
- `public_mcp_ability_factory.vue`:公开能力界面
- `mcp_history.vue`:历史运行浏览器
- `mcp_extension_guide.vue`:开发者扩展指南
**后端 (Python)**
- `mcp_api.py`:aiohttp API 路由
- `mcp_svc.py`:服务编排层
- `mcp_factory_client.py`:Ability factory DSPy 客户端
- `mcp_planner_client.py`:Operation planner DSPy 客户端
- `mcp_server.py`:暴露 Caldera API 的 MCP 工具服务器
- `factory.py`:命令生成 DSPy 模块
- `rag.py`:STIX CTI 检索服务
**集成**
- `hook.py`:插件初始化和 MLflow 启动
## 配置
### 默认设置
编辑 `conf/default.yml` 以设置默认 LLM 配置:
```
llm:
model: gpt-4o
api_key: YOUR_API_KEY
offline: true
use_mock: false
factory:
model: gpt-4o
api_key: YOUR_API_KEY
temperature: 0.4
```
**注意**:前端模型配置会在每次运行时覆盖这些默认值。
### RAG 配置
使用 CTI 增强时:
- **Embedding Model**:默认 `openai/text-embedding-3-small`
- **Top-K Retrieval**:默认 5 个对象(可通过 UI 配置)
- **STIX File Location**:通过 UI 上传文件,存储在 `data/` 目录中
## 使用 CTI 集成
### 上传 STIX 文件
1. 导航至 **MCP → Ability Factory** 或 **Planner**
2. 在 RAG Configuration 部分,点击 **Upload STIX File**
3. 选择您的 STIX JSON 包
4. 文件将存储在 `plugins/mcp/data/`
### 为运行启用 CTI
1. 在 RAG Configuration 面板中,选择要使用的 STIX 文件
2. (可选)调整 Embedding 模型和 Top-K 检索参数
3. 正常执行您的任务
LLM 将根据您的提示词接收相关的 CTI 上下文,包括:
- 攻击模式和技术
- 恶意软件和工具描述
- 威胁行为者 TTPs
- 攻击活动信息
### CTI 数据流
```
User Prompt → RAG Search (Semantic) → Top-K CTI Objects Retrieved
↓
Detailed Context for Top 3 Objects
↓
Formatted CTI Context String
↓
LLM Receives Task + CTI Context
↓
Creates CTI-Informed Abilities/Operations
```
## MLflow 跟踪
### 访问 MLflow UI
在浏览器中打开:**http://localhost:5000**
导航至 **Experiments → Traces** 以查看:
- 运行状态和阶段
- LLM 思维链(`thought_0`、`thought_1` 等)
- 工具调用和参数(`tool_name_N`、`tool_args_N`)
- RAG 检索步骤(当使用 CTI 时)
- 最终结果和推理
### 理解运行标签
**状态标签**:
- `status`:running、complete、failed
- `stage`:当前执行阶段
- `reasoning`:LLM 的最终推理摘要
- `process_result`:创建内容的摘要
**RAG 标签**(当启用 CTI 时):
- `rag_retrieval_step_N`:RAG 检索过程
- `rag_retrieved_object_N`:检索到的 CTI 对象名称
- `cti_context_preview`:发送给 LLM 的 CTI 前 1000 个字符
- `cti_context_length`:CTI 上下文总大小
**LLM 轨迹**:
- `thought_N`:每一步的 LLM 推理
- `observation_N`:工具执行结果
- `tool_name_N`:被调用的工具
- `tool_args_N`:传递给工具的参数
## 扩展框架
请参阅 UI 中的 **Extend & Customize** 指南,获取有关以下内容的详细说明:
- 创建自定义 DSPy 客户端
- 添加新的 MCP 工具
- 构建自定义工作流
- 与服务层集成
示例用例:
- 威胁猎手:分析对手配置文件并生成检测规则
- 行动优化器:审查已完成的行动并提出改进建议
- 攻击活动构建器:根据威胁行为者配置文件创建多阶段攻击活动
## 开发
### 测试单个组件
```
# 测试工厂客户端(需要运行 Caldera)
cd app
python mcp_factory_client.py
# 测试计划器客户端
python mcp_planner_client.py
# 测试 MCP 服务器工具
python mcp_server.py
```
### 项目结构
```
plugins/mcp/
├── app/ # Python backend
│ ├── mcp_api.py # API routes
│ ├── mcp_svc.py # Service layer
│ ├── mcp_factory_client.py
│ ├── mcp_planner_client.py
│ ├── mcp_server.py # MCP tool server
│ ├── factory.py # Command generation
│ └── rag.py # CTI retrieval
├── gui/views/ # Vue frontend
│ ├── mcp.vue
│ ├── local_mcp_ability_factory.vue
│ ├── public_mcp_ability_factory.vue
│ ├── mcp_history.vue
│ └── mcp_extension_guide.vue
├── conf/default.yml # Default configuration
├── data/ # STIX JSON files
├── hook.py # Plugin initialization
└── README.md
```
## 依赖项
- **dspy**:具有 ReAct 模式的 LLM 编排框架
- **mcp**:用于工具服务器的模型上下文协议 (Model Context Protocol) SDK
- **mlflow**:实验跟踪和追踪
- **aiohttp**:异步 Web 框架
- **psutil**:用于 MLflow 服务器的进程管理
- **requests**:用于 Caldera API 的 HTTP 客户端
## 故障排除
### API Key 错误
**错误**:“API key is required but not provided”
**解决方案**:在执行之前,在 Global Model Configuration 面板中输入您的 API key。
### MLflow 未启动
**错误**:无法访问 http://localhost:5000
**解决方案**:检查 Caldera 日志中的 MLflow 启动消息。该插件会自动终止端口 5000 上的进程并在初始化期间启动 MLflow。
### RAG 检索失败
**错误**:“RAG service not initialized”或 Embedding 错误
**解决方案**:
- 验证 STIX 文件是否为有效的 JSON
- 确保 API key 有权访问 Embedding 模型
- 检查 MLflow 日志以获取详细的错误消息
### 工具执行失败
**错误**:工具无法初始化或执行
**解决方案**:
- 验证 Caldera API 是否可在 `http://localhost:8888/api/v2/` 访问
- 检查 MCP 服务器子进程日志以了解环境问题
- 确保 PYTHONPATH 包含 venv 包
### 查看详细日志
检查 MLflow UI 以获取:
1. 完整的工具调用轨迹
2. `error` 参数中的错误消息
3. `traceback` 参数中的回溯信息
4. 发生失败的阶段
## 支持
对于错误和功能请求:
- 检查 MLflow traces 以获取详细的执行信息
- 查看带有 `[MCP]` 前缀的 Caldera 日志
- 查阅应用内的 Extension Guide 以解决开发问题
## 许可证
Caldera 项目的一部分。有关许可证信息,请参阅主 Caldera 仓库。
标签:adversary emulation, AI安全, API集成, Caldera插件, Chat Copilot, DLL 劫持, GPT-4, LLM, MLflow, RAG, Red Teaming, STIX, Unmanaged PE, 作战规划, 可观测性, 大语言模型, 威胁情报, 对手仿真, 开发者工具, 恶意样本开发, 检索增强生成, 网络安全, 能力生成, 自动化攻击模拟, 逆向工具, 隐私保护