Pra1hamCodes/HELIX

GitHub: Pra1hamCodes/HELIX

基于 CICIDS2017 数据集的浏览器端网络入侵检测分析平台,提供从数据探索到机器学习建模的全链路客户端分析能力。

Stars: 0 | Forks: 0

# HELIX — 网络威胁情报仪表盘 一个完全在浏览器中运行的网络入侵检测分析平台,专为 **CICIDS2017** 数据集构建。上传原始 CSV 文件即可获得交互式 ML 建模、统计测试、特征分析、时序模式以及自动生成的分析洞察——所有计算均在客户端完成,无需后端。 ## 功能简介 HELIX 在浏览器中直接导入一个或多个 CICIDS2017 CSV 文件,进行清洗和合并后,提供九个分析模块: | 模块 | 功能说明 | |--------|-------------| | **Data Health (数据健康度)** | 缺失值审查,类别分布,单文件质量报告 | | **EDA (探索性数据分析)** | 特征分布,KDE 叠加图,类别均值比较,散点图 | | **Feature Intelligence (特征智能)** | 方差排名,Pearson 相关性热力图,冗余检测,PCA 2D 投影,互信息 | | **Attack Patterns (攻击模式)** | 各类别雷达图特征,异常 z-score 矩阵,流指纹 | | **Statistical Testing (统计测试)** | Mann-Whitney U 检验 + Welch's t 检验,带 bootstrap 95% CI 的 Cohen's d,BH-FDR 校正 | | **ML Modeling (机器学习建模)** | 决策树 (类别加权 CART) + 高斯朴素贝叶斯,分层 5 折交叉验证,ROC/PR 曲线,各类别 AUC | | **Temporal Analysis (时间分析)** | 按捕获日统计的攻击分布,按类别堆叠的条形图,交叉表 | | **Intelligence Brief (情报简报)** | 自动生成的数据集健康评分,关键问题,分析发现,建议 | | **Report Generator (报告生成器)** | 提取所有模块结果生成的完整分析师报告 | ## 项目结构 ``` HELIX/ ├── src/ │ ├── App.jsx # Route definitions, layout shell │ ├── main.jsx # React 18 entry point │ ├── index.css # Global styles, keyframe animations │ │ │ ├── pages/ │ │ ├── LandingPage.jsx # Hero, drag-and-drop upload, processing screen │ │ ├── DataHealth.jsx # Missing values, class counts, file quality │ │ ├── EDA.jsx # Distributions, KDE, scatter, class means │ │ ├── FeatureIntelligence.jsx # Variance, correlation, PCA, MI │ │ ├── AttackPatterns.jsx # Radar profiles, anomaly z-scores │ │ ├── StatisticalTesting.jsx # MW-U, Welch-t, Cohen's d, BH-FDR │ │ ├── MLModeling.jsx # Decision Tree, GNB, CV, ROC/PR │ │ ├── TemporalAnalysis.jsx # Day-by-day attack breakdown │ │ ├── InsightsPage.jsx # Auto-generated intelligence brief │ │ └── ReportGenerator.jsx # Full analyst report │ │ │ ├── components/ │ │ ├── Layout/ │ │ │ ├── Sidebar.jsx # Color-coded navigation, dataset status │ │ │ └── Footer.jsx # Fixed footer with branding │ │ ├── Charts/ │ │ │ ├── BarChart.jsx # Horizontal / vertical bar (Recharts) │ │ │ ├── LineChart.jsx # Time-series line chart │ │ │ ├── ROCChart.jsx # ROC curve with AUC annotation │ │ │ ├── PRChart.jsx # Precision-recall curve │ │ │ ├── HeatmapChart.jsx # Pearson correlation heatmap │ │ │ ├── RadarChart.jsx # Per-class radar signatures │ │ │ ├── ScatterPlot.jsx # 2D scatter with class coloring │ │ │ ├── PCAScatter.jsx # PCA 2D projection scatter │ │ │ ├── PieChart.jsx # Class distribution donut │ │ │ ├── ClassMeanChart.jsx # Per-class feature means bar │ │ │ └── ComposedHistKDE.jsx # Histogram + KDE overlay │ │ ├── MatrixRain.jsx # Canvas-based matrix rain background │ │ └── UI/ │ │ ├── PageHeader.jsx │ │ ├── MetricCard.jsx │ │ ├── SectionHeader.jsx │ │ ├── InsightBox.jsx │ │ └── LoadingSpinner.jsx │ │ │ ├── store/ │ │ └── useDataStore.js # Zustand global state (rows, summaries, UI) │ │ │ └── utils/ │ ├── dataProcessor.js # CSV parsing, cleaning, merging (PapaParse) │ ├── ml.js # Decision Tree, GNB, PCA, MI, ROC/PR, BH-FDR │ ├── stats.js # mean, std, variance, t-distribution CDF │ └── colors.js # Attack class color palette │ ├── streamlit-app/ # Python Streamlit version (alternative UI) │ ├── app.py │ ├── requirements.txt │ ├── pages/ │ │ ├── page_01_data_health.py │ │ ├── page_02_eda.py │ │ ├── page_03_feature_intelligence.py │ │ ├── page_04_attack_patterns.py │ │ ├── page_05_statistical_testing.py │ │ ├── page_06_ml_modeling.py │ │ ├── page_07_shap_explainability.py │ │ └── page_08_report_generator.py │ └── utils/ │ ├── data_loader.py │ ├── ml.py │ ├── stats.py │ ├── charts.py │ └── styles.py │ ├── dataset/ │ └── README.md # Dataset download instructions │ ├── index.html ├── package.json ├── vite.config.js ├── tailwind.config.js └── postcss.config.js ``` ## 技术栈 — React 仪表盘 | 层级 | 库 | 版本 | |-------|---------|---------| | UI 框架 | React | 18.3 | | 构建工具 | Vite | 5.2 | | 路由 | React Router DOM | 6.23 | | 状态管理 | Zustand | 4.5 | | 图表 | Recharts | 2.12 | | CSV 解析 | PapaParse | 5.4 | | 样式 | Tailwind CSS | 3.4 | | 图标 | React Icons (Remix) | 5.2 | | 动画 | Framer Motion | 11.2 | | 数据工具 | D3 | 7.9 | 所有分析均在浏览器中运行——无需服务器,不调用 API,数据不会离开设备。 ## 技术栈 — Streamlit 应用 | 库 | 用途 | |---------|---------| | Streamlit | UI 框架 | | Pandas / NumPy | 数据处理 | | Plotly / Matplotlib / Seaborn | 图表 | | Scikit-learn | ML 建模,预处理 | | XGBoost | 梯度提升树 | | SHAP | 模型可解释性 | | SciPy | 统计测试 | | imbalanced-learn | SMOTE 过采样 | ## 分析技术 ### 特征分析 - **方差排名** — 按样本方差对特征进行排序,以识别高信息量列 - **Pearson 相关性** — 在方差排名前 20 的特征上计算完整的相关性矩阵;在 |r| > 0.9 时标记冗余特征对 - **互信息** — `MI(X; Y) = H(Y) − H(Y|X_binned)`,离散化为 10 个等宽分箱,4000 行样本 - **PCA** — 对方差排名前 20 的特征进行幂迭代协方差分解,投影到二维 - **异常 z-scores** — 对每个特征和每个类别计算 `z = (class_mean − global_mean) / global_std` ### 统计测试 - **Mann-Whitney U 检验** — 对良性 vs 恶意分布进行非参数基于秩的比较;带有结值修正的正态近似 - **Welch's t 检验** — 采用精确 t 分布 CDF (Hart 近似) 的非等方差 t 检验 - **Cohen's d** — 每个特征的标准化效应量 - **Bootstrap 95% CI** — Cohen's d 的 B=500 次重采样,`[2.5th, 97.5th]` 百分位区间 - **Benjamini-Hochberg FDR 校正** — 校正多重测试的 p 值;将错误发现率控制在 5% ### ML 建模 - **决策树 (CART)** — 类别加权 Gini 不纯度:`w_c = N / (K × n_c)`;权重贯穿每一个递归的 `buildNode` 调用 - **高斯朴素贝叶斯** — 具有 `1e-9` 方差下限的对数空间似然;用于 ROC/PR 的 softmax 分数 - **分层 5 折交叉验证** — 各折保持类别比例;报告准确率、macro-F1 和 AUC 的均值 ± 标准差 - **ROC 曲线** — 对评分器输出进行阈值扫描;通过梯形法则计算 AUC - **Precision-Recall 曲线** — 同样进行阈值扫描;报告 AP (PR 曲线下面积) - **各类别 AUC** — 每个攻击类别的 One-vs-rest AUC ## 数据集 **CIC-IDS-2017** — 加拿大网络安全研究所,纽布伦斯威克大学。 共 8 个 CSV 文件,总大小约 847 MB,每行约 79 个网络流特征,按攻击类型进行标注: | 日期 | 文件 | 攻击类型 | |-----|------|---------| | Monday | `Monday-WorkingHours.pcap_ISCX.csv` | 仅 BENIGN | | Tuesday | `Tuesday-WorkingHours.pcap_ISCX.csv` | FTP-Patator, SSH-Patator | | Wednesday | `Wednesday-workingHours.pcap_ISCX.csv` | DoS Hulk, DoS GoldenEye, DoS Slowloris, Heartbleed | | Thursday AM | `Thursday-WorkingHours-Morning-WebAttacks.pcap_ISCX.csv` | Brute Force, XSS, SQL Injection | | Thursday PM | `Thursday-WorkingHours-Afternoon-Infilteration.pcap_ISCX.csv` | Infiltration | | Friday AM | `Friday-WorkingHours-Morning.pcap_ISCX.csv` | Bot, PortScan | | Friday PM (1) | `Friday-WorkingHours-Afternoon-PortScan.pcap_ISCX.csv` | PortScan | | Friday PM (2) | `Friday-WorkingHours-Afternoon-DDos.pcap_ISCX.csv` | DDoS | 下载地址:https://www.unb.ca/cic/datasets/ids-2017.html Kaggle 镜像:https://www.kaggle.com/datasets/cicdataset/cicids2017 ## 运行 React 仪表盘 ``` # 安装 dependencies npm install # 启动 dev server (在 http://localhost:5173 打开) npm run dev # 为 production 构建 npm run build ``` 然后打开应用,将一个或多个 CICIDS2017 CSV 文件拖放到登录页上,点击 **Launch Analysis**。 ## 运行 Streamlit 应用 ``` cd streamlit-app # 安装 Python dependencies pip install -r requirements.txt # 运行 streamlit run app.py ``` ## 设计 赛博朋克 / 玻璃拟态美学。深色背景 (`#020409`),霓虹青色 (`#00f5ff`),绿色 (`#00ff88`),紫色 (`#7b2fff`),红色 (`#ff2244`)。 字体: - **Chakra Petch** — 主标题,大尺寸展示 - **Oxanium** — UI 标题,导航,按钮 - **JetBrains Mono** — 数据值,代码,指标 - **Syne** — 正文文本 登录页具有 Canvas 雷达扫描动画和矩阵雨背景效果。所有页面切换均使用通过 Framer Motion 和 CSS keyframes 实现的交错显示动画。 ## 作者 由 [Pra1ham codes](https://github.com/Pra1hamcodes) 构建
标签:Apex, CICIDS2017, CMS安全, CSV数据处理, IP 地址批量处理, JavaScript, Kubernetes, React, ROC曲线, Syscalls, 主成分分析(PCA), 云安全态势管理, 代码示例, 仪表板, 决策树, 前端应用, 威胁情报分析, 客户端分析, 异常检测, 报告生成器, 探索性数据分析(EDA), 搜索语句(dork), 攻击模式分析, 数据分析, 机器学习, 浏览器端计算, 特征工程, 统计假设检验, 网络安全, 自定义脚本, 隐私保护, 零信任架构, 高斯朴素贝叶斯