eugen-goebel/network-threat-analyzer

GitHub: eugen-goebel/network-threat-analyzer

结合规则签名与机器学习的离线网络威胁分析框架,支持 PCAP 和日志文件的威胁检测与报告生成。

Stars: 0 | Forks: 0

# 网络威胁分析器 多 Agent 网络威胁检测系统,结合基于规则的签名匹配与 ML 异常检测,用于分析 PCAP 文件和服务器日志。 ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3bb1edb17b025940.svg) ![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?logo=python&logoColor=white) ![Tests](https://img.shields.io/badge/Tests-54+-passing?color=brightgreen) ![scikit-learn](https://img.shields.io/badge/scikit--learn-1.5+-F7931E?logo=scikit-learn&logoColor=white) ![Streamlit](https://img.shields.io/badge/Streamlit-Dashboard-FF4B4B?logo=streamlit&logoColor=white) ![License: MIT](https://img.shields.io/badge/License-MIT-blue) ## 架构 ``` PCAP / Log Files │ ┌────┴────────┐ ▼ ▼ PCAP Parser Log Parser Phase 1-2: Parse input files (scapy) (regex) └──────┬──────┘ ▼ Feature Extractor Phase 3: 18 ML features per time window (pandas, numpy) ┌─────┴──────┐ ▼ ▼ Rule Engine Anomaly Detector Phase 4-5: Dual detection (signatures) (ML ensemble) └─────┬──────┘ ▼ Threat Classifier Phase 6: Merge, deduplicate, score 0-100 ▼ Report Generator Phase 7: DOCX report + charts ``` | Agent | 角色 | 技术 | |-------|------|-----------| | **PCAP Parser** | 从捕获文件中提取数据包、流和协议统计数据 | scapy | | **Log Parser** | 解析 syslog 和 Apache/Nginx 访问日志并进行严重性分类 | regex | | **Feature Extractor** | 计算每个时间窗口的 18 个流量特征以进行 ML 分析 | pandas, numpy | | **Rule Engine** | 基于签名的已知攻击模式检测 | Custom rules | | **Anomaly Detector** | 用于检测未知威胁的无监督 ML 集成模型 | scikit-learn | | **Threat Classifier** | 合并检测结果、去重并分配严重性评分 | Pydantic | | **Report Generator** | 创建包含嵌入式图表的专业 DOCX 报告 | python-docx, matplotlib | ## 检测能力 ### 基于规则的检测 | 威胁 | 检测方法 | 严重性 | |--------|-----------------|----------| | 垂直端口扫描 | 60 秒内单个目标被扫描端口 >20 个 | High | | 水平端口扫描 | 60 秒内同一端口探测 >10 个目标 | High | | SYN 扫描 | 单个来源的 SYN-only 数据包占比 >80% | Medium | | XMAS 扫描 | 带有 FIN+PSH+URG 标志的 TCP 数据包 | High | | SYN Flood | 10 秒内来自 >5 个源的 SYN 数据包 >100 个 | Critical | | UDP/ICMP Flood | 单个目标的流量超出阈值 | Critical/High | | SSH 暴力破解 | 60 秒内来自同一 IP 的失败登录 >5 次 | High | | HTTP 暴力破解 | 60 秒内向认证端点发送 >10 次 POST 请求 | High | | C2 Beaconing | 固定间隔连接(标准差 < 5s) | Critical | | 数据窃取 | 从内部 IP 向外部 IP 传输 >10MB 数据 | High | | 恶意端口 | 已知后门端口(4444, 1337, ...)上的流量 | High | ### ML 异常检测 | 算法 | 优势 | 权重 | |-----------|----------|--------| | Isolation Forest | 高维数据中的全局异常 | 0.4 | | Local Outlier Factor | 基于局部密度的异常 | 0.35 | | One-Class SVM | 正常行为的决策边界 | 0.25 | 集成模型采用多数投票机制 —— 当 2 个以上模型达成一致时,该时间窗口被标记。 ## 功能特性 - **双重检测**:基于规则的签名 + 无监督 ML 集成模型 - **PCAP 分析**:深度包检测(协议、标志、载荷) - **多格式日志解析**:Syslog, Apache/Nginx 访问日志 - **18 项特征提取**:每个时间窗口的熵、比率、速率、流统计 - **严重性评分**:0-100 分制,自动优先级排序 - **交互式仪表板**:具备实时分析功能的 Streamlit 界面 - **专业报告**:包含嵌入式图表的 DOCX 输出 - **演示模式**:预置样本数据,便于快速探索 ## 快速开始 ``` # Clone the repo git clone https://github.com/eugen-goebel/network-threat-analyzer.git cd network-threat-analyzer # 设置环境 python3 -m venv venv && source venv/bin/activate pip install -r requirements.txt # 运行 demo 分析 python main.py --demo # 分析您的 own 文件 python main.py capture.pcap server.log # 启动 dashboard streamlit run app.py ``` ## 仪表板 Streamlit 仪表板提供以下功能: - 实时威胁指标(总数、Critical、High 计数) - 具备严重性筛选功能的交互式威胁表格 - 协议分布图表 - 带有异常高亮的流量时间线 - DOCX 报告下载 ## 测试 ``` pytest -v ``` 54+ 个测试覆盖所有 Agent、规则、ML Pipeline 和报告生成。测试无需外部依赖。 ## 样本数据 包含的样本数据含有刻意设计的攻击模式: | 模式 | 来源 | 详情 | |---------|--------|---------| | 端口扫描 | 192.168.1.100 | 顺序扫描端口 1-80 | | SYN Flood | 172.16.0.x (15 IPs) | 10 秒内 80 个 SYN 数据包 | | C2 Beaconing | 192.168.1.50 | 60 秒间隔连接至端口 8888 | | SSH 暴力破解 | 10.99.88.77 | 15 次失败尝试 + 1 次成功 | | 目录遍历 | 10.99.88.77 | ../../etc/passwd 探测 | | 侦察扫描 | 203.0.113.50 | /wp-admin, /.env, /.git 探测 | 生成新的样本数据: ``` python data/generate_samples.py ``` ## 项目结构 ``` network-threat-analyzer/ ├── main.py CLI entry point ├── app.py Streamlit dashboard ├── agents/ │ ├── orchestrator.py 7-phase pipeline coordinator │ ├── pcap_parser.py PCAP file parser (scapy) │ ├── log_parser.py Syslog/Apache log parser │ ├── feature_extractor.py ML feature computation │ ├── rule_engine.py Rule dispatch engine │ ├── anomaly_detector.py ML ensemble detector │ ├── threat_classifier.py Threat scoring and classification │ └── mock_data.py Demo mode data ├── models/ │ ├── network.py Network data models │ ├── threats.py Threat detection models │ └── reports.py Report structure models ├── rules/ │ ├── port_scan.py Port scan signatures │ ├── ddos.py DDoS pattern rules │ ├── brute_force.py Brute force detection │ └── suspicious_connections.py C2, exfiltration, malicious ports ├── utils/ │ ├── visualization.py Chart generation │ └── report_generator.py DOCX report builder ├── data/ │ ├── generate_samples.py Sample data generator │ ├── sample_capture.pcap Demo PCAP file │ ├── sample_syslog.log Demo syslog │ └── sample_apache.log Demo Apache log └── tests/ 54+ tests ``` ## 技术栈 | 组件 | 技术 | |-----------|-----------| | 数据包分析 | scapy | | ML 检测 | scikit-learn (Isolation Forest, LOF, One-Class SVM) | | 特征工程 | pandas, numpy | | 仪表板 | Streamlit | | 报告 | python-docx, matplotlib | | 类型安全 | Pydantic v2 | | 测试 | pytest | ## 报告章节 1. 执行摘要 2. 流量概览 3. 协议分析 4. 威胁摘要表(颜色编码的严重性) 5. 详细威胁分析(证据、IP、建议) 6. 时间线分析 7. 建议(按优先级排序的行动项) 8. 方法论 ## 许可证 MIT
标签:Apache日志, Apex, Beacon Object File, CISA项目, Cloudflare, IP 地址批量处理, Kubernetes, MITRE ATT&CK, Nginx日志, PCAP分析, Python, Scapy, Scikit-learn, Streamlit, Syslog解析, 信令特征, 协议分析, 单类SVM, 多智能体, 威胁分析, 威胁情报, 孤立森林, 安全仪表盘, 安全规则引擎, 局部异常因子, 开发者工具, 异常检测, 无后门, 无监督学习, 机器学习, 权限提升, 网络安全, 自动化侦查工具, 自动化报告, 访问控制, 逆向工具, 隐私保护, 集成学习