haripatel07/android-malware-detector
GitHub: haripatel07/android-malware-detector
基于随机森林和静态分析的 Android 恶意软件检测系统,通过提取 APK 权限和字节码特征实现高准确率的恶意应用识别。
Stars: 0 | Forks: 0
# Android 恶意软件检测器
一个基于机器学习的 Android 恶意软件检测系统,利用静态分析技术分析 APK 文件,以识别潜在的恶意应用程序。
## 功能特点
- **静态分析**:无需执行即可对 Android APK 文件进行全面的静态分析
- **特征提取**:提取 215 个不同的特征,包括权限、API 调用和字节码分析
- **机器学习**:使用经过训练的 Random Forest 分类器进行恶意软件检测
- **高准确率**:基于包含数千个恶意软件和良性样本的 Drebin 数据集进行训练
- **易于使用**:简单的命令行界面,用于快速分析 APK
## 工作原理
检测器使用静态分析通过以下方式检查 Android 应用程序:
1. **Manifest 分析**:提取请求的权限和 intent 过滤器
2. **字节码分析**:分析 DEX 文件以识别类名和方法调用
3. **特征向量构建**:构建 215 维特征向量
4. **机器学习分类**:使用预训练的 Random Forest 模型将其分类为良性或恶意
## 安装说明
### 前置条件
- Python 3.8 或更高版本
- pip 包管理器
### 安装步骤
1. 克隆仓库:
```
git clone
cd android-malware-detector
```
2. 创建虚拟环境(推荐):
```
python -m venv venv
# 在 Windows 上:
venv\Scripts\activate
# 在 Linux/Mac 上:
source venv/bin/activate
```
3. 安装依赖项:
```
pip install -r requirements.txt
```
## 使用方法
### 分析单个 APK
```
python main.py path/to/your/app.apk
```
### 输出示例
```
Starting static analysis of: ZArchiver.apk
Successfully extracted 215 features.
Model is analyzing the features...
==============================
[+] RESULT: BENIGN
Confidence: 99.21%
==============================
```
## 项目结构
```
android-malware-detector/
├── main.py # Main entry point for APK analysis
├── src/
│ └── feature_extractor/
│ └── extractor.py # Core feature extraction logic
├── models/
│ ├── android_malware_model.joblib # Trained ML model
│ └── feature_columns.joblib # Feature column definitions
├── data/
│ ├── ZArchiver.apk # Sample benign APK
│ ├── drebin-215-dataset-5560malware-9476-benign.csv # Training data
│ └── dataset-features-categories.csv # Feature categories
└── README.md
```
## 依赖项
- **androguard**:用于 APK 静态分析和 DEX 字节码解析
- **pandas**:数据操作和特征向量构建
- **scikit-learn**:机器学习算法和模型训练
- **joblib**:模型序列化和加载
## 训练模型
要使用新数据重新训练模型:
```
python src/model/train_model.py
```
这将执行以下操作:
- 加载 Drebin 数据集
- 预处理数据
- 训练新的 Random Forest 分类器
- 保存更新后的模型和特征列
## 数据集
该模型在 Drebin 数据集上进行训练,其中包含:
- 5,560 个恶意软件样本
- 9,476 个良性应用程序
- 每个样本 215 个特征
## 性能表现
当前模型通过全面的静态分析,在区分恶性和良性 Android 应用程序方面达到了很高的准确率。
## 安全提示
该工具仅执行静态分析,应作为综合安全评估的一部分使用。为了彻底检测恶意软件,请务必将其与动态分析和人工审查结合起来使用。
## 开源许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 免责声明
本工具仅供教育和研究目的使用。作者不对因使用本软件造成的任何误用或损害负责。
## 部署
使用 Docker 构建并运行:
```
docker build -t android-malware-detector .
docker run -p 8000:8000 android-malware-detector
```
## API 参考
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| POST | /predict | 上传 APK,返回恶意软件预测结果 |
| GET | /health | 健康检查 |
## API 用法
### POST /predict
- 请求:multipart/form-data,键名为 `file`(APK 文件)
- 响应:
- `prediction`:`malware` 或 `benign`
- `confidence`:浮点数(模型概率)
### GET /health
- 响应:`{"status": "ok"}`
## .env
根据 `.env.example` 创建 `.env` 文件,并根据需要调整值。
标签:Android安全, Android恶意软件检测, Apex, APK分析, Drebin数据集, Python, 云安全监控, 人工智能, 恶意应用识别, 无后门, 机器学习, 特征提取, 用户模式Hook绕过, 目录枚举, 移动安全, 网络安全, 请求拦截, 逆向工具, 随机森林, 隐私保护, 静态分析