项目简介
本项目提供了一个基于 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、威胁情报服务)健康状态的功能。
安装步骤
- 设置Python虚拟环境:
- 使用 'uv' 或 'python -m venv' 创建并激活虚拟环境。
- 例如 (使用 uv):
uv venv source venv/bin/activate # macOS/Linux .\venv\Scripts\activate # Windows
- 安装MCP服务器依赖:
- 在激活的虚拟环境中,安装 MCP 服务器所需的 Python 包。
- 例如 (使用 uv):
uv pip install elasticsearch==8.12.1 fastmcp requests typing_extensions python-dotenv uvicorn fastapi - 如果单独运行威胁情报服务,还需要安装 fastapi 和 uvicorn,但推荐一起安装。
- 设置Elasticsearch (ELK Stack):
- 根据提供的 'docker-compose.yml' 和 'logstash.conf' 文件,启动包含 Elasticsearch, Logstash, Kibana 的 Docker 容器。
- 确保 Elasticsearch 运行并可访问。根据需要配置用户名、密码或 API 密钥。
- 设置威胁情报服务:
- 进入 '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
- 配置并运行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 协议启动并与此服务器通信。
基本使用方法
- 按照安装步骤配置并启动 Elasticsearch 和威胁情报服务(如果使用)。
- 启动您的 MCP 客户端,并确保已按照上述说明配置了此 MCP 服务器。
- MCP 客户端连接成功后,将发现此服务器提供的各种工具。
- 在 MCP 客户端界面中,您可以使用 LLM 调用这些工具,执行日志查询、事件分析、威胁情报查找等任务,从而进行交互式威胁狩猎。
信息
分类
数据库与文件