KartikeyAhiwar/Android-Threat-Intelligence-System

GitHub: KartikeyAhiwar/Android-Threat-Intelligence-System

基于机器学习的Android恶意软件检测系统,通过提取APK权限特征实现高准确率的恶意应用分类。

Stars: 0 | Forks: 0

# 使用机器学习进行 Android 恶意软件检测 本节详细介绍了我们提出的分类系统。本研究引入了一个使用更新数据源并旨在实现高性能的 Android 恶意软件检测系统。该系统分为两个主要阶段:首先是数据收集和模型训练,其次是使用 Streamlit 测试训练好的模型。 图展示了本研究中使用的数据收集系统和模型训练的图表。该架构分为四个主要部分:(1) 数据集 —— 由收集用于分析的良性 APK 和恶意 APK 组成;(2) 特征提取 —— 使用 Androguard 从 APK 中提取静态特征(如权限)。这些特征被格式化并存储在逗号分隔值 (CSV) 文件中以用于训练。最后,(3) 数据被输入到不同的机器学习分类器中以获得评估结果。 ![img_4.png](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/29b374ee6a171829.png) 训练阶段完成后,模型使用 Streamlit 部署,以执行图中所示的步骤。首先,(A) 通过 Streamlit 界面上传一个 APK 文件作为输入数据。(B) 系统使用 Androguard 工具提取相关信息并返回一个特征向量。接下来,(C) 该向量被传递给训练好的模型进行预测。最后,(D) 显示预测结果。在我的实现中,我没有将模型部署到移动设备上,而是在训练阶段后使用 Streamlit 进行测试和评估。 ![img_3.png](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3be3e8cbd9171830.png) ## 项目结构 项目目录组织如下: ``` Android-malware-detection/ │ ├── File apk test/ # Folder containing APK files for testing │ ├── Benign/ # APK files classified as benign │ └── Malware/ # APK files classified as malware │ ├── ML_Model_Final/ # Trained machine learning models │ ├── Random Forest.joblib # Saved Random Forest model │ ├── apk_permissions_analysis.csv # CSV file containing extracted permissions ├── data.csv # Processed dataset for training/testing │ ├── extracted_features_permission.py # Extracts permissions from APK files using Androguard ├── features.py # Defines a list of permissions to extract as features ├── malware-detection-android.ipynb # Model training ├── predict.py # Predicts whether an APK file is malicious or benign │ ├── venv/ # Virtual environment for Python dependencies └── External Libraries # Python libraries required for the project ``` ## 数据集信息 本项目使用 **NATICUSdroid (2022)** 数据集的增强版本,并结合了额外的应用程序样本: - **NATICUSdroid 数据集**: - 包含 **29,333 个应用程序样本**: - **15,169** 个恶意应用程序 - **14,175** 个良性应用程序 - 提取了 **85 个权限** - 数据以二进制格式编码:**1**(权限存在),**0**(权限不存在)。 - **额外的应用程序**: - 增加了 **2,500 个未提取的应用程序**: - **1,000 个良性应用程序**: - 300 个来自 ApkPure 的应用程序(2024 年 8 月) - 700 个来自 CICMalDroid (2020) 数据集的应用程序 - **1,500 个恶意应用程序**: - 获取自 **Maloid-DS (2024)** 数据集。 ### 最终数据集统计: - **15,175 个良性应用程序** - **16,669 个恶意应用程序** - 提取了 **85 个权限**。 ## 关键组件 ### 1. 提取特征权限 (`extracted_features_permission.py`) 此脚本使用 **Androguard** 库从 APK 文件中提取权限。它处理存储在 `File apk test/` 文件夹中的 APK 文件。 ### 2. 特征定义 (`features.py`) 此文件包含用于恶意软件分类的权限(特征)列表。示例权限包括: ``` features = [ 'android.permission.GET_ACCOUNTS', 'com.sonyericsson.home.permission.BROADCAST_BADGE', 'android.permission.READ_PROFILE', 'android.permission.MANAGE_ACCOUNTS', ... ] ``` ### 3. 恶意软件预测 (`predict.py`) 此脚本将 APK 文件作为输入,并使用训练好的模型(Random Forest 和 SVC)预测它是 **恶意** 的还是 **良性** 的。 ### 4. 训练好的模型 (`ML_Model_Final/`) - **Random Forest.joblib**:用于恶意软件检测的训练好的 Random Forest 模型。 - **SVC.joblib**:训练好的 Support Vector Classifier 模型。 ### 5. 测试 APK 文件 (`File apk test/`) 包含用于测试模型的 APK 文件: - `Benign/`:标记为良性的 APK。 - `Malware/`:标记为恶意软件的 APK。 ## 依赖项 该项目使用 Python 3 和以下库: - **Androguard**:用于从 APK 文件中提取权限。 - **scikit-learn**:用于机器学习模型训练和预测。 - **joblib**:用于保存和加载训练好的模型。 - **pandas**:用于数据操作和分析。 ### 安装依赖项 设置虚拟环境并安装所需的库: ``` # 创建虚拟环境 python -m venv venv # 激活虚拟环境 source venv/bin/activate # On macOS/Linux venv\Scripts\activate # On Windows # 安装所需库 pip install androguard scikit-learn pandas joblib ``` ## 如何运行项目 在开始之前,请运行以下命令安装所有必要的依赖项: ``` pip install -r requirements.txt ``` 1. **提取权限**: - 运行 `extracted_features_permission.py` 从位于 `File apk test/` 中的 APK 文件提取权限。 python extracted_features_permission.py 2. **定义特征**: - 如有必要,修改或更新 `features.py` 中的权限列表。 3. **预测恶意软件**: - 预测系统是使用 Streamlit 实现的。运行以下命令以启动 Streamlit 应用程序: streamlit run predict.py 4. **模型训练**(可选): - 使用文件 `malware-detection-android.ipynb` 训练机器学习模型。在 Google Colab 或 Jupyter Notebook 上打开此文件以: - 预处理来自 `data.csv` 的数据。 - 训练模型,如 Random Forest 和 SVC。 - 使用 **joblib** 将训练好的模型保存在 `ML_Model_Final/` 目录中。 ## 结果 结果表显示,机器学习算法在检测 Android 恶意软件方面都取得了很高的效果,准确率和 F-measure 范围在 96.7% 到 97.3% 之间。这些数据令人印象深刻,表明算法在此任务中具有良好的分类能力。其中,CatBoost 取得了最好的性能,准确率和 F-measure 最高,为 97.3%。Random Forest 也表现非常好,以 97.2% 位居第二。其他算法如 SVM、Decision Tree 和 XGBoost 表现相当一致,准确率和 F-measure 在 96.7% 和 96.8% 之间。 在考虑执行时间时,算法之间的差异变得更加明显。Decision Tree 是最快的算法,仅耗时 0.28 秒。Random Forest 和 XGBoost 的执行时间分别为 4.30 秒和 1.02 秒,明显快于 CatBoost(16.95 秒)和 SVM(17.64 秒)。总体而言,虽然 CatBoost 和 Random Forest 在准确率方面表现出色,但如果优先考虑准确率,CatBoost 是最佳选择,而在需要快速处理速度时,Decision Tree 是合适的选择。 | Metrics | CatBoost | Random Forest | XGBoost | Decision Tree | SVM | |---------------|----------|---------------|---------|---------------|-------| | Accuracy | 97.3% | 97.2% | 96.8% | 96.7% | 96.7% | | F-measure | 97.3% | 97.2% | 96.8% | 96.7% | 96.7% | | Time (second) | 16.95s | 4.30s | 1.02s | 0.28s | 17.64s| ## 结论 恶意软件应用程序对智能手机构成严重风险,因为它们可以窃取个人数据并导致经济损失。该方法使用 Android 应用程序的权限作为特征来识别恶意软件,并将其与安全应用程序区分开来。权限是使用 Androguard 提取的,以生成特征向量。测试了不同的机器学习模型,例如 Support Vector Machine、Decision tree algorithm、CatBoost、XGBoost 和 Random forest。结果表明,Random Forest 算法是最平衡的模型,达到了 97.2% 的准确率和 F1 分数,时间为 4.30。 ## 参考文献 1. **NATICUSdroid Dataset (2022)** 2. **CICMalDroid Dataset (2020)** 3. **Maloid-DS Dataset (2024)** 4. APK samples sourced from ApkPure.
标签:Androguard, Android恶意软件检测, Apex, APK分析, Kubernetes, NoSQL, Python, Streamlit, 云安全监控, 人工智能, 分类算法, 无后门, 机器学习, 权限分析, 样本分析, 特征提取, 用户模式Hook绕过, 病毒检测, 目录枚举, 移动安全, 网络安全, 良性样本, 访问控制, 逆向工具, 隐私保护, 静态分析