Ahmedraza0725/Malware_classifier

GitHub: Ahmedraza0725/Malware_classifier

基于机器学习的桌面端恶意文件分类与风险评分工具,支持 PE、PDF、Office 等多格式的静态特征提取与自动分类。

Stars: 0 | Forks: 0

# 🦠 MALWARE-CLASSIFIER ### 基于 ML 的文件风险评分 — GUI 版 *特征提取 → 训练 → 评估 → 预测,支持 PE、PDF、Office、脚本和通用文件 — 封装在专业的 Tkinter 桌面应用程序中。* ![Python](https://img.shields.io/badge/Python-3.8+-3776AB?style=flat&logo=python&logoColor=white) ![scikit--learn](https://img.shields.io/badge/scikit--learn-ML-F7931E?style=flat&logo=scikitlearn&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-brightgreen?style=flat) ![Status](https://img.shields.io/badge/Status-Educational-ff8c00?style=flat) ![GUI](https://img.shields.io/badge/GUI-Tkinter-00d4ff?style=flat)
## 📖 关于 **Malware-Classifier** 是一款教育性质的机器学习工具,演示了静态文件风险评分的完整 pipeline:从文件中提取 byte 级和结构化特征,在标记数据上训练多个 ML 模型,对它们进行评估,并使用表现最佳的模型将未见过的文件分类为 **Benign**(良性)、**Caution**(可疑)或 **Malicious**(恶意)。 与仅针对 PE 的工具不同,它使用 **通用特征 schema**,因此可以有意义地分析 PE 可执行文件、PDF、Office 文档、脚本、归档文件和通用文件 — 所有这些都通过一个统一的模型完成。 ## ✨ 特性 | 类别 | 详情 | |---|---| | 🧠 **多模型引擎** | Random Forest、Logistic Regression、SVM 和 Neural Network (MLP) — 自动选择最佳验证表现者 | | 🗂️ **通用特征 Schema** | 28 个特征,涵盖熵、可打印字符/空字符比例、可疑关键词、URL/IP 以及特定格式的结构(PE/PDF/Office) | | 📦 **多格式支持** | PE(`.exe/.dll/.sys/...`)、PDF、Office(`.docx/.xlsx/.pptx` + 宏变体)、脚本(`.js/.vbs/.ps1/.bat/...`)、归档文件和通用文件 | | 🔎 **PE 深度检测** | 区段数量、导入/导出、数字签名存在情况、TLS 回调(通过 `pefile`) | | 📄 **PDF 启发式** | 嵌入式 JavaScript、自动打开/启动操作、嵌入文件和对象计数 | | 📝 **Office 启发式** | VBA 宏存在情况、嵌入对象计数、外部链接计数 | | 🖥️ **专业 GUI** | 带选项卡的 Tkinter 界面 — 训练模型、评估、目录扫描、关于 | | 📊 **目录扫描器** | 递归扫描文件夹,以置信度百分比将每个文件标记为 Benign/Caution/Malicious,并将结果导出为 CSV | | 🧮 **模型评估** | 内置准确率、精确率、召回率、F1、混淆矩阵、ROC-AUC 和交叉验证 | ## 🖼️ 预览 ``` ┌──────────────────────────────────────────────────────────┐ │ MALWARE CLASSIFIER v3.0 │ ├──────────────────────────────────────────────────────────┤ │ [ Train Model ] [ Evaluate ] [ Scan Directory ] [ About ] │ │ │ │ File Type Verdict Confidence │ │ ────────────────────────────────────────────────────── │ │ clean_script.py Script BENIGN 97.2% │ │ script_with_urls.vbs Script CAUTION 61.4% │ │ eicar_test.txt Generic MALICIOUS 99.8% │ │ │ │ Scan complete — 3 files | 1 malicious | 1 needs review │ └──────────────────────────────────────────────────────────┘ ``` ## 🧰 环境要求 - **Python:** 3.8+ - **Python package:** `tkinter`(通常已自带;在某些 Linux 发行版上需单独安装) ``` sudo apt install python3-tk -y # only needed on some Linux distros ``` ### Python 依赖 ``` numpy>=1.24.0 scikit-learn>=1.3.0 pefile>=2023.2.7 ``` ## 🚀 安装与使用 ``` # 1. 克隆 repository git clone https://github.com//malware-classifier.git cd malware-classifier # 2. 安装 dependencies pip install -r requirements.txt # 3. 运行它 python3 malware_classifier.py ``` ### 快速开始 1. 转到 **Train Model** 选项卡,使用内置/合成数据集(或您自己的标记数据集)进行训练 2. 检查 **Evaluate** 选项卡以查看准确率、精确率/召回率、F1 和混淆矩阵 3. 切换到 **Scan Directory**,将其指向 `test_samples/`(或任何文件夹),然后点击扫描 4. 将结果导出为 CSV 以用于您的取证报告 ## 📁 项目结构 ``` malware-classifier/ ├── malware_classifier.py # Main application (GUI + feature extraction + ML pipeline) ├── requirements.txt ├── LICENSE ├── .gitignore ├── README.md │ └── test_samples/ # Sample files for exercising the classifier ├── 1_benign_samples/ │ ├── clean_script.py # Plain, harmless Python script │ ├── sample_doc.docx # Macro-free Word document │ └── setup_driver_p1000.exe # Inert PE-header stub (no code, cannot execute) │ ├── 2_caution_samples/ │ ├── debug_macro.docx # Docx with a placeholder macro marker (inert bytes) │ └── script_with_urls.vbs # Harmless script with keyword/URL triggers, no real logic │ └── 3_malicious_samples/ ├── eicar_test.txt # Standard EICAR antivirus test string └── eicar_payload.bat # Batch wrapper that echoes the same EICAR string ``` ## 🧪 测试样本 `test_samples/` 下的所有文件都是**设计上安全的**,仅用于端到端验证分类器的检测逻辑: - **Benign** — 真正无害的文件(普通脚本、普通 docx、不含代码或入口点的惰性 PE 头存根)。 - **Caution** — 带有启发式触发 *token*(URL、宏标记)但**没有功能性或可执行 payload** 的文件。 - **Malicious** — 业界标准的 [EICAR 测试字符串](https://en.wikipedia.org/wiki/EICAR_test_file),被全球每个防病毒引擎识别,专用于安全的检测测试。它不是恶意软件,不会对系统造成损害。 随意添加您自己的标记样本以进行更严格的测试 — 只需将真正的恶意二进制文件排除在版本控制之外(参见 `.gitignore`)。 ## 🏗️ 架构 | 组件 | 职责 | |---|---| | `_generic_features()` | 熵、可打印字符/空字符比例、可疑关键词、URL/IP、base64 blob | | PDF 特征块 | JS/启动/打开操作标志,嵌入文件和对象计数 | | Office 特征块 | 宏存在情况、嵌入对象、外部链接 | | PE 特征块 | 区段、导入/导出、数字签名、TLS 回调(通过 `pefile`) | | `RandomForestClassifier` / `SVC` / `LogisticRegression` / `MLPClassifier` | 候选模型,交叉验证后自动选择最佳模型 | | `MalwareClassifierGUI` | Tkinter GUI — 训练 / 评估 / 扫描目录 / 关于 选项卡 | ## 🗺️ 路线图 - [ ] 改进对 `.docm`/`.xlsm` 宏提取的支持 - [ ] 在 ML 评分的基础上集成 YARA 规则 - [ ] 将扫描报告导出为 PDF/HTML - [ ] 在用户提供的标记数据集上进行批量重训 ## 📜 许可证 基于 **MIT License** 分发。详情请参阅 [`LICENSE`](LICENSE)。
为数字取证社区而构建 🔐
标签:Apex, DNS 反向解析, Go语言工具, Python, Ubuntu, 云安全监控, 无后门, 机器学习, 特征提取, 逆向工具, 静态分析