使用说明

项目简介

attAck-mcp-server 是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于提供对 MITRE ATT&CK 知识库的便捷查询能力。该服务器通过标准化的 MCP 协议,向 LLM 客户端提供关于 ATT&CK 框架中攻击技术、战术、缓解措施和检测方法的详细信息。这使得 LLM 应用能够轻松集成和利用 ATT&CK 知识库,提升在网络安全领域的应用能力,例如威胁情报分析、安全策略制定、攻击模拟等。

主要功能点

  • 攻击技术查询 (query_technique):
    • 支持通过技术 ID 精确查询 ATT&CK 技术详情。
    • 支持通过技术名称进行模糊搜索,查找相关技术。
    • 返回技术ID、名称、描述、适用平台、kill chain 阶段、外部引用以及子技术等详细信息。
  • 缓解措施查询 (query_mitigations):
    • 根据技术 ID 查询针对该技术的缓解措施。
    • 返回缓解措施的 ID、名称和描述。
  • 检测方法查询 (query_detections):
    • 根据技术 ID 查询检测该技术的数据组件。
    • 返回数据组件的来源和描述,帮助用户了解如何检测特定攻击技术。
  • 战术列表查询 (list_tactics):
    • 获取所有 ATT&CK 战术分类的列表。
    • 返回战术的 ID、名称和描述。

安装步骤

  1. 克隆仓库: 将 GitHub 仓库 'https://github.com/alex-llm/attAck-mcp-server' 克隆到本地。
  2. 安装依赖: 进入仓库目录,运行命令 'pip install -r requirements.txt' 安装所需的 Python 依赖库。
  3. 准备数据: 确保 'enterprise-attack.json' 数据集文件位于项目根目录下。该文件包含了 ATT&CK 知识库数据。

服务器配置 (MCP 客户端)

根据您的 MCP 客户端类型,配置连接到 attAck-mcp-server 服务。以下提供两种常用配置方式:

1. 本地 stdio 方式 (推荐用于 Smithery 等客户端):

  • 服务类型 (Service Type): 'local/stdio'
  • 服务器名称 (Server Name): 'ATT&CK_Query_Service' (此名称在 'main.py' 中定义)
  • 启动命令 (Command): 'python'
  • 命令参数 (Args): '["main.py"]'
  • 工作目录 (Working Directory): 指向 'attAck-mcp-server' 仓库的根目录 (可选,如果客户端需要指定)

配置示例 (JSON 格式):

{
  "serverName": "ATT&CK_Query_Service",
  "serviceType": "local/stdio",
  "command": "python",
  "args": ["main.py"],
  "workingDir": "/path/to/attAck-mcp-server"  // 请替换为实际路径,如果客户端需要
}

2. HTTP/SSE 方式 (用于远程访问或开发调试):

  • 服务类型 (Service Type): 'http'
  • 服务器名称 (Server Name): 'ATT&CK_Query_Service'
  • 服务器地址 (Address): 'http://127.0.0.1:8001/sse' (如果服务器运行在本地默认端口)

配置示例 (JSON 格式):

{
  "serverName": "ATT&CK_Query_Service",
  "serviceType": "http",
  "address": "http://127.0.0.1:8001/sse"
}

HTTP/SSE 模式服务端启动方式:

  • 修改 'main.py' 文件,取消文件末尾 HTTP/SSE 模式启动代码的注释 (即 '# uvicorn.run(...)' 部分)。
  • 运行命令 'python main.py' 或 'uvicorn main:app --host 0.0.0.0 --port 8001' 启动 HTTP/SSE 服务器。

基本使用方法

  1. 连接 MCP 服务器: 在您的 MCP 客户端中,根据上述配置信息连接到 attAck-mcp-server。

  2. 调用工具 (Tools): 连接成功后,您可以使用以下工具名称及其参数来查询 ATT&CK 数据。

    工具名称和参数示例:

    • query_technique: 查询攻击技术
      • 按 ID 查询 (精确查询):
        {
          "tool_call_id": "query_tech_by_id_1",
          "tool_name": "query_technique",
          "parameters": {
            "technique_id": "T1059.001"
          }
        }
      • 按名称模糊搜索:
        {
          "tool_call_id": "query_tech_by_name_1",
          "tool_name": "query_technique",
          "parameters": {
            "tech_name": "phishing"
          }
        }
    • query_mitigations: 查询技术缓解措施
      {
        "tool_call_id": "query_mitigations_1",
        "tool_name": "query_mitigations",
        "parameters": {
          "technique_id": "T1059.001"
        }
      }
    • query_detections: 查询技术检测方法
      {
        "tool_call_id": "query_detections_1",
        "tool_name": "query_detections",
        "parameters": {
          "technique_id": "T1059.001"
        }
      }
    • list_tactics: 查询战术列表
      {
        "tool_call_id": "list_tactics_1",
        "tool_name": "list_tactics",
        "parameters": {}
      }
  3. 接收响应: MCP 服务器将返回 JSON-RPC 响应,包含查询结果。请根据您的 MCP 客户端文档,查看和处理服务器返回的响应数据。

快速开始: 对于本地开发和测试,推荐使用 stdio 方式,并直接运行 'python main.py' 启动服务器。

信息

分类

网页与API