0xPersist/zeek-quick
GitHub: 0xPersist/zeek-quick
一款基于 Python 的 Zeek 日志快速 triage 工具,帮助安全人员在终端即时洞察关键威胁指标。
Stars: 0 | Forks: 0
# zeek-quick
用于 Zeek 日志的 CLI 快速分流工具。输入一个日志文件即可立即获取主要通信者、beacon、可疑域名、恶意 user agent 以及坏证书的摘要,无需加载完整的 SIEM。
支持 TSV 和 JSON 格式的 `conn.log`、`dns.log`、`http.log` 和 `ssl.log`。
## 功能
- 根据文件名或字段头自动检测日志类型
- **conn.log**:按字节统计的主要通信者、长连接、beacon 检测
- **dns.log**:高频查询、可疑 TLD、罕见域名
- **http.log**:可疑 user agent、可疑 URI、主要目标
- **ssl.log**:自签名证书、过期证书、罕见的 JA3 哈希
- 双重 beacon 检测:频率阈值 + 间隔方差(变异系数)
- 彩色终端输出
- 导出 JSON 以便集成到 pipeline
- 内置测试用的样本日志
## 安装
```
git clone https://github.com/0xPersist/zeek-quick.git
cd zeek-quick
pip install -r requirements.txt
```
## 用法
```
usage: zeek-quick [-h] [--type TYPE] [--top N] [--long-duration SECS]
[--beacon-min COUNT] [--beacon-jitter FLOAT]
[--high-freq COUNT] [--rare-threshold COUNT]
[--json] [--out FILE] [--no-banner]
log
positional arguments:
log Path to Zeek log file
options:
--type TYPE Force log type: conn, dns, http, ssl
--top N Number of top results to show (default: 10)
--long-duration SECS Flag connections longer than N seconds (default: 300)
--beacon-min COUNT Min connections to flag as beacon (default: 20)
--beacon-jitter FLOAT Max interval CV for beacon detection (default: 0.3)
--high-freq COUNT DNS query count threshold for high-frequency (default: 100)
--rare-threshold COUNT Query/UA count considered rare (default: 2)
--json Output results as JSON
--out FILE Write JSON output to file
--no-banner Suppress banner
```
## 示例
**分流 conn.log:**
```
zeek-quick conn.log
```
**降低 beacon 阈值以提高灵敏度:**
```
zeek-quick conn.log --beacon-min 10 --beacon-jitter 0.2
```
**带有自定义高频阈值的 DNS 日志:**
```
zeek-quick dns.log --high-freq 50
```
**HTTP 日志,输出 JSON:**
```
zeek-quick http.log --json --out http_results.json
```
**SSL 日志,对管道友好:**
```
zeek-quick ssl.log --no-banner --json | jq '.self_signed'
```
**使用内置样本日志进行测试:**
```
zeek-quick samples/conn.log
zeek-quick samples/dns.log
zeek-quick samples/http.log
zeek-quick samples/ssl.log
```
## Beacon 检测
同时运行两种方法。如果满足以下任一条件,通信对将被标记。
**频率阈值**:标记连接次数超过 `--beacon-min` 的源/目标对。默认为 20 次连接。降低此值可捕获慢速 beacon。
**间隔方差**:计算连接间隔的变异系数(CV)。低 CV 意味着时间高度规律,这是一个强烈的 beacon 指标。默认阈值为 0.3(30% 的方差)。这可以捕获为了逃避简单频率检查而添加轻微抖动的 beacon。
两种方法独立报告,因此你可以查看触发了哪个条件。
## 日志格式支持
支持 Zeek TSV(默认)和 JSON 日志格式。TSV 格式需要 `#fields` 头部行。JSON 格式预期每行一个 JSON 对象(NDJSON)。
轮转或压缩的日志在使用前应先解压:
```
zcat conn.log.gz | zeek-quick /dev/stdin --type conn
```
## 样本日志
`samples/` 目录包含每种支持类型的脱敏示例日志。所有 IP 均使用 RFC 5737 文档范围(`192.0.2.x`、`198.51.100.x`、`203.0.113.x`),不包含任何真实的基础设施数据。
## 环境要求
- Python 3.8+
- `colorama`(可选,用于彩色输出)
- 除 stdlib 外无其他依赖
## 许可证
MIT。详见 [LICENSE](LICENSE)。
*作者 [0xPersist](https://github.com/0xPersist)*
标签:AMSI绕过, IP 地址批量处理, Python, Rootkit, Zeek, 命令行工具, 威胁检测, 安全运营, 扫描框架, 无后门, 日志分析