solomonneas/zeek-mcp
GitHub: solomonneas/zeek-mcp
为 Zeek 网络安全监控框架提供 MCP 接口,使大语言模型能够智能解析、查询和分析网络流量日志。
Stars: 0 | Forks: 0
# Zeek MCP 服务器
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](https://modelcontextprotocol.io/)
[](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, 信标分析, 内核模式, 内核驱动, 威胁检测, 安全插件, 开源安全工具, 异常检测, 日志查询, 日志解析, 网络协议, 网络安全, 自动化攻击, 证书伪造, 逆向工程平台, 隐私保护