koushikchowdary6/network-anomaly-detector
GitHub: koushikchowdary6/network-anomaly-detector
利用 Isolation Forest 对 NetFlow 流量进行无监督异常检测,无需标签即可标记端口扫描、数据外泄和 DoS 等异常行为。
Stars: 0 | Forks: 0
# 网络异常检测器 📡🌲
[](https://github.com/koushikchowdary6/network-anomaly-detector/actions/workflows/ci.yml)
使用 **Isolation
Forest** 的网络流量**无监督**异常检测。它会学习正常 NetFlow 格式流量的特征,并标记
异常值——如端口扫描突发、数据外泄、DoS 泛洪——**而完全无需告知
哪些流量属于攻击**。这正是无监督
检测对于 SOC 的意义所在:它可以发现那些基于特征规则的系统或
在旧标签上训练的监督模型所遗漏的新型
攻击。
## 每个流量的特征
`duration`, `src_bytes`, `dst_bytes`, `src_pkts`, `dst_pkts`, `pkts_per_sec` —
标准的 NetFlow 字段。重尾分布的字节/数据包计数会在
模型读取之前进行对数缩放和
标准化处理 (`src/detector.py`)。
## 快速开始
```
pip install -r requirements.txt
PYTHONPATH=src python src/evaluate.py
```
```
from data import generate
from detector import AnomalyDetector
X, y = generate() # y is only for scoring, not training
det = AnomalyDetector().fit(X) # unsupervised
det.predict(X) # 1 = anomaly, 0 = normal
det.anomaly_score(X) # higher = more anomalous
```
## 结果
在内置的合成数据集(4000 条流量,5% 异常)上,检测器
以极高的 ROC-AUC 和 F1 分数恢复了注入的攻击——同时在训练期间从未查看过
标签。
## 测试
```
PYTHONPATH=src python -m pytest tests/ -v
```
5 项测试涵盖了数据集生成、二元预测、异常评分
高于正常流量,以及明显的 DoS 特征流量被
正确标记。
## ⚠️ 关于数据的诚实声明
数据集 (`src/data.py`) 是**合成的**,其中的异常值提取自
刻意区分的类攻击分布——因此模型在此处得分非常
高。真实流量(CICIDS, UNSW-NB15)更为杂乱,数值也会
更低;带有标签的抓包数据体积庞大且受授权限制,因此使用合成生成器
来实现可复现的离线 pipeline。如果将它们指向真实的流量 CSV 文件,特征提取和模型代码
将保持不变。
## 作者
Koushik Chowdary — [LinkedIn](https://linkedin.com/in/koushik-chowdary) · [GitHub](https://github.com/koushikchowdary6)
标签:Apex, 孤立森林, 安全规则引擎, 异常检测, 插件系统, 无监督学习, 机器学习, 网络安全, 网络流量分析, 逆向工具, 隐私保护