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解析器, 虚拟机检测, 资源验证, 逆向工具, 随机森林, 隐私保护