jamisriram/android-malware-detection-ml

GitHub: jamisriram/android-malware-detection-ml

基于机器学习分析Android应用权限特征的恶意软件检测工具,通过Random Forest模型实现实时风险预测与可视化分析。

Stars: 0 | Forks: 0

# 📱 基于机器学习的 Android 恶意软件检测 ## 📌 概述 本项目旨在根据 Android 应用程序请求的权限,检测其是**恶意还是良性**。恶意应用通常滥用敏感权限来访问用户数据,因此早期检测对于移动安全至关重要。 该解决方案利用机器学习来分析权限模式并预测应用程序的风险等级。 ## 🚀 功能特性 * 🔍 基于权限的恶意软件检测 * 🤖 机器学习模型 (Random Forest) * 📊 探索性数据分析 (EDA) * ⚠️ 高风险权限识别 * 📈 特征重要性分析 * 🌐 交互式 Streamlit Web 应用程序 * 🎯 带有置信度分数的实时预测 ## 📊 数据集 * 约 29,000 个 Android 应用程序 * 86 个基于权限的特征(二进制:0/1) * 目标: * `0 → 良性` * `1 → 恶意` ## 🧠 机器学习工作流 ### 1. 数据预处理 * 移除了列名中的冗余前缀 * 未发现缺失值 * 二进制数据集 → 无需进行异常值处理 ### 2. 特征工程 * 创建了 **total_permissions** 特征 * 使用统计分析识别了**最高风险权限** ### 3. 探索性数据分析 * 恶意应用平均请求的权限更多 * 敏感权限(SMS、Contacts 等)是强有力的指标 * 数据集是平衡的 ### 4. 使用的模型 * Logistic Regression * Decision Tree * Random Forest ✅ (表现最佳) * Support Vector Machine (SVM) ## 📈 结果 * 所有模型的准确率达到了 **~96–97%** * Random Forest 提供了最稳定的性能 * 恶意软件检测的召回率高(这对安全用例非常重要) ## ⚠️ 关键洞察 * 恶意软件检测依赖于**特定的权限组合**,而不仅仅是权限数量 * 某些良性应用会请求大量权限,这使得极端情况难以判断 * 高风险权限包括: * SMS 访问 * Contacts 访问 * 通话相关权限 ## 🌐 Streamlit 应用程序 构建了一个交互式 Web 应用程序,用户可以: * 选择应用权限 * 获取实时预测(良性 / 恶意) * 查看置信度分数 * 查看触发的高风险权限 ## 🛠️ 技术栈 * Python * Pandas, NumPy * Scikit-learn * Matplotlib, Seaborn * Streamlit ## ▶️ 如何在本地运行 ### 1. 克隆仓库 ``` git clone https://github.com/your-username/android-malware-detection-ml.git cd android-malware-detection-ml ``` ### 2. 安装依赖 ``` pip install -r requirements.txt ``` ### 3. 运行应用 ``` streamlit run app.py ``` ## 📓 笔记本 完整的数据分析和模型开发过程可在以下位置找到: 📁 `notebooks/android_malware_project.ipynb` ## 💼 业务影响 * 有助于在安装前识别恶意应用 * 可集成到应用商店和移动安全系统中 * 通过标记风险权限来增强用户安全 ## 🔥 未来改进 * 在线部署应用以供公众访问 * 添加更高级的模型(例如 XGBoost) * 改进 Streamlit 应用的 UI/UX * 结合实时应用数据 ## 👨‍💻 作者 Sriram Jami
标签:Android 恶意软件检测, Apex, EDA 数据探索, Kubernetes, Python, Streamlit, Web 应用, 二元分类, 实时预测, 开源安全, 恶意应用识别, 指令注入, 数据科学, 无后门, 机器学习, 权限分析, 模型评估, 特征工程, 目录枚举, 移动安全, 网络安全, 自定义DNS解析器, 访问控制, 资源验证, 逆向工具, 随机森林, 随机森林分类器, 隐私保护, 高风险权限