LarcesUece/AIOps-Threat-Intelligence-Ensemble

GitHub: LarcesUece/AIOps-Threat-Intelligence-Ensemble

基于多源威胁情报和集成学习的 IP 地址风险分级系统,用于 AIOps 场景下的自适应网络安全防护。

Stars: 0 | Forks: 0

# 国际网络管理杂志 (2026) ## AIOps 中用于自适应网络安全的多源威胁情报数据方法 ## 作者 - Francisco V. J. Nobre - Davi O. Alves - Ramon S. Araujo - Janaína R. Santos - Renan L. Rodrigues - Rafael L. Gomes ## 描述 **AIOps-Threat-Intelligence-Ensemble** 是一个利用机器学习技术和网络威胁情报 (CTI) 的 IP 地址风险分类系统。该项目实现了多种机器学习模型,包括集成方法,根据网络威胁情报信号将 IP 划分为不同的风险级别(低、中、高)。 该系统使用包含以下内容的端到端 pipeline: - 数据预处理和归一化 - 使用加权投票自动为 IP 打标签 - 训练多个 ML 模型 - 性能比较评估 - 实时预测 ## 支持的模型 该系统支持以下机器学习模型: ### 单独模型 - **Random Forest**:带有投票机制的决策树集成 - **SVM (Support Vector Machine)**:最大间隔分类器 - **Neural Network (MLP)**:多层感知机 - **Decision Tree**:单一决策树 - **KNN (K-Nearest Neighbors)**:基于邻域的分类器 - **CNN (Convolutional Neural Network)**:卷积神经网络 ### 集成模型 - **Voting Classifier**:通过投票(软/硬)结合多个模型 - **Stacking Classifier**:使用元学习器堆叠模型 该系统还支持使用和不使用 **SMOTE** (Synthetic Minority Over-sampling Technique) 进行训练,以实现类别平衡。 ## 系统如何对 IP 进行分类 AIOps-CTI-Ensemble 分多个阶段对 IP 地址风险进行分类: 1. **情报收集**:集成来自多个 CTI (Cyber Threat Intelligence) 源的数据 2. **归一化**:标准化特征,如威胁计数、信誉评分等 3. **自动打标签**:应用加权投票算法自动为 IP 打标签 4. **模型训练**:在已打标签的数据上训练多种 ML 算法 5. **集成学习**:结合不同模型的预测结果以提高准确性 6. **实时预测**:使用训练好的模型对新 IP 进行分类 该系统在 AIOps (Artificial Intelligence for IT Operations) 场景中尤为有效,在这些场景中,快速准确地识别恶意 IP 对基础设施安全至关重要。 ## 安装 本项目使用 **uv** 来管理依赖和虚拟环境。 ### 前置条件 - Python >= 3.13 - uv (package manager) ### 安装步骤 1. **克隆仓库:** ``` git clone git@github.com:LarcesUece/AIOps-Threat-Intelligence-Ensemble.git cd AIOps-Threat-Intelligence-Ensemble ``` 2. **安装 uv(如果尚未安装):** ``` # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # Linux/macOS curl -LsSf https://astral.sh/uv/install.sh | sh ``` 3. **创建虚拟环境并安装依赖:** ``` uv sync ``` 4. **激活虚拟环境:** ``` # Windows .venv\Scripts\activate # Linux/macOS source .venv/bin/activate ``` ## 项目结构 ``` AIOps-CTI-Ensemble/ ├── data_prep_pipeline.py # Dataset preparation pipeline ├── ml_pipeline.py # Model training pipeline ├── ip_prediction.py # IP prediction script ├── pyproject.toml # Dependency configuration (uv) ├── scaler_params.pkl # Feature normalization parameters ├── config/ # Project configuration ├── src/ # Main source code │ ├── data_processing.py # Data processing │ ├── dataset_classifier.py # Dataset classifier │ ├── models.py # Model definitions │ ├── train.py # Training │ ├── evaluate.py # Evaluation │ ├── normalize.py # Normalization │ └── visualization.py # Visualizations ├── datasets/ # Input datasets ├── data/ # Trained models and results │ ├── models/ # Models without SMOTE │ ├── models_s/ # Models with SMOTE │ └── experiments/ # Experiment outputs └── logs/ # Execution logs ``` ## 数据集准备 Pipeline 脚本 [data_prep_pipeline.py](data_prep_pipeline.py) 负责初始数据的准备工作: ### 特征 1. **特征归一化** - 将 IP 转换为数字格式 - 归一化分数和计数 - 将特征缩放到 0-1 范围 2. **自动打标签** - 应用 `WeightedVotingClassifier` 为 IP 打标签 - 分为 3 个级别:低风险、中风险、高风险 - 使用多个 CTI 特征进行决策 ### 运行 ``` python data_prep_pipeline.py ``` ### 输入/输出 - **输入**:[datasets/dataset_ip.csv](datasets/dataset_ip.csv) (原始数据) - **输出**: - `datasets/dataset_ip_norm.csv` (归一化数据) - `datasets/dataset_ip_classified.csv` (已打标签数据) ### 流程 ``` Raw Dataset → Normalization → Labeling → Prepared Dataset ``` ## 训练 Pipeline (ML Pipeline) 脚本 [ml_pipeline.py](ml_pipeline.py) 管理完整的模型训练过程: ### 特征 1. **数据准备** - 加载已打标签的数据集 - 分层划分为训练/测试集 - 应用 SMOTE(可选)进行平衡 2. **模型训练** - 训练所有支持的模型 - 优化超参数 - 保存训练好的模型 3. **全面评估** - 指标:Accuracy、Precision、Recall、F1-Score - 混淆矩阵 - ROC 曲线 - 特征重要性 - 详细报告 4. **可视化** - 指标比较图表 - 类别分布 - 特征相关性 - 执行时间 ### 运行 ``` # 不使用 SMOTE 进行训练 python ml_pipeline.py # 要使用 SMOTE 进行训练,请编辑 config/config.py: # USE_SMOTE = True ``` ### 输出 结果保存在 `data/experiments/experiment_[WITH/WITHOUT]_smote_[timestamp]/` 目录下: - `report/`:CSV 和 Markdown 格式的结果 - `images/`:图表和可视化 - 模型保存在 `data/models/` 或 `data/models_s/` 目录下 ## IP 预测 脚本 [ip_prediction.py](ip_prediction.py) 允许对新的 IP 地址进行分类: ### 操作模式 #### 1. 单个 IP 预测 ``` python ip_prediction.py ``` 在代码中,配置: ``` # 选择模型 MODEL_NAME = "Voting" # or "Random Forest", "SVM", "CNN", etc. # 选择 models 目录 MODELS_DIR = "data/models" # without SMOTE # MODELS_DIR = "data/models_s" # with SMOTE ``` #### 2. 批量预测 (CSV) ``` # 在代码中,配置: predictor = IPClassificationPredictor( models_dir="data/models", model_name="Voting" ) # 对于 CSV: results = predictor.predict_from_csv("input_ips.csv", "output_results.csv") ``` ### 可用于预测的模型 - "Random Forest":最适合平衡数据集 - "SVM":高精度,速度较慢 - "Neural Network":适合复杂模式 - "Decision Tree":快速,可解释性强 - "KNN":适合局部相似性 - "CNN":最适合类序列特征 - "Voting":结合多个模型 - "Stacking":**推荐** - 带有元学习器的高级集成方法 ### 输入格式 CSV 文件必须包含与训练期间使用的相同特征: - IP 地址 - 威胁计数 - 信誉评分 - 拒绝列表状态 - 地理信息 - 等等 ### 使用示例 ``` from ip_prediction import IPClassificationPredictor # 初始化 predictor predictor = IPClassificationPredictor( models_dir="data/models", model_name="Voting" ) # 单个 IP 的预测 ip_data = { 'ip': '192.168.1.100', 'threat_count': 5, 'reputation_score': 0.7, # ... other features } result = predictor.predict_single(ip_data) print(f"IP: {result['ip']}") print(f"Risk Level: {result['risk_level']}") print(f"Confidence: {result['confidence']:.2%}") ``` ## 日志与监控 所有脚本都会在 `logs/` 目录下生成详细的日志: - `data_preprocessing_[timestamp].log` - `ml_pipeline_[timestamp].log` - `ip_prediction_[timestamp].log` ## 实验结果 实验会自动保存: - 评估指标 (CSV) - Markdown 报告 - 可视化图表 - 序列化模型 (joblib/keras) 可在以下位置获取:`data/experiments/experiment_*/`
标签:AIOps, Apex, BSD, CNN, IP分类, IP 地址批量处理, KNN, K近邻, MLP, PE 加载器, Python, Random Forest, SMOTE, Stacking Classifier, SVM, Voting Classifier, 决策树, 卷积神经网络, 多层感知机, 威胁情报, 学术研究, 实时预测, 密码管理, 开发者工具, 异常检测, 插件系统, 支持向量机, 数据归一化, 数据挖掘, 数据预处理, 无后门, 机器学习, 深度学习, 网络安全, 网络安全论文, 自动化标签, 逆向工具, 随机森林, 隐私保护, 集成学习, 风控模型