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, 作战规划, 可观测性, 大语言模型, 威胁情报, 对手仿真, 开发者工具, 恶意样本开发, 检索增强生成, 网络安全, 能力生成, 自动化攻击模拟, 逆向工具, 隐私保护