TheVoidThatConsumes/suReader
GitHub: TheVoidThatConsumes/suReader
一个轻量级 Python 命令行工具,用于流式解析 Suricata EVE JSON 警报日志并生成多维度分析报告。
Stars: 1 | Forks: 0
# SuReader
一个用于分析 Suricata EVE JSON 警报日志的命令行工具。
采用流式架构设计,可高效处理大型日志文件(700MB+)——文件仅被读取一次,且绝不会完全加载到内存中。
## 功能
| 命令 | 显示内容 |
|---|---|
| `summary` | 警报总数、严重程度分布、热门签名、协议、端口、以及按小时统计的时间线 |
| `top-ips` | 按警报数量排名靠前的源 IP 和目标 IP |
| `suspicious` | 被标记为端口扫描、暴力破解或自动化扫描行为的 IP |
| `search` | 按 IP 地址或签名关键字过滤警报 |
| `report` | 输出包含上述三种分析视图的完整组合报告 |
所有命令均支持 `--export`,可将输出结果保存为 `.txt` 文件并存放在 `reports/` 文件夹中。
## 环境要求
- Python 3.10 或更高版本
- 无需外部依赖 —— 仅使用标准库
## 安装说明
1. 克隆或下载此代码仓库
2. `elogs/` 文件夹中已包含两个演示日志文件:
- `elogs/honeypot.json` —— 真实的蜜罐流量捕获
- `elogs/conference.json` —— 来自某安全会议的网络流量
3. 直接使用 Python 运行任意命令 —— 无需安装
```
elogs/
honeypot.json ← included demo file
conference.json ← included demo file
reports/ ← exported reports saved here automatically
main.py
README.md
```
## 用法
```
# 使用附带的 demo files 立即尝试
python main.py summary elogs/honeypot.json
python main.py top-ips elogs/conference.json --count 10
python main.py suspicious elogs/honeypot.json
python main.py search elogs/honeypot.json --ip 192.168.1.5
python main.py search elogs/conference.json --signature "ET SCAN"
python main.py report elogs/honeypot.json
```
### 导出报告
```
# 使用 timestamp 自动命名
python main.py summary elogs/honeypot.json --export
# 自定义 filename
python main.py summary elogs/honeypot.json --export my_summary.txt
# 导出 full report
python main.py report elogs/honeypot.json --export full_report.txt
```
报告将始终保存到 `reports/` 文件夹中;如果该文件夹不存在,则会自动创建。
## 使用您自己的日志文件
将任何 Suricata EVE JSON 日志文件放入 `elogs/` 文件夹,并对其运行相同的命令即可。
如果您尚未运行 Suricata 实例,可以使用以下来源提供的真实 EVE JSON 日志用于分析和研究:
- **Malware Traffic Analysis** —— 包含恶意软件感染期间 EVE 日志的真实数据包捕获
https://www.malware-traffic-analysis.net
- **带有 Suricata 输出的 PCAP 样本** —— 社区维护的网络捕获集合
https://www.netresec.com/?page=PcapFiles
- **Evebox 示例数据集** —— 与 Evebox SIEM 项目共享的 EVE JSON 文件
https://github.com/jasonish/evebox
- **Suricata 文档测试文件** —— 来自 Suricata 项目的官方示例日志
https://suricata.io/download
- **SecurityOnion 示例数据** —— SecurityOnion 发行版中自带的 EVE JSON 日志
https://securityonionsolutions.com
要生成您自己的 EVE 日志,请安装 Suricata 并使用 `suricata -r yourfile.pcap` 对任意 `.pcap` 文件运行它。Suricata 会自动在其日志目录中生成 `eve.json`。
## 示例输出
```
============================================================
EVE LOG SUMMARY
============================================================
Total alerts: 48,921
Severity breakdown:
High (1): 3,204
Medium (2): 31,445
Low (3): 14,272
Top 10 alert signatures:
[8431] ET SCAN Nmap Scripting Engine User-Agent Detected
[6102] ET POLICY PE EXE or DLL Windows file download
...
Protocols seen:
TCP: 41,203
UDP: 7,718
Alert timeline (per hour):
2024-01-15 08:00: 1,204
2024-01-15 09:00: 3,891
...
```
```
============================================================
SUSPICIOUS ACTIVITY FINDINGS
============================================================
[Possible port scan]
Source IP : 203.0.113.45
Detail : Hit 47 distinct destination ports
[Possible brute-force / repeated probing]
Source IP : 198.51.100.12
Detail : Triggered "ET SCAN SSH BruteForce" 312 times
```
## 如何处理大型文件
该工具不会将整个日志文件加载到内存中,而是使用带有 8MB 读取缓冲区的生成器逐行读取文件。只需对文件进行一次遍历即可收集每个命令所需的所有数据——因此即使是 700MB 的日志也能被高效处理,而无需占用大量 RAM。
`search` 命令使用其独立的流式处理过程,因此无需等待整个文件读取完毕即可立即打印结果。
## 可疑活动检测
系统会自动应用三种启发式检测:
**端口扫描** —— 如果单个源 IP 针对 10 个或更多不同的目标端口,则会被标记为可能的端口扫描。
**暴力破解 / 重复探测** —— 如果某个源 IP 触发同一警报签名达 5 次或以上,则会被标记为可能的暴力破解活动。
**自动化扫描器** —— 如果某个源 IP 触发 5 种或以上不同类型的警报,则会被标记为可能的自动化扫描器。
默认情况下,阈值设置较为保守,您可以直接在 `find_suspicious_activity()` 函数中对其进行调整。
## 展示技能
- 使用 argparse 子命令的 Python CLI 设计
- 针对大文件处理的内存高效流式架构
- 日志解析与事件关联
- 基于启发式算法的威胁检测
- Suricata EVE JSON 格式及网络安全监控理念
标签:AMSI绕过, IP 地址批量处理, Python, Suricata, 威胁检测, 安全运营, 扫描框架, 插件系统, 无后门, 现代安全运营, 逆向工具