项目简介

本项目提供了一个基于 Model Context Protocol (MCP) 的服务器实现,专注于 Windows 安全日志的分析和威胁狩猎。它集成 Elasticsearch 作为日志存储后端,并可连接外部威胁情报服务,通过定义一系列工具,使大型语言模型 (LLM) 能够方便地查询、分析安全事件,并执行威胁检测任务。

主要功能点

  • 日志数据访问: 提供工具查询 Elasticsearch 中存储的 Windows Event/Sysmon 日志,支持按主机名、事件提供者、事件ID、时间范围等条件过滤。
  • 事件搜索: 支持根据关键词在日志中搜索相关事件。
  • 日志预处理: 具备对特定 Sysmon 事件进行基于字段的去重能力,并能将事件格式化,准备供 LLM 进行分析。
  • 威胁情报集成: 提供工具与外部威胁情报服务交互,支持 IOC (Indicator of Compromise) 查询、事件富化、以及基于IOC模式的威胁狩猎。
  • 自动化分析: 能够生成基于检索增强生成 (RAG) 的威胁分析总结。
  • IOC提取: 从给定的安全事件中自动提取潜在的 IOC (如IP、域名、文件哈希等)。
  • 服务健康监控: 提供检查 MCP 服务器及其后端依赖(Elasticsearch、威胁情报服务)健康状态的功能。

安装步骤

  1. 设置Python虚拟环境:
    • 使用 'uv' 或 'python -m venv' 创建并激活虚拟环境。
    • 例如 (使用 uv):
      uv venv
      source venv/bin/activate  # macOS/Linux
      .\venv\Scripts\activate  # Windows
  2. 安装MCP服务器依赖:
    • 在激活的虚拟环境中,安装 MCP 服务器所需的 Python 包。
    • 例如 (使用 uv):
      uv pip install elasticsearch==8.12.1 fastmcp requests typing_extensions python-dotenv uvicorn fastapi
    • 如果单独运行威胁情报服务,还需要安装 fastapi 和 uvicorn,但推荐一起安装。
  3. 设置Elasticsearch (ELK Stack):
    • 根据提供的 'docker-compose.yml' 和 'logstash.conf' 文件,启动包含 Elasticsearch, Logstash, Kibana 的 Docker 容器。
    • 确保 Elasticsearch 运行并可访问。根据需要配置用户名、密码或 API 密钥。
  4. 设置威胁情报服务:
    • 进入 'mcp-threat-intel' 目录。
    • 复制 '.env.example' 为 '.env' 文件,并填入你的威胁情报 API 密钥 (如 VirusTotal, AlienVault OTX) 和 Elasticsearch 连接信息。
    • 手动启动威胁情报服务(默认运行在 8000 端口)。
      cd mcp-threat-intel
      source ../venv/bin/activate # 或 Windows 的 .\..\venv\Scripts\activate
      python3 -m uvicorn server:app --host 0.0.0.0 --port 8000
  5. 配置并运行MCP服务器:
    • 在 'mcp-hunt-server' 目录中,设置环境变量以连接 Elasticsearch 和威胁情报服务。
    • 可以创建一个 '.env' 文件,包含 'ES_HOST', 'ES_PORT', 'ES_USER', 'ES_PASSWORD', 'ES_API_KEY', 'THREAT_INTEL_HOST', 'THREAT_INTEL_PORT' 等信息。
    • MCP 服务器通常通过 Stdio 传输协议由 MCP 客户端直接启动。

服务器配置 (供 MCP 客户端使用)

MCP 客户端需要配置如何启动和连接此 MCP 服务器。典型的配置是一个 JSON 对象列表,其中每一项描述一个 MCP 服务器。对于此项目,客户端配置应包含服务器的名称、启动服务器的命令以及传递给命令的参数。

一个可能的 MCP 客户端配置项示例(非代码):

  • 服务器名称 (Name): 例如 "Elasticsearch Threat Hunt" 或 "Winlog MCP Server"
  • 命令 (Command): 用于启动 Python 解释器的完整路径。如果您使用了 'uv' 或 'python' 命令,请提供其绝对路径。
  • 参数 (Args): 传递给命令的参数列表。这通常包括:
    • 如果您使用 'uv' 启动,可能需要 '--directory' 参数指定服务器代码所在的目录 ('mcp-hunt-server' 的完整路径)。
    • 启动服务器脚本所需的命令,例如 'run' 或 '-m'。
    • 服务器脚本的名称,例如 'mcp_hunt_server_ti.py'。

例如,如果您的虚拟环境在 '/path/to/venv',项目克隆在 '/path/to/llm_threat_hunt':

  • 命令 (Command): '/path/to/venv/bin/python' (或 'uv' 的路径 '/path/to/venv/bin/uv')
  • 参数 (Args) 如果使用 'python': '["/path/to/llm_threat_hunt/mcp-hunt-server/mcp_hunt_server_ti.py"]'
  • 参数 (Args) 如果使用 'uv': '["--directory", "/path/to/llm_threat_hunt/mcp-hunt-server", "run", "mcp_hunt_server_ti.py"]'

将这些信息配置到您的 MCP 客户端(如 Claude Desktop)的服务器列表中,客户端即可通过 Stdio 协议启动并与此服务器通信。

基本使用方法

  1. 按照安装步骤配置并启动 Elasticsearch 和威胁情报服务(如果使用)。
  2. 启动您的 MCP 客户端,并确保已按照上述说明配置了此 MCP 服务器。
  3. MCP 客户端连接成功后,将发现此服务器提供的各种工具。
  4. 在 MCP 客户端界面中,您可以使用 LLM 调用这些工具,执行日志查询、事件分析、威胁情报查找等任务,从而进行交互式威胁狩猎。

信息

分类

数据库与文件