eugen-goebel/network-threat-analyzer
GitHub: eugen-goebel/network-threat-analyzer
结合规则签名与机器学习的离线网络威胁分析框架,支持 PCAP 和日志文件的威胁检测与报告生成。
Stars: 0 | Forks: 0
# 网络威胁分析器
多 Agent 网络威胁检测系统,结合基于规则的签名匹配与 ML 异常检测,用于分析 PCAP 文件和服务器日志。






## 架构
```
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, 多智能体, 威胁分析, 威胁情报, 孤立森林, 安全仪表盘, 安全规则引擎, 局部异常因子, 开发者工具, 异常检测, 无后门, 无监督学习, 机器学习, 权限提升, 网络安全, 自动化侦查工具, 自动化报告, 访问控制, 逆向工具, 隐私保护, 集成学习