Andy-MINGA/AI-Enhanced_Intrusion_Detection_System

GitHub: Andy-MINGA/AI-Enhanced_Intrusion_Detection_System

一个结合 Snort、XGBoost 和大语言模型(GPT-4o mini / 微调 LLaMA 3)的四层入侵检测流水线,旨在将海量误报警报转化为高精度、可操作的结构化威胁情报。

Stars: 0 | Forks: 0

# 🛡️ AI 增强型入侵检测系统 ### 从 13 GB 原始网络流量到可操作的威胁情报 **Andy Minga** · MAT 490 独立研究 · 伊利诺伊州立大学 · 2026 年春季 **指导教师:** 徐茂超 (Maochao Xu) 博士 · 数学系 ## 🧭 项目简介 每天都有计算机 network 遭受攻击。像 **Snort** 这样的工具会监控 network traffic,并在检测到可疑情况时发出警报。问题在于:Snort 会产生**过多的误报**。在我们的数据集中,超过一半的警报是噪音。安全分析师将大部分时间浪费在追踪虚假威胁上,而不是真正的威胁。这就是所谓的**警报疲劳**。 本项目构建了一个**四层 pipeline**,其功能如下: 1. 使用 Snort **捕获**所有可疑 traffic —— 不遗漏任何内容 2. 使用 machine learning 模型 (XGBoost) 自动**过滤**噪音 3. 使用 **GPT-4o mini**(商业 API 基准)用通俗易懂的英文**解释**每次确认的攻击,包括威胁的性质、危险程度以及具体的应对措施 4. 使用**本地 fine-tuned 的 LLaMA 3 8B 模型****复现**这些简报,实现零成本并保证完全的数据隐私 —— 数据永远不会离开您的设备 结果:237,240 条嘈杂的警报减少至 108,172 条确认的威胁,precision 达到 99%;生成专业威胁情报简报的成本仅为 **$0.000603** (GPT-4o mini) 或 **$0.00** (fine-tuned LLaMA);并且这个 fine-tuned 的开源模型在三个最关键的操作指标上与商业 API 相匹配。 ## 📊 结果概览 ### Pipeline 性能 | 指标 | 仅使用 Snort | 使用本 Pipeline 后 | |--------|-------------|---------------------| | 需审查的警报数 | 237,240 | **108,172** | | 误报 | 130,133 (54.9%) | **1,068 (1.0%)** | | 漏报攻击 | 1 | **3** | | Precision | 0.45 | **0.99** | | Recall | 1.00 | **1.00** | | F1 Score | 0.6221 | **0.9950** | | 误报率 | 22.8% | **0.82%** | | 总成本 (GPT-4o mini) | — | **$0.000603** | | 总成本 (Fine-Tuned LLaMA) | — | **$0.00** | ### LLM 模型对比 (7 个指标) | 指标 | GPT-4o mini | LLaMA 基础版 | LLaMA Fine-Tuned | 与基础版差异 | |--------|-------------|------------|------------------|-----------| | JSON 有效性 | 1.0 | 1.0 | **1.0** ✅ | +0.0 | | CVE 准确度 | 1.0 | 1.0 | **1.0** ✅ | +0.0 | | 攻击 ID | 1.0 | 0.6 | **1.0** ✅ | **+0.4** | | 严重程度 | 1.0 | 0.6 | **0.8** | +0.2 | | 技术 | 1.0 | 0.134 | 0.132 | −0.002 | | BLEU | 1.0 | 0.373 | **0.424** | +0.051 | | ROUGE-L | 1.0 | 0.346 | **0.369** | +0.023 | ## 📁 仓库结构 ``` hybrid-ids-pipeline/ │ ├── notebooks/ │ ├── snort_iscx_pipeline.ipynb # Phase 1: Snort + ground truth matching │ # Phase 2: Feature preparation │ # Phase 2: XGBoost training + threshold sweep │ # Phase 3a: GPT-4o mini API baseline │ ├── LLaMA3_FineTuning_A100.ipynb # Phase 3b: LLaMA 3 8B LoRA fine-tuning (A100) │ # Phase 3b: 7-metric evaluation │ ├── data/ │ ├── alerts/ # These can be reproduced from the python code, sizes were large │ │ ├── master_malware_report2.csv # Merged Snort alerts (237,240 rows) │ │ ├── audited_snort_results.csv # Alerts with TP/FP labels │ │ ├── confirmed_tp_for_llm.csv # Confirmed attacks for LLM (108,172 rows) │ │ ├── suppressed_fp_audit.csv # Suppressed noise audit trail │ │ └── xgboost_snort_model.json # Trained XGBoost model │ ├── training/ │ │ └── training_dataset_augmented.jsonl # 2,618 fine-tuning examples │ ├── results_gpt4o/ │ │ ├── llm_threat_briefings.json # GPT-4o mini output (structured JSON) │ │ └── llm_threat_report.txt # GPT-4o mini output (human-readable) │ ├── results_a100/ │ │ ├── llm_threat_briefings_finetuned.json # Fine-tuned LLaMA output (structured JSON) │ │ ├── llm_threat_report_finetuned.txt # Fine-tuned LLaMA output (human-readable) │ │ ├── evaluation_results.json # All 7 metric scores │ │ ├── evaluation_summary.csv # Comparison table │ │ ├── evaluation_charts.png # 7-panel evaluation chart │ │ ├── training_loss_curve.png # Training vs validation loss │ │ ├── cv_results.json # 5-fold cross-validation results │ │ └── perplexity_results.json # Perplexity before/after │ └── README_data.md # Instructions to download the dataset │ ├── models/ │ ├── llama3_finetuned_a100/ # Merged fine-tuned model (15 GB — on Drive) │ └── lora_adapter_a100/ # LoRA adapter weights (328 MB — on Drive) │ ├── figures/ │ ├── Attack_Type_Distribution.png │ ├── Initial_Snort_Alert_Distribution.png │ ├── Performance_comparison.png │ ├── Threshold_optimization.png │ ├── evaluation_charts.png │ └── training_loss_curve.png │ ├── reports/ │ └── AndyMinga_Hybrid_IDS_Complete_Report.pdf │ ├── .env.example ├── requirements.txt └── README.md ``` ## 🗂️ 数据集 ### 数据来源 该数据由位于**加拿大纽布伦斯威克大学**的**加拿大网络安全研究所 (CIC)** 生成 —— 这是学术文献中被引用次数最多的入侵检测 benchmark 数据集。 **构建方式:** CIC 构建了一个完整的实验室 network,包含 12 台运行 Windows、Ubuntu 和 macOS 的真实计算机。他们模拟了 25 个真实用户来生成真实的正常 traffic,然后在记录的时间从一台 Kali Linux 机器发起真实的 cyberattack,并记录每一个 network packet。由于攻击时间被精确记录,因此每个 flow 都可以被标记为 **BENIGN** 或特定的攻击类型。 ### 我们使用了哪个文件 我们使用的是 **GeneratedLabelledFlows** 版本: ``` Wednesday-workingHours.pcap_ISCX.csv ``` 此文件包含 **692,703 个已标记的 network flow**,并带有完整的 IP 地址信息,这是我们 fingerprint-matching 策略所必需的。`MachineLearningCSV` 版本没有 IP 地址,与我们的 pipeline 不兼容。 ### 下载数据集 1. 前往:[https://www.unb.ca/cic/datasets/ids-2017.html](https://www.unb.ca/cic/datasets/ids-2017.html) 2. 下载 **Wednesday** PCAP 文件(约 13 GB) 3. 下载 **GeneratedLabelledFlows** CSV 压缩包 ### Wednesday 包含的内容 | 标签 | Network Flow 数量 | 占总数百分比 | 时间窗口 | |-------|--------------|------------|-------------| | BENIGN | 440,031 | 63.5% | 全天 | | DoS Hulk | 231,073 | 33.4% | 10:43–11:00 AM | | DoS GoldenEye | 10,293 | 1.5% | 11:10–11:23 AM | | DoS slowloris | 5,796 | 0.8% | 09:47–10:10 AM | | DoS Slowhttptest | 5,499 | 0.8% | 10:14–10:35 AM | | Heartbleed | 11 | <0.01% | 15:12–15:32 PM | | **总计** | **692,703** | **100%** | | ## 🔧 设置方法 ### 依赖项 ``` pip install -r requirements.txt ``` **主要 dependencies:** ``` pandas numpy scikit-learn xgboost openai transformers peft datasets trl torch python-dotenv matplotlib rouge-score nltk jupyterlab ``` ### API Key 设置(仅限阶段 3a) 阶段 3a 使用 OpenAI API。阶段 3b **完全在本地运行 —— 无需 API key**。 ``` cp .env.example .env # 打开 .env 并添加:OPENAI_API_KEY=sk-your-key-here ``` ## 🚀 Pipeline 详细流程 ### 阶段 1 —— Snort 警报生成与真实情况匹配 使用 `tcpdump`(一个基于 C 语言的命令行工具,而非 Python)将 13 GB 的 PCAP 文件分割成 14 个数据块(每个约 1 GB)。只有在数据块创建之后,Python 才会进入 pipeline。Snort 2.9 独立处理每个数据块,所有 14 个输出文件最终合并为 **237,240 条警报**。 **列偏移 bug:** 当字段为空时,Snort 会默默地省略它们而不是写入占位符,导致后续所有列向左偏移。`fix_row()` 通过锚定预期列索引 8 处的 protocol 字段来纠正此问题。 **真实情况匹配** 使用三个层级来处理 NAT: | 层级 | 逻辑 | |------|-------| | 1 —— 正向 | 源 IP + 目标 IP + 目标端口 | | 2 —— 反向 | 处理双向 flow | | 3 —— NAT 回退 | 端口 80/444 + 已知 network IP | **Snort 基准:** 107,107 TP / 130,133 FP / Precision 0.4515 / Recall 1.0000 / 误报率 22.8% **主要发现:** 单条规则 —— `(http_inspect) NO CONTENT-LENGTH OR TRANSFER-ENCODING` —— 产生了 98,552 条警报,其中包含**零个真正例**,占所有误报的 75.7%。 ### 阶段 2 —— XGBoost 误报抑制 XGBoost 为每条警报分配一个置信度分数 (0–1)。31 个 Snort 列中有 12 个被用作特征。IP 地址被排除在外 —— 如果模型记住了特定的 IP,它就无法推广到其他 network。 **阈值:** 从默认的 0.50 降低到 **0.01**。在 47,448 行的测试集中,漏报攻击 (FN) 从 32 次骤降至仅 3 次 —— 减少了 91% —— 而这仅仅增加了 235 条噪音警报。该模型在 80% (189,792 条警报) 的数据上进行训练,并在 20% (47,448 条警报) 的数据上使用分层抽样进行评估。 **结果:** FP 130,133 → **1,068** (−99.2%) · Precision 0.45 → **0.99** · Recall 保持不变,为 **1.00** ### 阶段 3a —— GPT-4o mini API 基准 每种攻击类型选取一条代表性警报发送给 GPT-4o mini。所有 5 条 Heartbleed 警报均被发送。该模型返回结构化的 JSON 简报。总成本:**$0.000603**。 | 攻击 | 严重程度 | CVE | |--------|----------|-----| | DoS Hulk | Critical | None | | DoS GoldenEye | Critical | None | | DoS slowloris | Critical | None | | DoS Slowhttptest | **High** | None | | **Heartbleed** | **Critical** | **CVE-2014-0160** | ### 阶段 3b —— LLaMA 3 8B Fine-Tuning **模型:** 选择了 LLaMA 3 8B Instruct,而不是 GPT-2(仅支持文本补全 —— 没有 instruction-tuned,无法稳定输出 JSON)和 Mistral 7B(LoRA 稳定性较差)。 **训练数据:** 2,618 个样本 —— 805 个原始警报 + 1,610 个增强样本(变化的 IP/端口/标志)+ 203 个 NVD CVE 描述。多样性可防止对特定 network 值的过度记忆。 **LoRA:** 秩 (Rank) 为 64,覆盖所有 7 个 attention/MLP 层,167M 个可训练参数(占总参数的 2.05%)。A100 GPU (40 GB),bfloat16 精度,5-fold CV(平均验证集 loss 为 0.1311,标准差为 0.0065),在第 8.8 个 epoch 提前停止,最佳 checkpoint 步数为 1000。 | 运行配置 | 验证集 Loss | Perplexity | |-----|----------|------------| | T4 (rank 8, 805 个样本) | 0.1715 | 46.75 ↑ (更差) | | **A100 (rank 64, 2618 个样本)** | **0.0883** | **40.22** ✅ (比基础模型好 5.8%) | **生产环境输出(74 秒,$0.00):** 基础模型中关于所有 4 个 DoS 严重程度的错误分类均被纠正。Heartbleed 仍正确保持了 CVE-2014-0160。 ## 📈 评估 在 5 个代表性警报上自动计算 7 个指标。GPT-4o mini 的输出 = 金标准参考。 **Fine-tuned 模型在 7 个指标中有 3 个与 GPT-4o mini 完全匹配:** | 指标 | 如果失败会产生的影响 | |--------|---------------------------| | **JSON 有效性** ✅ | Pipeline 会崩溃 —— 无法提取字段 | | **CVE 准确度** ✅ | 分析师会追踪错误的漏洞 | | **攻击 ID** ✅ | 会应用错误的补救策略 | **技术准确度(两个模型均约为 0.13):** 两者都在文本中准确描述了技术,但使用的词汇与关键字列表不同。该关键字列表是基于 GPT-4o mini 的输出构建的,从而形成了一种循环优势。这是评分标准的局限性,而不是模型的失败。BERTScore 会得出更公平的结果。 ## ⚠️ 诚实的局限性 | 局限性 | 详情 | |-----------|--------| | 单一 network 环境 | 所有警报均来自一个 UNB 实验室 network,2017 年 7 月 | | 仅五种攻击类型 | 真实的 network 会产生数百种攻击签名 | | 技术准确度评分标准 | 关键字列表为 GPT-4o mini 创造了循环优势 | | 尚未达到生产就绪状态 | 需依赖 Python;需要 REST API + SIEM 集成(约 1 个月) | | Slowhttptest 技术混淆 | Fine-tuned 模型偶尔会将 Slowhttptest 识别为 "Slowloris" | ## 🔮 未来工作 | 方向 | 描述 | |-----------|| | 扩大攻击覆盖范围 | CICIDS Thursday/Friday,UNSW-NB15;目标 20+ 种攻击类型 | | 更大的模型 | LLaMA 3 70B;预期在技术描述细节上表现更好 | | 实时部署 | Kafka 流 + REST API + SIEM (Splunk/QRadar) 集成 | | 语义评估 | BERTScore + 人类专家小组来替代关键字匹配 | | 第二个数据集 | 在 UNSW-NB15 上进行验证以确认泛化能力 | ## 🔑 关键概念 | 术语 | 通俗解释 | |------|--------------| | **PCAP 文件** | 对 network 上每个 packet 的记录 —— 就像 internet traffic 的 DVR(硬盘录像机) | | **IDS** | 入侵检测系统 —— 监控 network traffic 以发现攻击 | | **Snort** | 世界上最广泛使用的开源 IDS | | **False Positive** | 触发了警报,但最终发现什么都没有 | | **False Negative** | 一次真实的攻击被漏掉了 —— 没有触发警报 | | **Precision** | 在所有发出的警报中,有多大比例是真实的攻击? | | **Recall** | 在所有发生的真实攻击中,我们捕获了多少? | | **F1 Score** | Precision 和 Recall 的调和平均值 —— 会对极端不平衡进行惩罚 | | **XGBoost** | 一种按顺序构建多个 decision tree 的 ML algorithm | | **阈值** | 置信度分界线 —— 低于此线则抑制;高于此线则放行 | | **LLM** | 大型语言模型 —— 能够理解和生成人类语言的 AI | | **JSON** | 结构化的 machine-readable 输出 —— 为自动化 pipeline 使用所必需 | | **CVE** | 常见漏洞和暴露 —— 已知安全缺陷的通用 ID | | **Fine-tuning** | 在特定领域数据上进一步训练预训练模型的过程 | | **LoRA** | 低秩微调 —— 仅 fine-tune 模型约 2% 的参数 | | **Perplexity** | 模型对文本感到“惊讶”的程度 —— 越低 = 对该领域的掌握越好 | | **BLEU** | 与参考文本相比的 N-gram 词汇重叠度评分 | | **ROUGE-L** | 与参考文本相比的最长公共子序列评分 | | **NAT** | network 地址转换 —— 一种改变 IP 地址的 firewall 技术 | | **Alert fatigue** | 分析师因误报过多而停止响应的现象 | | **5-fold CV** | 在不同的数据划分上训练/评估 5 次,以确认泛化能力 | ## 📚 参考文献 - Sharafaldin 等人 (2018). Toward generating a new intrusion detection dataset. *ICISSP 2018*. - Chen 与 Guestrin (2016). XGBoost: A scalable tree boosting system. *KDD 2016*. - Hu 等人 (2021). LoRA: Low-rank adaptation of large language models. *arXiv:2106.09685*. - Meta AI (2024). LLaMA 3. [https://ai.meta.com/llama](https://ai.meta.com/llama) - CVE-2014-0160 (Heartbleed): [https://nvd.nist.gov/vuln/detail/CVE-2014-0160](https://nvd.nist.gov/vuln/detail/CVE-2014-0160) - CIC-IDS2017: [https://www.unb.ca/cic/datasets/ids-2017.html](https://www.unb.ca/cic/datasets/ids-2017.html) - National Vulnerability Database: [https://nvd.nist.gov](https://nvd.nist.gov) ## ⚠️ 重要说明 - 由于体积过大,原始 PCAP (13 GB) 和处理后的 CSV **未包含**在内 —— 请参阅数据集部分。 - Fine-tuned 的 LLaMA 3 8B 权重(约 15 GB)存放在 Google Drive 上 —— 并未包含在本 repo 中。 - 切勿将 `.env` 或 API key 提交到 GitHub。如果发生了,请立即在 [platform.openai.com](https://platform.openai.com) 撤销。 - `lora_alpha` 补丁已在 fine-tuning 笔记本中实现自动化。合并后请勿手动编辑 `adapter_config.json`。 ## 📬 联系方式 **Andy Minga** · 数学系 · 伊利诺伊州立大学 📧 aminga@ilstu.edu · **指导教师:** 徐茂超 (Maochao Xu) 博士 *MAT 490 独立研究 —— “LLM for Cyber Risk Assessment” —— 2026 年春季* *阶段 1、2、3a (GPT-4o mini) 和 3b (LLaMA 3 8B Fine-Tuning) —— 全部完成*
标签:Apex, DLL 劫持, GPT-4o, LLaMA 3, LLM, NLP, NoSQL, Petitpotam, Unmanaged PE, XGBoost, 人工智能, 代码示例, 入侵检测系统, 凭据扫描, 告警疲劳, 大语言模型, 威胁情报, 安全报告生成, 安全数据湖, 开发者工具, 开源模型, 异常检测, 微调, 数据分析, 数据隐私, 机器学习, 用户模式Hook绕过, 系统调用监控, 网络安全, 网络流量分析, 误报过滤, 逆向工具, 隐私保护