dheerajramasahayam/ai-network-threat-detection

GitHub: dheerajramasahayam/ai-network-threat-detection

该项目是一个漂移自适应企业网络入侵检测基准研究库,旨在解决机器学习IDS模型在跨域流量分布偏移下的性能退化问题。

Stars: 1 | Forks: 0

# 面向企业网络的漂移自适应入侵检测 ## 摘要 本代码库被组织为一个可复现的研究项目,旨在针对多个公开基准进行企业网络威胁检测。它将 `UNSW-NB15`、`NSL-KDD`、`CICIDS2017` 和 `CSE-CIC-IDS2018` 对齐为共享的 41 特征流表示,比较了标准的 IDS 和 ML 基线,并在混合集成模型之上添加了在线漂移自适应控制器。 该基准目前研究了六种配置: - `Signature IDS` - `Random Forest` - `LSTM` - `Transformer` - `Drift-Aware Hybrid (static stack)` - `Drift-Adaptive Hybrid` (作为部署阶段的升级方案) 关键的改进不仅在于堆栈,还在于在线漂移自适应以及正式的漂移检测器研究。在完整的外部 `CICIDS2017` 语料库上,静态混合模型的加权 `F1` 得分为 `61.35%`,而在线 `Drift-Adaptive Hybrid` 在不重新训练基础检测器的情况下将其提升至 `68.69%`。对 `Isolation Forest`、`ADWIN`、`DDM` 和 `Page-Hinkley` 的正式比较表明,`Isolation Forest` 是该基准中最强的检测器,其在自适应后的加权 `F1` 达到 `70.58%`,且在源域中的误报数为 `0`。 ## 发布产物 本代码库以论文优先的 GitHub 研究发布形式打包。主要入口点包括: - `paper/ieee_paper.pdf`:权威的 IEEE 风格手稿 - `research_paper.pdf`:同一 PDF 在根目录的镜像副本 - `paper/ieee_paper.tex` 和 `paper/references.bib`:完整的 LaTeX 源码 - `submission/`:可随时上传的 IEEE 提交包 - `RELEASE.md`:发布清单、验证步骤和发布检查表 - `results/advanced_experiment_summary.json` 和 `results/` 目录:测量的实验输出结果 ## 问题陈述 传统的 IDS 引擎在处理确定性的已知特征时表现优异,但当流量分布发生偏移或攻击与现有规则不匹配时,其泛化能力较差。当部署时的数据流偏离源域训练分布时,静态的学习模型也会发生性能退化。本项目旨在研究可复现的在线自适应层是否能在保持系统易于部署的同时,挽回部分性能损失。 ## 数据集 | 数据集 | 行数 | 本仓库使用的划分 | 标签空间 | | --- | --- | --- | --- | | `UNSW-NB15` | `257,673` | 官方 `82,332` 训练 / `175,341` 测试 | 将 `10` 种攻击家族归并为二分类攻击检测 | | `NSL-KDD` | `148,517` | 官方 `125,973` 训练 / `22,544` 测试 | 将 `40` 个符号标签归并为二分类攻击检测 | | `CICIDS2017` | `2,830,743` | 用于迁移评估的完整外部语料库 | `15` 种流量标签 | | `CSE-CIC-IDS2018` | `505,156` 行清洗后数据 | 用于迁移评估的第二个外部语料库 | `14+` 种流量标签 | 补充材料: - `dataset/README.md` - `dataset/preprocessing.ipynb` - `notebooks/feature_engineering.ipynb` ## 方法论 所有数据集都被映射到定义在 `src/preprocessing.py` 中并通过 `training/canonical_pipeline.py` 实现的规范的 41 特征流 schema。该特征集包括流持续时间、数据包计数、字节数、速率特征、包间到达时间、数据包长度矩、TCP 标志计数和初始窗口大小。 提出的方法分为两层: 1. `Drift-Aware Hybrid (静态)` 在 `Signature IDS`、`Random Forest`、`LSTM`、`Transformer` 以及来自 `IsolationForest` 的漂移信号之上学习一个堆叠的元分类器。 2. `Drift-Adaptive Hybrid` 离线推导稳定和受压的集成权重状态,随后在实时数据流中随着观察到的漂移分数升高,在线进行状态间的插值。 这使得该贡献比纯粹的堆叠基准更为强大,因为系统能够在推理阶段进行自适应,而不是在训练后保持固定。 部署的集成模型遵循: ``` p(x_t) = Σ w_i(t) · M_i(x_t) w_i(t) ∝ (1 − α_t) · w_i(stable) + α_t · w_i(stressed) ``` 其中 `α_t` 是在线漂移系数。代码库中现在还包含了一项明确的检测器消融研究,在相同的自适应控制器下比较了 `Isolation Forest`、`ADWIN`、`DDM` 和 `Page-Hinkley`。 ## 模型架构 ### Signature IDS 一种基于规范特征的确定性流特征引擎。它作为提供流记录而非原始数据包负载的数据集的传统 IDS 基线。 ### Random Forest 经典的表格数据集成基线,也是该套件中最快的学习模型。 ### LSTM 一种循环检测器,将特征向量视为有序序列,并在 `NSL-KDD` 和迁移基准上表现强劲。 ### Transformer 一种基于相同特征序列的自注意力检测器,作为更强大的基于注意力的深度学习基线纳入。 ### Drift-Adaptive Hybrid 本代码库引入的新方法。它从静态混合堆栈开始,针对训练参考分布估计漂移,并在外部数据流偏离源域状态时在线重新加权集成模型。 源文件: - `models/signature_ids.py` - `models/random_forest.py` - `models/lstm_model.py` - `models/transformer_model.py` - `models/drift_aware_hybrid.py` ## 实验 使用以下命令运行升级后的研究 pipeline: ``` bash run_training.sh --epochs 1 --batch-size 128 --rf-trees 60 --cicids-sample-size 0 python3 evaluation/run_full_transfer_evaluation.py python3 evaluation/run_cse_cic_ids2018_transfer_evaluation.py python3 evaluation/run_drift_detector_study.py python3 evaluation/run_failure_case_analysis.py python3 evaluation/realtime_streaming_evaluation.py --source file --chunksize 100000 --max-chunks 5 python3 evaluation/run_realtime_case_study.py ``` 完整的脚本化基准训练了所有基础检测器,并评估了: 1. 完整的官方 `UNSW-NB15` 2. 完整的官方 `NSL-KDD` 3. 从 `UNSW-NB15 + NSL-KDD` 到 `CICIDS2017` 的外部迁移 4. 到 `CSE-CIC-IDS2018` 的第二次外部迁移 5. 正式的漂移检测器比较 6. 在外部数据流上的在线漂移自适应 7. 负载下的延迟和可解释性消融产物 8. 针对主要外部攻击类型的家族级失败分析 9. 带有漂移时间线输出的实时流式评估 10. 来自本地实时追踪的 packet-capture 重放案例研究 对于从 Kafka 进行的流式摄取: ``` python3 evaluation/realtime_streaming_evaluation.py \ --source kafka \ --kafka-bootstrap-servers localhost:9092 \ --kafka-topic network_flows ``` Kafka 消息应包含规范的 41 特征 schema 加上二元的 `label`,或者 CICIDS 风格的特征名称加上 `Label`。 ## 结果 ### 官方 UNSW-NB15 | 模型 | 准确率 | 精确率 | 召回率 | F1 分数 | ROC AUC | 延迟 (ms/flow) | | --- | --- | --- | --- | --- | --- | --- | | Drift-Aware Hybrid (静态) | 90.53% | 91.60% | 90.53% | 90.72% | 0.9816 | 0.1804 | | Random Forest | 90.46% | 91.55% | 90.46% | 90.65% | 0.9792 | 0.0068 | | LSTM | 72.84% | 83.67% | 72.84% | 73.60% | 0.9065 | 0.0780 | | Transformer | 71.15% | 83.42% | 71.15% | 71.87% | 0.8800 | 0.1040 | | Signature IDS | 68.06% | 46.32% | 68.06% | 55.13% | 0.7418 | 0.0004 | ### 官方 NSL-KDD | 模型 | 准确率 | 精确率 | 召回率 | F1 分数 | ROC AUC | 延迟 (ms/flow) | | --- | --- | --- | --- | --- | --- | --- | | LSTM | 81.08% | 85.23% | 81.08% | 81.01% | 0.9288 | 0.0743 | | Transformer | 80.61% | 85.04% | 80.61% | 80.52% | 0.9346 | 0.0862 | | Drift-Aware Hybrid (静态) | 79.23% | 84.52% | 79.23% | 79.06% | 0.9508 | 0.1845 | | Random Forest | 77.71% | 83.75% | 77.71% | 77.44% | 0.9366 | 0.0074 | | Signature IDS | 54.66% | 51.32% | 54.66% | 49.47% | 0.3541 | 0.0004 | ### 跨数据集迁移:`UNSW-NB15 + NSL-KDD -> CICIDS2017` | 模型 | 准确率 | 精确率 | 召回率 | F1 分数 | ROC AUC | 延迟 (ms/flow) | | --- | --- | --- | --- | --- | --- | --- | | LSTM | 80.30% | 64.48% | 80.30% | 71.53% | 0.2904 | 0.0406 | | Transformer | 80.23% | 64.58% | 80.23% | 71.49% | 0.4886 | 0.0762 | | Drift-Adaptive Hybrid | 74.26% | 64.13% | 74.26% | 68.69% | 0.4041 | 0.2630 | | Random Forest | 58.51% | 65.55% | 58.51% | 61.53% | 0.4621 | 0.0060 | | Signature IDS | 53.34% | 68.33% | 53.34% | 58.09% | 0.4716 | 0.0004 | ### 在线漂移自适应 最强劲的新结果是外部数据流上的部署阶段自适应消融: | 变体 | 准确率 | 精确率 | 召回率 | F1 分数 | ROC AUC | | --- | --- | --- | --- | --- | --- | | 静态混合模型 | 57.65% | 67.10% | 57.65% | 61.35% | 0.4755 | | 在线漂移自适应混合模型 | 74.26% | 64.13% | 74.26% | 68.69% | 0.4041 | 这是在全语料库外部漂移下,相较于静态混合模型获得的 `+7.34` 加权 `F1` 提升,且无需重新训练已训练好的基础模型。 测得的平均推理延迟从静态混合模型的 `0.1240 ms/flow` 上升至在线控制器的 `0.2630 ms/flow`,因此其增益主要体现在分布偏移下的鲁棒性,而非纯粹的速度。 产物: - `results/transfer_unsw_nsl_to_cicids_online_drift_adaptation.csv` - `results/transfer_unsw_nsl_to_cicids_online_drift_adaptation.md` - `results/transfer_unsw_nsl_to_cicids_online_drift_adaptation.png` ### 正式漂移检测器研究 代码库现在包含了在相同自适应混合控制器下对漂移检测器的直接比较: | 漂移检测器 | 检测延迟 (窗口) | 误报数 | 自适应后 F1 | | --- | --- | --- | --- | | Isolation Forest | 2 | 0 | 70.58 | | DDM | 0 | 0 | 69.77 | | Page-Hinkley | 0 | 0 | 69.77 | | ADWIN | 未检测到 | 0 | 62.93 | 这消除了审稿人对于“为什么选择这种检测器?”的明显批评,并保留了实际的区分:`Isolation Forest` 依然是无标签依赖的,而基于错误流的检测器则需要标签后反馈。 产物: - `results/drift_detector_study.csv` - `results/drift_detector_study.md` - `results/drift_detector_study.png` ### 额外的外部评估:`CSE-CIC-IDS2018` 代码库现在包含了第二个现代的外部数据集。在从本地副本中移除了 `59` 行重复的表头后,清理后的基准包含 `505,156` 行(`50,000` 行正常,`455,156`攻击)。 | 模型 | 准确率 | F1 分数 | ROC AUC | | --- | --- | --- | --- | | Signature IDS | 57.95% | 66.37% | 0.5573 | | 静态混合模型 | 22.55% | 27.91% | 0.5025 | | Random Forest | 22.45% | 27.58% | 0.5353 | | Drift-Adaptive Hybrid | 11.89% | 7.39% | 0.3870 | | Transformer | 9.88% | 2.06% | 0.2637 | | LSTM | 9.90% | 1.78% | 0.2334 | 这是一个故意设置的高难度结果。特征基线成为了该语料库上表现最好的模型,这让论文中关于迁移的声明更具可信度,因为它展示了仅基于源域训练的学习模型在何处依然会失败。 产物: - `results/transfer_unsw_nsl_to_cse_cic_ids2018_model_comparison.md` - `results/transfer_unsw_nsl_to_cse_cic_ids2018_online_drift_adaptation.md` - `results/transfer_unsw_nsl_to_cse_cic_ids2018_summary.json` ### 失败分析 代码库现在包含了对主要的 `CICIDS2017` 攻击类型的攻击家族失败分析,并将其作为二元家族与正常流量的任务进行评估: | 攻击类型 | 支持度 | LSTM F1 | Drift-Adaptive Hybrid F1 | | --- | --- | --- | --- | | FTP-Patator | 7,938 | 0.0000 | 0.1793 | | SSH-Patator | 5,897 | 0.0000 | 0.0194 | | DoS GoldenEye | 10,293 | 0.0000 | 0.0015 | | DDoS | 128,027 | 0.0000 | 0.0010 | | DoS Hulk | 231,073 | 0.0000 | 0.0008 | | PortScan | 158,930 | 0.0000 | 0.0000 | 该结果故意呈现出不乐观的一面:在源域上训练的 `LSTM` 在所有六个主要的外部攻击家族上都崩溃了,而自适应混合模型仅在 `FTP-Patator` 上恢复了有意义的信号,并在 `SSH-Patator` 上恢复了一小部分。这使得论文更加严谨,因为它准确记录了迁移依然失效的具体环节。 产物: - `results/transfer_unsw_nsl_to_cicids_failure_case_analysis.md` - `results/transfer_unsw_nsl_to_cicids_failure_case_analysis.png` ### 真实世界数据包重放案例研究 代码库现在包含了使用本地文件对进行重放的数据包捕获验证: - `dataset/raw/new_2026/realtime_ids/RTN_traffic_dataset.csv` - `dataset/raw/new_2026/realtime_ids/RealTimeNetworkTrafficCapture.pcapng` 该追踪数据是从模拟企业流量的受控内部实验室环境中收集的。 运行器将数据包追踪聚合为一秒的双向流时间窗口,并通过迁移训练的自适应混合模型进行重放: ``` python3 evaluation/run_realtime_case_study.py ``` 验证后的案例研究结果: - 重放了 `221,253` 行数据包记录 - `201` 个一秒的双向流时间窗口 - `10` 秒正常预热,`35` 秒攻击,`10` 秒正常冷却 - 主要攻击路径:`192.168.76.9 -> 192.168.12.56:3000/UDP` - 混合模型检测延迟:`0` 秒 - 攻击开始时的主要攻击流概率:`0.5382` - 攻击期间的主要攻击流概率:均值 `0.5596`,范围 `[0.5382, 0.5703]` - `Drift-Adaptive Hybrid` 流时间窗口加权 `F1`:`98.05%` - `Signature IDS` 流时间窗口加权 `F1`:`5.16%` 这是代码库中最具操作性的产物,因为它从数据包级别的证据出发,而不是预先工程化的基准表,并展示了控制器对真实重放攻击事件的反应。 产物: - `results/realtime_service_case_study.md` - `results/realtime_service_case_study_timeline.csv` - `results/realtime_service_case_study.png` - `results/realtime_service_case_study.json` ### 实时流式评估 代码库现在包含了一个显式的实时评估循环,它既可以在基于文件的流式数据块上运行,也可以在 Kafka topic 上运行。在完整的基于文件的 `CICIDS2017` 数据流上,在线的 `Drift-Adaptive Hybrid` 处理了跨 `29` 个连续窗口的 `2,830,743` 行数据,并匹配了完整语料库的迁移得分:`74.26%` 准确率,`68.69%` 加权 `F1`,以及 `0.4041` `ROC AUC`。 基于窗口的行为被特意单独报告,因为它揭示了操作上的漂移模式,而不仅仅是最终的汇总分数。在经过验证的完整数据流运行中,窗口的平均 `F1` 为 `73.80%`,平均自适应 alpha 为 `0.9985`,并且控制器几乎立即进入了受压状态(在第一个窗口中为 `0.9572`,随后几乎在整个数据流期间保持 `1.0000`)。 产物: - `results/transfer_unsw_nsl_to_cicids_realtime_stream_timeline.csv` - `results/transfer_unsw_nsl_to_cicids_realtime_streaming_evaluation.md` - `results/transfer_unsw_nsl_to_cicids_drift_timeline.png` ### 解释 - 静态 `Drift-Aware Hybrid` 在官方的 `UNSW-NB15` 划分上依然是最好的。 - `LSTM` 依然是 `NSL-KDD` 和外部迁移基准上表现最好的模型。 - 新的研究成果是,在线漂移自适应在完全的外部偏移下显著提升了混合模型的性能。 - 经实验证明,`Isolation Forest` 是该基准中最强的漂移检测器。 - 第二个外部 `CSE-CIC-IDS2018` 评估表明,仅基于源域学习到的迁移模型在更新的语料库上仍可能崩溃。 - 跨数据集的泛化仍然很困难,但自适应层挽回了部分差距。 ### 与近期工作的定位对比 该代码库现在明确地将自己与近期的 IDS 原创研究论文进行了对比: | 研究 | 年份 | 设定 | 报告结果 | | --- | --- | --- | --- | | Yan 等 | 2025 | `UNSW-NB15` 数据集内的 Transformer | `89.00%` `F1` | | Xin 和 Xu | 2025 | `NSL-KDD -> UNSW-NB15` 跨数据集 Transformer-IDS | `55.00%` `F1` | | Wang 等 (`BS-GAT`) | 2025 | 边缘/IoT 基于图的二元 IDS | `>99%` 二元 `F1` | | 本研究 | 2026 | `UNSW+NSL -> full CICIDS2017` 漂移自适应迁移 | `68.69%` 加权 `F1` | 这并不意味着是一个强制的绝对同等(apples-to-apples)的排行榜,因为数据集和协议有所不同。重点在于,该代码库现在明确指出了其相对于近期 Transformer 和基于图的 IDS 研究的定位,同时提供了更广泛的外部迁移、流式处理和检测器消融的覆盖范围。 ## 与传统 IDS 的比较 本代码库包含了量化的基于规则的基线,而不是纯粹定性的讨论。 - 在 `UNSW-NB15` 上,`Signature IDS` 达到了 `55.13%` 的加权 `F1`,而静态混合模型达到了 `90.72%`。 - 在 `NSL-KDD` 上,`Signature IDS` 达到了 `49.47%` 的加权 `F1`,而 `LSTM` 达到了 `81.01%`。 - 在完整的外部 `CICIDS2017` 语料库上,`Signature IDS` 达到了 `58.09%` 的加权 `F1`,静态混合模型达到了 `61.35%`,在线 `Drift-Adaptive Hybrid` 达到了 `68.69%`,而 `LSTM` 依然以 `71.53%` 保持最佳。 - 在清洗后的 `CSE-CIC-IDS2018` 上,`Signature IDS` 达到了 `66.37%` 的加权 `F1` 并且是最强的模型,这突显了一些外部语料库在规则匹配度上依然高于源域训练的学习检测器。 - 规则基线依然是最快的检测器:在 `UNSW-NB15` 上以 batch size `1024` 运行时,它可以维持约 `1.28M` flows/s 的处理速度。 因为这些公开基准是以流记录而不是原始数据包负载的形式发布的,所以传统基线被实现为透明的流特征 IDS,而不是直接通过 `Snort` 或 `Suricata` 进行数据包重放。 ## 核心贡献 该代码库现在在四个方面超越了基础基准: - 从两个训练语料库到完整外部 `CICIDS2017` 语料库的 `cross-dataset transfer` - 在清洗后的 `CSE-CIC-IDS2018` 上进行的 `second external validation` - 通过全新的 `Drift-Adaptive Hybrid` 实现的 `online drift adaptation` - 跨越 `Isolation Forest`、`ADWIN`、`DDM` 和 `Page-Hinkley` 的 `formal drift detector comparison` - 在多种 batch size 下的 `online latency under load` - 针对主要外部攻击家族的 `failure-case analysis` - 使用特征重要性干预手段的 `explainability validated by ablation` ## 生产部署场景 论文现在在 `paper/deployment_architecture.png` 中包含了一幅部署架构图。该场景模拟了: - 企业流量镜像 - 通过 `Zeek / NetFlow` 进行流收集 - `Kafka` 或基于文件的流摄取 - 规范的 41 特征提取 - 低延迟 `Drift-Adaptive Hybrid` 推理 - 向 `SIEM / SOC` 传递告警 ## 未来工作 论文现在以明确的未来工作部分结尾。下一个研究方向是: - 具有延迟标签的 `continual learning`,使控制器能够刷新模型参数,而不仅仅是重新加权 - `RL / bandit-based adaptation`,以在线优化精确率-召回率-延迟的权衡 - 跨企业、云和 IoT 语料库的 `multi-domain training`,可能会结合基于图的旁侧信息 ## 演示 训练完成后,运行: ``` python3 demo/run_detection.py --sample-index 0 ``` 该演示会从 `models/artifacts/advanced_metadata.json` 加载最佳的官方 `UNSW-NB15` 模型,并对来自官方测试集的实际样本进行评分。 ## 可复现性 该代码库包含: - `requirements.txt` - `Dockerfile` - `docker/Dockerfile` - `run_training.sh` - `paper/build.sh` - `paper/ieee_paper.tex` - `research_paper.pdf` - `submission/build_submission_assets.sh` - `CITATION.cff` - `RELEASE.md` 原始数据保存在 `dataset/raw/` 下,可以排除在版本控制之外,而合并后的实验资产和笔记本依然可以通过 `training/` 和 `evaluation/` 中的脚本进行复现。 要重新构建论文并刷新根目录下的 PDF 镜像: ``` bash paper/build.sh ``` ## 应用场景 - 企业威胁检测研究 - IDS 基准测试和可复现性研究 - 网络安全 ML 课程作业 - 针对网络防御中的迁移学习和漂移进行的研究 ## 项目结构 ``` ai-network-threat-detection/ ├── dataset/ ├── demo/ ├── evaluation/ ├── models/ ├── notebooks/ ├── paper/ ├── submission/ ├── RELEASE.md ├── results/ ├── src/ ├── training/ ├── architecture.png ├── research_paper.pdf ├── README.md ├── requirements.txt └── CITATION.cff ``` ## 引用 使用 `CITATION.cff` 中的元数据或按以下方式引用本项目: ``` @article{ramasahayam2026, title={Drift-Adaptive Intrusion Detection for Enterprise Networks}, author={Ramasahayam, Dheeraj}, year={2026}, journal={GitHub Research Repository} } ``` ## 许可证 本代码库在 `CC BY 4.0` 许可下发布。
标签:Apex, 学术研究, 异常检测, 机器学习, 概念漂移适应, 网络安全, 逆向工具, 隐私保护