solomonneas/zeek-mcp

GitHub: solomonneas/zeek-mcp

为 Zeek 网络安全监控框架提供 MCP 接口,使大语言模型能够智能解析、查询和分析网络流量日志。

Stars: 0 | Forks: 0

# Zeek MCP 服务器 [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue?logo=typescript)](https://www.typescriptlang.org/) [![Node.js](https://img.shields.io/badge/Node.js-20%2B-green?logo=node.js)](https://nodejs.org/) [![MCP](https://img.shields.io/badge/MCP-1.x-purple)](https://modelcontextprotocol.io/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 一个用于 [Zeek](https://zeek.org/)(原名 Bro,强大的网络分析框架)的 MCP (Model Context Protocol) 服务器。提供对 Zeek 丰富日志生态系统的智能日志解析、查询和分析功能,使 LLM 能够查询连接日志、DNS 活动、HTTP 请求、SSL 证书、文件提取和安全通知。 ## 功能特性 - **18 个工具** 用于查询和分析 Zeek 日志 - **2 个资源** 用于日志类型元数据和传感器统计 - **3 个提示词** 用于引导调查工作流 - **双重格式支持** - JSON 和 TSV(Zeek 原生的制表符分隔格式) - **CIDR 匹配** - 按 IP 范围过滤 (10.0.0.0/8, 192.168.1.0/24) - **通配符匹配** - 使用模式搜索域名和 URI (*.evil.com) - **分析功能** - 用于 DNS 隧道检测的香农熵、信标分析、异常检测 - **压缩日志支持** - 读取 .gz 归档日志 - **基于日期的轮换** - 按日期导航 Zeek 的归档日志目录 ## 前置条件 - Node.js 20+ - 生成日志的 Zeek 传感器(JSON 或 TSV 格式) ## 安装 ``` git clone https://github.com/solomonneas/zeek-mcp.git cd zeek-mcp npm install npm run build ``` ## 配置 运行前设置环境变量: | 变量 | 默认值 | 描述 | |----------|---------|-------------| | `ZEEK_LOG_DIR` | `/opt/zeek/logs/current` | 当前 Zeek 日志的路径 | | `ZEEK_LOG_ARCHIVE` | `/opt/zeek/logs` | 归档/轮换日志的路径 | | `ZEEK_LOG_FORMAT` | `json` | 日志格式:`json` 或 `tsv` | | `ZEEK_MAX_RESULTS` | `1000` | 每次查询的最大结果数 | ## 使用方法 ### Claude Desktop 添加到您的 Claude Desktop 配置 (`claude_desktop_config.json`): ``` { "mcpServers": { "zeek": { "command": "node", "args": ["/path/to/zeek-mcp/dist/index.js"], "env": { "ZEEK_LOG_DIR": "/opt/zeek/logs/current", "ZEEK_LOG_FORMAT": "json" } } } } ``` ### 独立运行 ``` ZEEK_LOG_DIR=/opt/zeek/logs/current node dist/index.js ``` ### 开发 ``` ZEEK_LOG_DIR=./test-data npm run dev ``` ## 工具 ### 连接分析 | 工具 | 描述 | |------|-------------| | `zeek_query_connections` | 使用灵活的过滤器搜索连接日志(CIDR、协议、持续时间、字节) | | `zeek_connection_summary` | 统计摘要 - 主要通信主机、服务、字节、连接数 | | `zeek_long_connections` | 查找长连接(潜在的 C2 信标、隧道) | ### DNS 分析 | 工具 | 描述 | |------|-------------| | `zeek_query_dns` | 使用域名通配符和响应码过滤搜索 DNS 查询 | | `zeek_dns_summary` | 热门域名、NXDOMAIN 计数(DGA 检测)、查询类型分布 | | `zeek_dns_tunneling_check` | 通过熵分析和编码检测来检测 DNS 隧道 | ### HTTP 分析 | 工具 | 描述 | |------|-------------| | `zeek_query_http` | 按主机、URI、方法、User Agent、状态码搜索 HTTP 请求 | | `zeek_suspicious_http` | 查找可疑 HTTP:向 IP 发起的 POST、异常代理、大消息体、URL 中的 base64 | ### SSL/TLS 分析 | 工具 | 描述 | |------|-------------| | `zeek_query_ssl` | 按 SNI、版本、验证状态、证书字段搜索 SSL/TLS | | `zeek_expired_certs` | 查找过期、自签名或无效的证书 | ### 文件分析 | 工具 | 描述 | |------|-------------| | `zeek_query_files` | 按 MIME 类型、哈希、文件名、大小搜索文件提取记录 | | `zeek_executable_downloads` | 查找网络上的可执行文件传输(PE、ELF、脚本) | ### 安全通知 | 工具 | 描述 | |------|-------------| | `zeek_query_notices` | 搜索 Zeek 安全通知(端口扫描、无效证书、自定义告警) | ### SSH 分析 | 工具 | 描述 | |------|-------------| | `zeek_query_ssh` | 按认证状态、方向、客户端/服务器搜索 SSH 连接 | | `zeek_ssh_bruteforce` | 检测超过失败阈值的 SSH 暴力破解尝试 | ### 跨日志调查 | 工具 | 描述 | |------|-------------| | `zeek_investigate_host` | 跨所有日志类型对主机进行全面调查 | | `zeek_investigate_uid` | 跨所有日志类型追踪连接 UID | ### 软件发现 | 工具 | 描述 | |------|-------------| | `zeek_software_inventory` | 列出网络上检测到的软件和版本 | ## 资源 | 资源 | URI | 描述 | |----------|-----|-------------| | Log Types | `zeek://log-types` | 所有 Zeek 日志类型及其字段描述 | | Stats | `zeek://stats` | 传感器统计信息和可用日志类型 | ## 提示词 | 提示词 | 描述 | |--------|-------------| | `investigate-host` | 跨所有日志的引导式主机调查工作流 | | `hunt-for-c2` | 针对 C2 通信模式的威胁搜寻 | | `network-baseline` | 生成网络活动基线 | ## 支持的日志类型 conn, dns, http, ssl, files, notice, weird, x509, smtp, ssh, dpd, software ## 测试 ``` npm test ``` 测试使用 `test-data/` 中的示例 Zeek 日志文件,涵盖 JSON 和 TSV 格式。 ### 生成测试数据 生成注入了可疑模式的逼真 Zeek 日志: ``` npm run generate-logs # 选项 npx tsx scripts/generate-zeek-logs.ts --output=/tmp/zeek-logs --format=json ``` ## 项目结构 ``` zeek-mcp/ src/ index.ts # MCP server entry point config.ts # Environment config + validation types.ts # Zeek log type definitions resources.ts # MCP resources prompts.ts # MCP prompts parser/ index.ts # Format-agnostic parser + log resolution json.ts # JSON log parser tsv.ts # TSV log parser with header detection query/ engine.ts # Query engine with filtering/sorting filters.ts # CIDR match, wildcard, range operators aggregation.ts # Statistical aggregation functions tools/ connections.ts # Connection analysis tools dns.ts # DNS analysis tools http.ts # HTTP analysis tools ssl.ts # SSL/TLS analysis tools files.ts # File analysis tools notices.ts # Security notice tools ssh.ts # SSH analysis tools investigation.ts # Cross-log investigation tools software.ts # Software/asset discovery analytics/ entropy.ts # Shannon entropy calculation beaconing.ts # Beacon detection algorithms anomaly.ts # Statistical anomaly detection tests/ parser.test.ts # Parser unit tests (JSON + TSV) query.test.ts # Query engine + filter tests analytics.test.ts # Entropy, beaconing, anomaly tests tools.test.ts # Integration tests with sample data test-data/ # Sample Zeek logs scripts/ generate-zeek-logs.ts # Mock data generator ``` ## 许可证 MIT
标签:AMSI绕过, Bro, DNS隧道检测, GNU通用公共许可证, HTTP分析, IP 地址批量处理, LLM工具, MCP, MITM代理, Model Context Protocol, Node.js, Rootkit, SSL证书分析, TypeScript, Zeek, 信标分析, 内核模式, 内核驱动, 威胁检测, 安全插件, 开源安全工具, 异常检测, 日志查询, 日志解析, 网络协议, 网络安全, 自动化攻击, 证书伪造, 逆向工程平台, 隐私保护