FireFistisDead/Malware-Analysis

GitHub: FireFistisDead/Malware-Analysis

基于机器学习的Android恶意软件检测平台

Stars: 0 | Forks: 0

# ThreatScope - Android 恶意软件分析平台 一个基于机器学习的 Android 恶意软件检测系统,用于分析 APK 文件并将它们分类为 **恶意软件** 或 **安全**。 ## 📋 目录 - [概述](#overview) - [功能](#features) - [项目结构](#project-structure) - [工作流程](#workflow) - [安装](#installation) - [使用](#usage) - [数据集](#dataset) - [模型训练](#model-training) - [使用的技术](#technologies-used) ## 🔍 概述 ThreatScope 是一个高级恶意软件分析平台,它使用机器学习来检测恶意 Android 应用程序。该系统使用 **APKiD** 和 **apktool** 等工具从 APK 文件中提取特征,然后使用训练好的模型进行分类。 ## ✨ 功能 - **APK 上传与分析**:简单的网页界面用于上传和分析 APK 文件 - **特征提取**:自动提取包括以下 215 个特征: - Android 权限 - 混淆检测 - 反虚拟机技术 - 打包检测 - 反调试机制 - 下载器检测 - **基于 ML 的分类**:使用训练好的 SGD/随机森林分类器 - **网页界面**:现代、响应式的 UI,便于交互 ## 📁 项目结构 ``` Malware Analysis/ │ ├── app.py # Flask web application ├── malware_model.pkl # Trained ML model │ ├── Dataset/ │ └── Base DS/ │ ├── datasetfeaturescategories.csv │ └── drebin215dataset5560malware9476benign.csv │ ├── Malware Analysis/ │ └── NoteBook's/ │ └── Malware.ipynb # Model training notebook │ ├── NoteBook's/ │ └── Malware.ipynb # Alternative notebook │ └── templates/ └── index.html # Web UI template ``` ## 🔄 工作流程 ### 1. 数据准备 ``` Dataset Loading → Data Cleaning → Feature Engineering → Train-Test Split ``` ### 2. 模型训练管道 ``` graph LR A[Load Dataset] --> B[Clean Data] B --> C[Encode Labels] C --> D[Split Data 80/20] D --> E[Train Model] E --> F[Evaluate] F --> G[Save Model] ``` **步骤:** 1. 加载 Drebin 数据集(5,560 个恶意样本 + 9,476 个良性样本) 2. 转换类别标签(`S` = 恶意软件 → 1,`B` = 良性 → 0) 3. 清洗数据(处理缺失值,类型转换) 4. 分割为训练集(80%)和测试集(20%) 5. 训练 SGDClassifier 或 RandomForestClassifier 6. 评估准确率(目标:>95%) 7. 将模型保存为 `malware_model.pkl` ### 3. APK 分析管道 ``` APK Upload → APKiD Analysis → APKTool Decode → Permission Extraction → Feature Vector → ML Prediction → Result ``` **步骤:** 1. 用户通过网页界面上传 APK 文件 2. **APKiD** 扫描: - 混淆技术 - 反虚拟机保护 - 打包器 - 反调试 - 下载器 3. **apktool** 解码 `AndroidManifest.xml` 4. 从清单中提取所有权限 5. 创建与数据集列匹配的 215 特征向量 6. 加载训练好的模型并预测 7. 返回分类结果(恶意软件/安全) ## 🛠️ 安装 ### 先决条件 - Python 3.8+ - Java JDK(用于 apktool) - apktool 安装在 `C:\apktool\apktool.bat` - 通过 pip 安装 APKiD ### 设置 ``` # 克隆仓库 git clone https://github.com/FireFistisDead/Malware-Analysis.git cd Malware-Analysis # 安装 Python 依赖 pip install flask pandas scikit-learn joblib numpy matplotlib # 安装 APKiD pip install apkid # 安装 apktool(Windows) # 从 https://apktool.org/ 下载并放置于 C:\apktool\ ``` ## 🚀 使用 ### 运行 Web 应用程序 ``` cd "Malware Analysis" python app.py ``` 然后打开您的浏览器并导航到 `http://127.0.0.1:5000` ### 分析 APK 1. 打开网页界面 2. 点击上传区域 3. 选择 APK 文件 4. 等待分析完成 5. 查看预测结果(恶意软件/安全) ## 📊 数据集 该项目使用包含 215 个特征的 **Drebin 数据集**: | 指标 | 数量 | |------|------| | 总样本数 | 15,036 | | 恶意样本数 | 5,560 | | 良性样本数 | 9,476 | | 特征 | 215 | **特征类别:** - Android 权限 - API 调用 - 网络活动 - 硬件功能 - 意图过滤器 ## 🧠 模型训练 ### 使用的算法 1. **SGDClassifier**(随机梯度下降) - 损失:`log_loss` - 最大迭代次数:1000 - 启用早期停止 2. **RandomForestClassifier** - 估计器:100 - 随机状态:42 ### 性能指标 - **目标准确率**:>95% - 评估包括: - 精确率 - 召回率 - F1 分数 - 分类报告 ### 训练模型 打开 `Malware Analysis/NoteBook's/Malware.ipynb` 并运行所有单元格以: 1. 加载和预处理数据 2. 训练分类器 3. 评估性能 4. 保存模型 ## 🔧 使用的技术 | 类别 | 技术 | |------|------| | 后端 | Flask(Python) | | 机器学习/人工智能 | scikit-learn, pandas, numpy | | APK 分析 | APKiD, apktool | | 前端 | HTML5, CSS3, JavaScript | | 模型序列化 | joblib | ## 📝 API 端点 | 端点 | 方法 | 描述 | |------|------|------| | `/` | GET | 带有上传界面的主页 | | `/upload` | POST | 上传 APK 并获取预测 | | `/favicon.ico` | GET | Favicon 处理器 | ## 👥 作者 **FireFistisDead** - GitHub: [@FireFistisDead](https://github.com/FireFistisDead) ## 📄 许可证 本项目仅用于教育目的。 ## ⚠️ 声明 本工具仅用于教育和研究目的。在分析任何应用程序之前,请确保您有适当的授权。
标签:Android安全, Apex, APKiD, apktool, APK文件分析, Caido项目解析, DAST, DOM解析, Flask应用, URL发现, Web界面, 下载器检测, 反混淆, 反病毒技术, 反调试, 安全检测, 恶意软件分析, 数据科学, 机器学习, 机器学习分类, 机器学习模型, 机器学习算法, 梯度下降, 模型训练, 特征提取, 用户交互, 网络安全, 自定义DNS解析器, 虚拟机检测, 资源验证, 逆向工具, 随机森林, 隐私保护