返回市场
主控节点

主控节点

作者:mitre13 星标更新:2025-10-31

项目介绍

Caldera MCP 插件

Caldera 的一个由 AI 驱动的插件,用于编排长期运行的 LLM 工作流,以自动创建对手模拟能力和计划操作。可选地使用来自 STIX JSON 文件的网络威胁情报(CTI)增强工作流。所有执行过程都通过 MLflow 进行跟踪,以便全面观察 LLM 推理和工具使用情况。

功能

  • LLM 能力工厂:从自然语言描述生成自定义的 Caldera 能力
  • LLM 操作规划器:创建并执行完整的对手模拟操作
  • CTI 集成:利用 STIX 包中的真实世界威胁情报增强能力
  • MLflow 跟踪:全面观察 LLM 推理、工具调用及执行轨迹
  • 灵活的模型支持:兼容大多数 LLM 提供商(如 OpenAI、Anthropic 等)
  • 运行历史:浏览和搜索所有历史执行及其详细信息

快速开始

1. 启动 Caldera

在 Caldera 根目录下:

python3 server.py --insecure

MCP 插件会在 Caldera 初始化时自动启动 MLflow,端口为 5000。

2. 访问 MCP 接口

导航到 Caldera Web 界面,并从侧边栏选择 MCP 插件。

3. 配置您的 LLM

在全局模型配置面板中:

  • 输入您的 API 密钥(必需)
  • 选择您的 模型(默认:gpt-4o)
  • 根据需要调整 温度最大令牌数
  • 设置 ReAct 迭代中的 最大工具调用次数(默认:5)

4. 选择您的工作流

LLM 能力工厂:创建特定的能力

  • 示例:"创建一个使用 PowerShell 在 Windows 上转储凭据的能力"

LLM 操作规划器:计划并执行操作

  • 示例:"在 Windows 代理上执行勒索软件模拟"

5. 运行您的任务

  1. 输入您的自然语言提示
  2. (可选)选择 STIX CTI 文件以增强威胁情报
  3. 点击 执行
  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:能力工厂 DSPy 客户端
  • mcp_planner_client.py:操作规划器 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 增强时:

  • 嵌入模型:默认 openai/text-embedding-3-small
  • Top-K 检索:默认检索 5 个对象(可通过 UI 配置)
  • STIX 文件位置:通过 UI 上传文件,存储于 data/ 目录

使用 CTI 集成

上传 STIX 文件

  1. 导航至 MCP → 能力工厂规划器
  2. 在 RAG 配置部分,点击 上传 STIX 文件
  3. 选择您的 STIX JSON 包
  4. 文件存储于 plugins/mcp/data/

启用 CTI 运行

  1. 在 RAG 配置面板中,选择要使用的 STIX 文件
  2. (可选)调整嵌入模型和 Top-K 检索
  3. 正常执行您的任务

LLM 将根据您的提示接收相关的 CTI 上下文,包括:

  • 攻击模式和技术
  • 恶意软件和工具描述
  • 威胁行为者 TTPs
  • 活动信息

CTI 数据流

用户提示 → RAG 搜索(语义)→ 检索 Top-K CTI 对象
                                    ↓
                        Top 3 对象的详细上下文
                                    ↓
                        格式化的 CTI 上下文字符串
                                    ↓
                        LLM 接收任务 + CTI 上下文
                                    ↓
                        创建 CTI 信息的能力/操作

MLflow 跟踪

访问 MLflow UI

打开浏览器访问:http://localhost:5000

导航至 实验 → 追踪 查看:

  • 运行状态和阶段
  • LLM 思维链(thought_0thought_1 等)
  • 工具调用及参数(tool_name_Ntool_args_N
  • RAG 检索步骤(当使用 CTI 时)
  • 最终结果和推理

理解运行标签

状态标签

  • status:运行中、完成、失败
  • 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 中的 扩展与定制 指南,了解详细说明:

  • 创建自定义 DSPy 客户端
  • 添加新的 MCP 工具
  • 构建自定义工作流
  • 与服务层集成

示例用例:

  • 威胁猎人:分析对手档案并生成检测规则
  • 操作优化器:审查已完成的操作并提出改进建议
  • 活动构建器:从威胁行为者档案创建多阶段活动

开发

测试单个组件

# 测试工厂客户端(需要运行 Caldera)
cd app
python mcp_factory_client.py

# 测试规划器客户端
python mcp_planner_client.py

# 测试 MCP 服务器工具
python mcp_server.py

项目结构

plugins/mcp/
├── app/                    # Python 后端
│   ├── mcp_api.py         # API 路由
│   ├── mcp_svc.py         # 服务层
│   ├── mcp_factory_client.py
│   ├── mcp_planner_client.py
│   ├── mcp_server.py      # MCP 工具服务器
│   ├── factory.py         # 命令生成
│   └── rag.py             # CTI 检索
├── gui/views/             # Vue 前端
│   ├── mcp.vue
│   ├── local_mcp_ability_factory.vue
│   ├── public_mcp_ability_factory.vue
│   ├── mcp_history.vue
│   └── mcp_extension_guide.vue
├── conf/default.yml       # 默认配置
├── data/                  # STIX JSON 文件
├── hook.py                # 插件初始化
└── README.md

依赖项

  • dspy:具有 ReAct 模式的 LLM 编排框架
  • mcp:工具服务器的 Model Context Protocol SDK
  • mlflow:实验追踪和追踪
  • aiohttp:异步 Web 框架
  • psutil:MLflow 服务器进程管理
  • requests:Caldera API 的 HTTP 客户端

故障排除

API 密钥错误

错误:"需要提供 API 密钥但未提供"

解决方案:在全局模型配置面板中输入您的 API 密钥。

MLflow 无法启动

错误:无法访问 http://localhost:5000

解决方案:检查 Caldera 日志中的 MLflow 启动消息。插件会在初始化时自动终止 5000 端口上的进程并启动 MLflow。

RAG 检索失败

错误:"RAG 服务未初始化" 或嵌入错误

解决方案

  • 验证 STIX 文件是否为有效 JSON
  • 确保 API 密钥具有访问嵌入模型的权限
  • 检查 MLflow 日志以获取详细的错误消息

工具执行失败

错误:工具无法初始化或执行

解决方案

  • 验证 Caldera API 是否可在 http://localhost:8888/api/v2/ 访问
  • 检查 MCP 服务器子进程日志以查找环境问题
  • 确保 PYTHONPATH 包含 venv 包

查看详细日志

检查 MLflow UI 以获取:

  1. 工具调用的完整轨迹
  2. 错误消息在 error 参数中
  3. 回溯在 traceback 参数中
  4. 失败发生的阶段

支持

对于 Bug 和功能请求:

  • 检查 MLflow 追踪以获取详细的执行信息
  • 查看带有 [MCP] 前缀的 Caldera 日志
  • 咨询应用内扩展指南以解决开发问题

许可

Caldera 项目的一部分。详见主 Caldera 存储库的许可信息。