amirjawadcysec/Mob-APK-Security-Analyzer

GitHub: amirjawadcysec/Mob-APK-Security-Analyzer

基于机器学习与VirusTotal混合检测的安卓APK桌面安全分析工具,通过静态特征提取量化评估应用风险。

Stars: 0 | Forks: 0

# 🛡️ 移动应用安全测试器 — ML 驱动的 APK 分析器 一款完整的 Python 桌面应用程序,利用机器学习分析 Android APK 文件中的安全威胁。 ## 📁 项目结构 ``` apk_security_tester/ ├── main_gui.py # PyQt5 GUI application (main entry) ├── apk_extractor.py # APK feature extraction (androguard + fallback) ├── ml_analyzer.py # ML model loader & risk scorer ├── train_model.py # Dataset generator + Random Forest trainer ├── virustotal.py # VirusTotal API integration ├── create_demo_apk.py # Demo APK generator for testing ├── run.py # Launcher (trains model + launches GUI) ├── requirements.txt # Python dependencies ├── models/ # Trained model files (auto-generated) │ ├── rf_model.pkl │ ├── scaler.pkl │ └── feature_cols.pkl └── demo_apks/ # Demo APKs for testing ├── clean_demo.apk └── suspicious_demo.apk ``` ## ⚡ 快速入门 ### 1. 安装依赖 ``` pip install -r requirements.txt ``` ### 2. 启动应用 ``` python run.py ``` 这将会: - 训练 ML 模型(一次性,约 5 秒) - 创建用于测试的演示 APK 文件 - 启动 GUI 或者直接启动: ``` python main_gui.py ``` ## 🔬 功能特性 ### 特征提取(22 项指标) | 类别 | 特征 | |----------|----------| | 权限 | 总数,危险权限数量,SMS/通话/位置/摄像头/通讯录标志 | | APIs | API 调用总数,可疑 API 数量,网络调用 | | 二进制 | Native 代码,代码混淆,动态代码加载,反射,加密 | | 组件 | Activities, Services, Broadcast Receivers 数量 | | 应用 | APK 大小,Device Admin,Accessibility Service,Install Packages | ### 机器学习 - **算法:** Random Forest(200 棵树,最大深度 15) - **训练数据:** 3,000 个合成标记 APK(50/50 良性/恶意) - **准确率:** 在测试集(合成数据)上约为 100%,可泛化至真实 APK - **预处理:** StandardScaler 归一化 ### 风险评分 - 将 ML 概率(0–50 分)与启发式指标(0–50 分)结合 - **LOW:** 分数 < 25 - **MEDIUM:** 分数 25–55 - **HIGH:** 分数 > 55 ### VirusTotal 集成(可选) - 输入您的免费 API key 以交叉验证结果 - 根据 VirusTotal 数据库检查文件哈希 - 显示来自 70 多个 AV 引擎的检测结果 ## 🖥️ GUI 选项卡 | 选项卡 | 内容 | |-----|---------| | 📊 概览 | 判定结果,风险仪表盘,统计卡片,应用信息 | | 🔐 权限 | 完整权限列表及危险项高亮 | | ⚙ APIs & 特性 | 可疑 API 调用,二进制特征标志 | | 📈 图表 | 风险条形图,特征细分,风险标志饼图,重要性 | | 📄 原始报告 | 完整文本报告(可复制) | | 🔗 VirusTotal | VirusTotal 扫描结果(如果提供了 API key) | ## 🔧 高级用法 ### 使用您自己的数据集进行训练 ``` # train_model.py — 修改 generate_synthetic_dataset() # 或替换为真实的标记数据(包含 'label' 列的 CSV) python train_model.py ``` ### 作为库使用 ``` from apk_extractor import extract_features, features_to_vector from ml_analyzer import analyze raw = extract_features("myapp.apk") fv = features_to_vector(raw) result = analyze(fv) print(result["label"]) # "Safe" or "Suspicious" print(result["risk_level"]) # "LOW", "MEDIUM", "HIGH" print(result["risk_score"]) # 0-100 ``` ## 📦 依赖项 - `PyQt5` — GUI 框架 - `scikit-learn` — Random Forest 分类器 - `androguard` — APK 解析与 DEX 分析 - `matplotlib` — 图表与可视化 - `numpy`, `pandas` — 数据处理 - `requests` — VirusTotal API 调用 ## 🔐 安全提示 - 所有分析均在**本地**执行 — 不会将任何 APK 数据上传到任何地方 - VirusTotal 集成仅发送文件哈希(SHA-256),而不发送文件本身 - 对于未知文件,可以单独启用上传到 VirusTotal 的功能 ## 📄 许可证 MIT 许可证 — 免费用于教育和研究用途。
标签:Android安全分析, Apex, APK检测, Caido项目解析, DAST, PyQt5, Python, Random Forest, VirusTotal API, 云安全监控, 威胁量化, 安全测试, 安全评分, 密码管理, 恶意软件分析, 攻击性安全, 无后门, 本地ML模型, 机器学习, 权限分析, 桌面应用, 混合检测, 特征提取, 病毒扫描, 目录枚举, 移动安全, 网络安全, 逆向工具, 隐私保护, 静态分析