premangshu6/Nexus-Threat-Intelligence

GitHub: premangshu6/Nexus-Threat-Intelligence

基于随机森林和隔离森林双模型的 AI 驱动网络入侵检测系统,配备 Streamlit 可视化仪表板,能对上传的网络流量 CSV 进行攻击分类、异常检测与威胁诊断。

Stars: 0 | Forks: 0

# Nexus: 威胁情报平台 ### 实践 15 — 基于 LLM 的应用开发 ## 1. 概述 **项目名称:** Nexus — AI 驱动的网络入侵检测系统 **实践目标:** 使用任意 LLM 构建一个小型、功能完备的项目 **使用的大语言模型 (LLM):** Antigravity (由 Google DeepMind 提供支持) **开发者:** Premangshu Sahu **日期:** 2026 年 4 月 ## 2. 项目创意与动机 网络安全是现代计算中最严峻的挑战之一。随着组织对互联网基础设施的依赖日益加深,网络攻击的数量和复杂性也呈指数级上升。传统的基于规则的入侵检测系统 (IDS) 依赖于预定义的模式和签名——这种方法在面对新型的零日攻击时从根本上失效了。 **Nexus** 背后的理念是构建一个现代的、AI 驱动的 IDS,通过以下方式超越静态规则: - 利用**监督式机器学习**将网络流量分类为已知攻击类型。 - 利用**无监督异常检测**标记可能代表新的、未知威胁的异常流量。 - 通过一个**高级的实时仪表板**呈现所有情报,使复杂的安全数据变得易读、美观且可操作。 该项目的构思、架构设计、开发和优化完全是通过与 **Antigravity**(一个最先进的代理式 AI 编程助手)的对话完成的。学生的角色是定义目标、审查输出,并通过结构化的对话迭代地指导 LLM 改进产品——这正是实践目标中所描述的。 ## 3. LLM (Antigravity) 的角色 在这个项目的每一个阶段都使用了 Antigravity: | 阶段 | Antigravity 的工作内容 | |---|---| | **创意构思** | 提议使用 NSL-KDD 数据集,建议采用双模型方法 (RF + Isolation Forest) | | **数据管道** | 编写了完整的 `train_model.py` 脚本,包括编码、训练/测试集分割和评估 | | **模型训练** | 为两个 ML 模型配置了合适的超参数,生成了评估指标 | | **应用程序** | 从零开始构建了完整的 `app.py` Streamlit 应用程序 | | **UI 设计** | 通过 glassmorphism (毛玻璃效果)、实时 CSS 动画、暗黑模式和渐变标题迭代改进了 UI | | **功能添加** | 增加了攻击诊断部分、全球威胁地图、遥测侧边栏和导出功能 | | **调试** | 诊断并修复了视频背景、外部 URL 失败、CSS 渲染等问题 | | **文档编写** | 撰写了这份文档 | 开发过程完全是会话式的。学生发出高级指令(例如,*"让背景动起来"*,*"添加攻击信息"*),然后 Antigravity 将它们转化为生产级代码,解释其决策,并在必要时请求审查。 ## 4. 数据集 — NSL-KDD **NSL-KDD 数据集**是网络入侵检测研究的标准基准数据集。它是原始 KDD Cup 1999 数据集的改进版本,修复了冗余记录和类别不平衡等几个关键缺陷。 ### 使用的数据集文件 - `KDDTrain+.txt` — 完整的训练集 ### 特征 (共 41 个) 该数据集包含 **41 个特征**,分为四组: | 类别 | 示例 | |---|---| | **基本 TCP/IP 特征** | `duration`, `protocol_type`, `service`, `flag`, `src_bytes`, `dst_bytes` | | **内容特征** | `hot`, `num_failed_logins`, `logged_in`, `num_compromised`, `root_shell` | | **流量特征** | `count`, `srv_count`, `serror_rate`, `rerror_rate`, `same_srv_rate` | | **基于主机的特征** | `dst_host_count`, `dst_host_srv_count`, `dst_host_same_srv_rate` | ### 类别特征 有三列是非数值型的,进行了编码处理: - `protocol_type` — TCP, UDP, ICMP - `service` — http, ftp, telnet, private 等 - `flag` — SF, S0, S1, REJ 等 ### 攻击类别 数据集包含被标记为 **normal** 或以下某一攻击类别的流量: | 类别 | 描述 | 示例 | |---|---|---| | **DoS** | 拒绝服务——使目标不堪重负 | neptune, smurf, teardrop, pod | | **Probe** | 监视/扫描攻击 | satan, ipsweep, portsweep, nmap | | **R2L** | 远程到本地——获取未授权访问权限 | guess_passwd, ftp_write | | **U2R** | 用户到根用户——权限提升 | buffer_overflow, rootkit | ## 5. 机器学习模型 该系统采用**双模型架构**:一个监督式分类器和一个无监督异常检测器并行运行。 ### 5.1 模型 1 — Random Forest (随机森林) 分类器 **目的:** 将每个网络连接分类为 `normal` 或特定的命名攻击类型(例如 neptune, smurf, satan)。 **为什么选择 Random Forest?** - 非常适合处理高维表格数据 - 对异常值和无关特征具有很强的鲁棒性 - 提供内置的**特征重要性**评分 - 高度可解释,非常适合需要可解释性的安全场景 **配置:** ``` RandomForestClassifier( n_estimators=150, # 150 decision trees in the ensemble random_state=42, # For reproducibility n_jobs=-1 # Use all CPU cores for parallel training ) ``` **工作原理:** - 150 棵独立的决策树在数据的随机子集上进行训练。 - 每棵树独立地对类标签进行投票。 - 最终预测由所有树的**多数投票**决定。 - 与单一决策树相比,这种集成方法显著减少了过拟合。 **训练:** ``` X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) rf_model.fit(X_train, y_train) ``` 采用 80/20 的训练-测试集分割比例。模型在 80% 的数据上进行训练,并在剩余的 20% 上进行评估。 **评估指标:** - **Accuracy (准确率)** — 正确分类的连接的总体百分比 - **Precision (精确率,加权)** — 在所有被标记为某种攻击的连接中,有多少是真正的攻击 - **Recall (召回率,加权)** — 在所有实际的攻击中,模型正确捕获了多少百分比 - **F1 Score (F1 分数,加权)** — 精确率和召回率的调和平均值 ### 5.2 模型 2 — Isolation Forest (隔离森林,异常检测) **目的:** 识别在统计上偏离正常行为的连接,无论它们是否与已知的攻击签名匹配。这是系统防御**零日攻击和新型威胁**的屏障。 **为什么选择 Isolation Forest?** - 它是一种**无监督**算法——不需要标记的攻击数据。 - 它通过随机划分特征空间并测量数据点可以被隔离的速度来工作。 - 异常点(离群点)被隔离所需的划分次数远远少于正常点。 - 它在处理像网络流量这样的高维数据时具有极好的扩展性。 **配置:** ``` IsolationForest( contamination=0.05, # Assumes 5% of training data are anomalies random_state=42 ) ``` **工作原理:** 1. 该算法构建一个随机隔离树的集成。 2. 对于每个数据点,它计算需要多少次拆分才能将其隔离。 3. 需要较少拆分次数的点会获得**较低的异常分数**。 4. 分数低于阈值(由 `contamination=0.05` 决定)的点被标记为**异常 (Anomaly)**。 **输出:** - `1` → 正常流量 - `-1` → 异常(可疑连接) ## 6. 训练管道 (`train_model.py`) 整个数据处理和模型训练流程封装在 `train_model.py` 中。以下是逐步分解: ``` 1. Load Dataset └── Read KDDTrain+.txt with 43 named columns (41 features + label + difficulty) 2. Encode Categorical Features └── Apply LabelEncoder to: protocol_type, service, flag └── Store encoders in cat_encoders.pkl for use in the app 3. Encode Attack Labels └── Apply LabelEncoder to the 'label' column └── Store encoder in label_encoder.pkl 4. Feature/Target Split └── X = all 41 feature columns └── y = encoded label column 5. Train/Test Split (80/20) 6. Train Random Forest Classifier └── 150 estimators, all CPU cores, random_state=42 7. Evaluate on Test Set └── Compute Accuracy, Precision, Recall, F1, Confusion Matrix 8. Generate Feature Importance Chart └── Saved as feature_importance.png 9. Train Isolation Forest └── contamination=0.05, random_state=42 10. Save All Artifacts └── model.pkl — Random Forest model └── iso_model.pkl — Isolation Forest model └── label_encoder.pkl — Attack label encoder └── cat_encoders.pkl — Categorical feature encoders ``` ## 7. 应用程序 (`app.py`) 前端应用程序是使用 **Streamlit** 构建的,这是一个专为数据科学仪表板设计的 Python 原生 Web 框架。它被构造成一个单页应用程序,包含几个不同的部分。 ### 7.1 实时网络空间背景 该背景完全由 **CSS 动画**构建——包含两个叠加的效果: 1. **滚动星空** (`.stApp::before`) — 由彩色数据节点(蓝色、紫色、白色)组成的重复径向渐变图案,不断向上滚动,模拟数据流。 2. **3D 扫描网格** (`.stApp::after`) — 一个带有透视变换的网格,通过滚动营造出在网络空间中穿梭前行的错觉。 选择这种方法而不是嵌入视频,是为了保证可靠性、高性能以及不依赖外部 URL。 ### 7.2 Glassmorphism (毛玻璃) UI 所有容器都使用了 **glassmorphism**——一种现代设计模式,结合了: - 半透明的暗色背景 (`rgba(15, 20, 30, 0.55)`) - 高模糊度的背景滤镜 (`blur(20px) saturate(200%)`) - 细微的边框高亮 (`rgba(255, 255, 255, 0.1)`) - 深层阴影效果 ### 7.3 实时遥测侧边栏 侧边栏显示模拟的服务器健康指标(CPU 负载、内存使用率、网络吞吐量)以及动画进度条。这些值在每次应用程序加载时进行伪随机化,以模拟实时监控环境。 ### 7.4 核心分析管道 (上传 CSV 时) ``` Upload CSV → Encode Categorical Columns → Run Isolation Forest → tag each row as Normal/Anomaly → Run Random Forest → classify each row by attack type → Compute Threat Score (0 for normal, 90 for attack) → Display Metrics (Total, Attacks, Anomalies) → Threat Diagnostics (per attack type) → Global Threat Map → Distribution Charts → Export Report ``` ### 7.5 威胁诊断 对于上传中检测到的每种唯一攻击类型,系统会渲染一个详细的可展开面板,显示: - **分类类型**(例如,DoS — SYN Flood) - 表明该特定攻击的**关键 NSL-KDD 参数** - **建议的缓解/修复**策略 这些情报来源于内置的 `ATTACK_INFO` 知识库——一个包含最常见 NSL-KDD 攻击档案的精选字典。 ### 7.6 全球威胁地图 由于原始网络流量不包含地理数据,系统使用从现实世界互联网热点(北美、欧洲、亚洲)中提取的**模拟地理坐标**,以直观展示全球威胁源映射的概念。此功能说明了企业级系统在生产环境中如何可视化攻击源。 ### 7.7 交互式图表 (Plotly Express) 并排渲染了两个 Plotly 图表: | 图表 | 类型 | 用途 | |---|---|---| | 整体流量状态 | 圆环图 | 正常与攻击流量的比例 | | 特定威胁的频率 | 彩色条形图 | 出现了哪些攻击类型及其频率 | 这两个图表都使用透明背景和浅色字体,以与暗黑主题无缝融合。 ### 7.8 导出情报报告 一键下载按钮可将完全丰富的数据集(原始特征 + `Anomaly Detection` + `Prediction` + `Threat Score`)导出为名为 `nexus_threat_report.csv` 的 CSV 文件。 ## 8. 技术栈 | 组成部分 | 技术 | |---|---| | 编程语言 | Python 3 | | ML 框架 | scikit-learn | | 数据处理 | pandas, numpy | | 模型持久化 | joblib | | Web 应用程序 | Streamlit | | 可视化 | Plotly Express | | UI 样式 | 自定义 CSS (Glassmorphism,CSS 动画) | | 开发助手 | Antigravity (Google DeepMind 的 LLM) | ## 9. 文件与目录结构 ``` nexus-threat-intelligence/ │ ├── app.py # Main Streamlit application (UI + inference) ├── train_model.py # Data pipeline and model training script ├── KDDTrain+.txt # NSL-KDD training dataset (raw) ├── test_sample.csv # Sample CSV for demonstration (10 connections) │ ├── model.pkl # Trained Random Forest Classifier ├── iso_model.pkl # Trained Isolation Forest ├── label_encoder.pkl # Attack label encoder ├── cat_encoders.pkl # Categorical feature encoders │ └── feature_importance.png # Bar chart of feature importance scores ``` ## 10. 在 `test_sample.csv` 上的结果 提供的测试样本包含 **10 个网络连接**,具有以下特征: | # | Duration | Protocol | Flag | src_bytes | 检测为 | |---|---|---|---|---|---| | 1–5 | 0 | tcp | S0 | 0 | neptune (DoS — SYN Flood) | | 6 | 2 | udp | SF | 4000 | 不定 | | 7–9 | 3–5 | tcp | S0 | 4500–5000 | neptune (DoS — SYN Flood) | | 10 | 6 | udp | SF | 3500 | 不定 | **模型得出的关键观察结果:** - `S0` 标志(已发送 SYN,无回复)结合零 `dst_bytes` 以及高 `serror_rate`/`count` 是 **SYN Flood (neptune) 攻击**的最强指标。 - 模型在没有被明确告知攻击标签的情况下正确识别了这些模式。 ## 11. 总结 Nexus 表明,使用 LLM 助手可以快速开发出功能完备、视觉精致且由 AI 驱动的安全工具。该项目实现了: - 结合监督式和无监督式 ML 的**双层威胁检测** - 通过威胁诊断知识库提供**可解释的 AI 输出** - 具有实时动画、glassmorphism 和交互式 Plotly 可视化的**高级、生产级质量的 UI** - **实用价值** — CSV 上传、威胁地图和导出功能使其可以立即投入使用 将 **Antigravity** 作为 LLM 副驾驶极大地加速了开发进程。每一个组件——从数据编码管道到动画 CSS 背景——都是通过高级自然语言指令产生的,学生进行审查并迭代优化。这准确地展示了那种正逐渐成为现代软件工程标准的 **LLM 增强开发工作流**。
标签:Apex, Kubernetes, NSL-KDD, Python, 人工智能, 入侵检测系统, 威胁情报, 孤立森林, 安全数据湖, 实时监控大屏, 开发者工具, 异常检测, 无后门, 无监督学习, 机器学习, 深度学习, 用户模式Hook绕过, 监督学习, 网络安全, 网络攻击识别, 网络流量分析, 逆向工具, 随机森林, 隐私保护, 零日攻击防护