Vignesh1231234/Malware-Detection-Using-AI

GitHub: Vignesh1231234/Malware-Detection-Using-AI

基于静态 PE 头部特征分析与多种机器学习分类器的端到端恶意软件检测 pipeline。

Stars: 0 | Forks: 0

# 🛡️ 基于 AI 的恶意软件检测 一个机器学习 pipeline,它使用静态 PE(Portable Executable)头部特征将 Windows 可执行文件分类为**良性**或**恶意** —— 无需执行或沙盒化。 ![Python](https://img.shields.io/badge/Python-3.10%2B-blue) ![scikit--learn](https://img.shields.io/badge/scikit--learn-1.3-orange) ![CI](https://github.com/your-username/malware-detection-ai/actions/workflows/ci.yml/badge.svg) ![License](https://img.shields.io/badge/license-MIT-lightgrey) ![Status](https://img.shields.io/badge/status-educational%2Fportfolio-orange) ## 目录 - [概述](#overview) - [截图](#screenshots) - [使用的技术](#technologies-used) - [安装说明](#installation) - [使用方法](#usage) - [目录结构](#folder-structure) - [模型性能](#model-performance) - [使用你自己的数据](#using-your-own-data) - [未来改进](#future-improvements) - [作者](#author) - [许可证](#license) ## 概述 本项目实现了一个端到端的静态恶意软件检测 pipeline: 1. **合成数据集生成** (`src/generate_synthetic_dataset.py`) 为良性和恶意类别生成真实的 PE 头部特征向量,并带有刻意的类别重叠,使任务反映出真实世界中的模糊性,而不是轻松可分的。 2. **数据加载与预处理** (`src/data_loader.py`) 加载数据集,执行分层的训练/测试集划分,并对特征进行标准化。 3. **模型训练与选择** (`src/train_model.py`) 对四个候选分类器 —— Random Forest、Gradient Boosting、Logistic Regression 和 SVM —— 进行交叉验证,并根据 F1 分数自动选择表现最佳的模型。 4. **评估与可视化** (`src/evaluate_model.py`) 生成混淆矩阵、ROC 曲线、特征重要性图表和模型对比图表,并保存分类报告。 5. **预测 CLI** (`src/predict.py`) 对具有相同特征 schema 的 CSV 文件中的新样本进行评分,并报告恶意软件概率 + 分类结果。 `src/main.py` 通过一个命令运行完整的 pipeline(生成 → 训练 → 评估)。 ## 截图 **模型对比** —— 四个候选分类器的交叉验证 F1 分数: ![模型对比](https://raw.githubusercontent.com/Vignesh1231234/Malware-Detection-Using-AI/main/images/model_comparison.png) **混淆矩阵** —— Random Forest 在留出测试集上的表现: ![混淆矩阵](https://raw.githubusercontent.com/Vignesh1231234/Malware-Detection-Using-AI/main/images/confusion_matrix.png) **ROC 曲线:** ![ROC 曲线](https://raw.githubusercontent.com/Vignesh1231234/Malware-Detection-Using-AI/main/images/roc_curve.png) **特征重要性** —— 哪些静态 PE 特征驱动了分类器的决策: ![特征重要性](https://raw.githubusercontent.com/Vignesh1231234/Malware-Detection-Using-AI/main/images/feature_importance.png) ## 使用的技术 | 类别 | 工具 | |---|---| | 语言 | Python 3.10+ | | ML / 建模 | scikit-learn (Random Forest, Gradient Boosting, Logistic Regression, SVM) | | 数据处理 | pandas, NumPy | | 可视化 | Matplotlib, Seaborn (headless/Agg backend) | | 模型持久化 | joblib | | 测试 | pytest | | CI/CD | GitHub Actions | ## 安装说明 ``` git clone https://github.com/your-username/malware-detection-ai.git cd malware-detection-ai pip install -r requirements.txt ``` **依赖项** (`requirements.txt`): ``` numpy>=1.24 pandas>=2.0 scikit-learn>=1.3 matplotlib>=3.7 seaborn>=0.12 joblib>=1.3 pytest>=7.4 ``` ## 使用方法 ### 运行完整的 pipeline ``` python src/main.py --n-samples 4000 ``` 这将生成合成数据集,训练并选择最佳模型,并将所有评估图表写入 `images/`。 ### 单独运行各步骤 ``` # 生成合成 PE-feature 数据集 python src/generate_synthetic_dataset.py --n-samples 4000 # 训练并交叉验证 candidate models python src/train_model.py # 评估最佳模型并生成图表 python src/evaluate_model.py ``` ### 对新样本进行分类 ``` python src/predict.py --input path/to/samples.csv --output results.csv ``` 输入的 CSV 必须包含与训练时使用的相同特征列(参见 `src/config.py::FEATURE_COLUMNS`)。 ### 运行测试套件 ``` pytest tests/ -v ``` ## 目录结构 ``` malware-detection-ai/ ├── README.md ├── LICENSE ├── .gitignore ├── requirements.txt # Python dependencies ├── package.json # placeholder, for structure completeness ├── pom.xml # placeholder, for structure completeness ├── src/ │ ├── config.py # Paths, feature schema, constants │ ├── generate_synthetic_dataset.py │ ├── data_loader.py # Loading, splitting, scaling │ ├── train_model.py # Cross-validation + model selection │ ├── evaluate_model.py # Metrics + plot generation │ ├── predict.py # CLI for scoring new samples │ └── main.py # Full pipeline entry point ├── data/ # Generated dataset (gitignored) ├── models/ # Saved model + scaler (gitignored) ├── images/ # Evaluation plots (committed, used in this README) ├── docs/ │ ├── methodology.md # Data, features, modeling, and limitations │ └── classification_report.txt ├── tests/ │ ├── test_dataset_generation.py │ └── test_model_pipeline.py └── .github/ ├── workflows/ci.yml ├── ISSUE_TEMPLATE/ └── PULL_REQUEST_TEMPLATE.md ``` ## 模型性能 选择的最佳模型:**Random Forest**(200 个 estimators,最大深度 12) | 指标 | 良性 | 恶意 | |---|---|---| | 精确率 | 0.99 | 0.99 | | 召回率 | 1.00 | 0.99 | | F1-score | 0.99 | 0.99 | **总体准确率:** 0.99 · **ROC AUC:** 0.9997 完整的分类报告:[`docs/classification_report.txt`](docs/classification_report.txt) · 完整的方法论:[`docs/methodology.md`](docs/methodology.md) ## 使用你自己的数据 只要你自己的 CSV 具有与 `src/config.py::FEATURE_COLUMNS` 相同的列,加上一个 `IsMalware` (0/1) 标签列,就可以用它替换合成数据集。如果你想构建真实世界的数据集,像 [`pefile`](https://github.com/erocarrera/pefile) 这样的工具可以从真实的 `.exe`/`.dll` 文件中提取这些确切的 PE 头部字段 —— 只是要小心如何以及在何处存储任何真实的恶意软件样本。 ``` python src/train_model.py --data path/to/your_dataset.csv ``` ## 未来改进 - [ ] 使用 `pefile` 的真实世界 PE 特征提取模块(对实际的、安全沙盒化的二进制文件进行静态分析) - [ ] 动态/行为特征(API 调用序列、网络活动),用于构建混合静态+动态模型 - [ ] 深度学习方法:在字节级文件表示上使用 CNN,或对反汇编指令使用 transformer - [ ] 通过 `GridSearchCV` / `Optuna` 进行超参数调优 - [ ] 基于个体预测的 SHAP 模型可解释性 - [ ] 封装 `predict.py` 的 REST API (FastAPI),以便集成到其他工具中 - [ ] 用于可重现部署的 Docker 容器化 ## 作者 姓名 : Vignesh V 邮箱 : vignesh12311234@gmaail.com ## 许可证 基于 [MIT License](./LICENSE) 发布。
标签:Apex, PE文件分析, Python, scikit-learn, 云安全监控, 安全规则引擎, 无后门, 机器学习, 逆向工具, 静态分析