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, 威胁检测, 安全运营, 扫描框架, 插件系统, 无后门, 现代安全运营, 逆向工具