lucaaccomando/adaptive-threat-hunt

GitHub: lucaaccomando/adaptive-threat-hunt

一个基于机器学习与 Flask 仪表板的自适应网络威胁狩猎与 CTF 教学平台。

Stars: 0 | Forks: 0

# 🕵️‍♂️ 自适应威胁狩猎 ### 机器学习驱动的网络异常检测 ![Python](https://img.shields.io/badge/Python-3.12-blue?logo=python) ![Scikit-learn](https://img.shields.io/badge/Scikit--learn-1.5-orange?logo=scikitlearn) ![Flask](https://img.shields.io/badge/Flask-3.0-black?logo=flask) ![Docker](https://img-shields.io/badge/Docker-ready-2496ED?logo=docker) ![Dataset](https://img.shields.io/badge/Dataset-NSL--KDD-green) ![License](https://img.shields.io/badge/License-MIT-yellow) Adaptive Threat Hunt 是一个网络安全研究项目,使用 **Python**、**Scapy**、**Scikit-learn** 和 **Flask** 捕获、分析和检测异常网络流量,并使用 **Docker** 容器化以实现可重复部署。 该项目在 **NSL-KDD** 入侵检测数据集上对三种无监督异常检测模型进行基准测试,并通过交互式 Flask 仪表板展示结果。 ## 📊 基准测试结果(NSL-KDD) | 模型 | F1 | 精确率 | 召回率 | 准确率 | ROC-AUC | 训练时间 | |---|---|---|---|---|---|---| | Isolation Forest | 0.4476 | **0.9535** | 0.2924 | 0.5891 | **0.8701** | 1.4s | | Local Outlier Factor | **0.6245** | 0.7464 | **0.5369** | **0.6325** | 0.6834 | 16.7s | | One-Class SVM | 0.4191 | 0.8276 | 0.2806 | 0.5572 | 0.7764 | 1.7s | 🏆 **最佳 F1:**Local Outlier Factor · 🎯 **最佳 ROC-AUC:**Isolation Forest 要重现结果: ``` python models/evaluate.py ``` ## 🚀 功能特性 - 基于 `.pcap` 或实时网络流量分析 - 自动特征提取(包大小、熵、到达间隔时间、流统计) - 多模型异常检测:**Isolation Forest**、**Local Outlier Factor**、**One-Class SVM** - 使用 NSL-KDD 进行精确率/召回率/F1/ROC-AUC 基准测试的模型评估流水线 - 用于实时可视化和模型比较的 Flask 仪表板 - 完全容器化环境,支持可重复部署 ## 🧠 技术栈 | 层级 | 技术 | |--------|-------------| | 语言 | Python 3.12 | | 框架 | Flask 3.0 | | 网络捕获 | Scapy / tcpdump | | 机器学习与分析 | Scikit-learn、Pandas、NumPy | | 容器化 | Docker & Docker Compose | | 数据集 | NSL-KDD(UNB) | ## 🧩 项目结构 ``` adaptive-threat-hunt/ ┣ dashboard/ # Flask web interface ┣ feature_extractor/ # Packet feature extraction (Scapy) ┣ models/ ┃ ┣ evaluate.py # Multi-model benchmark on NSL-KDD ┃ ┣ train.py # Train a selected model (IF / LOF / OCSVM) ┃ ┗ score.py # Score new traffic against a trained model ┣ results/ ┃ ┗ benchmark.json # Saved benchmark metrics ┣ data/ # Sample pcap files ┣ Dockerfile ┣ docker-compose.yml ┣ requirements.txt ┣ RESULTS.md # Full benchmark analysis ┗ README.md ``` ## ⚙️ 安装与使用 ### 1️⃣ 克隆仓库 ``` git clone https://github.com/lucaaccomando/adaptive-threat-hunt.git cd adaptive-threat-hunt ``` ### 2️⃣ 创建虚拟环境并安装依赖 ``` python -m venv .venv source .venv/Scripts/activate # Windows (Git Bash) # 或者:source .venv/bin/activate # macOS / Linux python -m pip install -r requirements.txt ``` ### 3️⃣ 运行多模型基准测试 ``` python models/evaluate.py ``` NSL-KDD 会在首次运行时自动下载(约 1MB),结果将保存至 `results/benchmark.json`。 ### 4️⃣ 训练特定模型 ``` python models/train.py --model-type isolation_forest # or: lof, ocsvm ``` ### 5️⃣ 启动 Flask 仪表板 ``` python dashboard/app.py ``` 然后打开:👉 **http://localhost:5000** ### 6️⃣ (可选)通过 Docker 运行 ``` docker build -t adaptive-threat-hunt . docker run -p 5000:5000 adaptive-threat-hunt ``` 进行实时数据包捕获(需要提升权限): ``` sudo docker run --network host --cap-add=NET_ADMIN --cap-add=NET_RAW adaptive-threat-hunt ``` ## 🧰 注意事项 ### 文件路径 所有脚本使用相对路径。如果看到绝对路径(如 `/home/user/...`),请替换为: ``` import os BASE_DIR = os.path.dirname(__file__) pcap_path = os.path.join(BASE_DIR, '../data/example.pcap') ``` ### 模型文件 如果缺少 `model.pkl`,请使用以下命令重新生成: ``` python models/train.py --model-type isolation_forest ``` ## 💡 后续改进计划 - 通过精确-召回曲线分析进行阈值调整 - 使用半监督模型(XGBoost / 随机森林)提升召回率 - 集成 ELK 栈以实现安全事件可视化 - 通过 Webhook 或电子邮件通知实现实时告警 - 提供用于探索性分析和特征可视化的 Jupyter 笔记本 - 扩展加密流量的特征工程 ## 📜 许可证 MIT 许可证 © 2025 Luca Accomando ## 🤝 致谢 作为一项网络安全研究项目而开发,旨在探索用于入侵检测的自适应机器学习方法。 数据集:[NSL-KDD — University of New Brunswick](https://www.unb.ca/cic/datasets/nsl.html)
标签:Apex, Caido项目解析, Docker, F1, Flask, Isolation Forest, Local Outlier Factor, NIDS, NSL-KDD, One-Class SVM, PCAP分析, Python, ROC-AUC, Scapy, Scikit-learn, 交互式仪表板, 召回率, 可重现部署, 安全防御评估, 实时分析, 容器化, 异常检测, 无后门, 无监督学习, 机器学习, 机器学习驱动, 模型评估, 特征提取, 精准度, 网络安全, 网络异常检测, 网络流量分析, 训练时间, 请求拦截, 赛题练习, 逆向工具, 隐私保护