Harinishalu-1020/Android-malware-hybrid-analysis

GitHub: Harinishalu-1020/Android-malware-hybrid-analysis

该项目通过融合静态分析、动态分析与污点分析技术,提升了 Android 恶意软件检测的准确率与代码覆盖率。

Stars: 0 | Forks: 0

# Android 恶意软件混合分析 ## **作者:** Harini P (127157010) **机构:** SASTRA Deemed to be University, Thanjavur **院系:** B.Tech CSE - Cybersecurity and Blockchain Technology ## 问题陈述 Android 生态系统的迅速扩张使其成为恶意软件的主要目标。传统的 Mining Sandbox 方法使用动态分析来监控良性应用中的敏感 API 使用情况,并检测恶意应用中的偏差。 尽管 Mining Sandbox 方法的检测准确率接近 70%,但以往的研究对该框架内静态分析的作用**关注有限**。 现有方法的主要问题: - **纯动态分析** — 无法触发隐藏在逻辑炸弹或特定用户交互背后的恶意代码 - **纯静态分析** — 由于对程序行为的过度近似而导致高误报率 - **基于签名的检测** — 容易被代码混淆和多态性绕过 - **过度估计问题** — DroidFax 包含一个隐藏的静态组件,夸大了先前研究中的动态分析结果 ## 提出的解决方案 本项目**分别并以组合方式**评估静态和动态技术,以改进 Mining Sandbox 方法。 进行了三项研究: ### 研究 1 — 具有静态支持的动态分析 - 使用 **DroidFax** 进行 APK 插桩 - 比较**有静态**与**无静态**的性能 - 使用 **Joker** 工具分离纯静态分析的贡献 - 测试用例生成工具:Monkey、DroidBot、DroidMate、Humanoid ### 研究 2 — 污点分析 - 使用 **FlowDroid** 进行污点分析 - 跟踪从**源**(GPS、联系人)到**汇**(Internet、SMS)的敏感数据流 - 识别基于数据泄露的恶意软件 ### 研究 3 — 混合方法 - 结合所有三种技术 - **静态** → 识别潜在风险 - **污点** → 揭示隐藏的数据流 - **动态** → 验证实时行为 - 策略:MAX 投票 — 如果任意一种方法检测到 → 标记为恶意软件 ## 系统架构 ``` Input APK ↓ Run App in Emulator ↓ Instrumentation (DroidFax) ↓ Static / Taint Analysis ↓ Dynamic Execution ↓ Monitor & Log Activities ↓ Malicious / Benign ``` 流水线遵循具有 3 个阶段的**管道和过滤器架构**: 1. 插桩阶段 2. 执行阶段 3. 结果分析阶段 ## 结果摘要 ### 研究 1 — 有静态分析 vs 无静态分析 | 工具 | 有静态分析 | 无静态分析 | 提升 | |-----------|-------------|----------------|-------------| | DroidBot | 64% | 60% | +4% | | DroidMate | 68% | 60% | +8% | | Monkey | 72% | 68% | +4% | | Humanoid | 72% | 62% | +10% | | Joker | 64% | 0% | +64% | ### 研究 2 — 污点分析 | 方法 | 准确率 | |------------|----------| | FlowDroid | 50% | ### 研究 3 — 混合方法 | 方法 | 准确率 | |-------------------------------|----------| | 纯静态 (DroidFax) | 64% | | 纯静态 (FlowDroid) | 50% | | 动态 Mining Sandbox | 60-72% | | 静态 + 污点 | 88% | | **完全混合(所有 3 种)** | **92%** | ## 优势 - **提升的代码覆盖率** — FlowDroid 识别出像 Monkey 这样的随机工具遗漏的源/汇 - **降低的误报率** — 需要真实的执行轨迹,从而减少过度近似 - **差异性分析** — 在相同条件下比较良性版本与恶意版本,可提供高置信度的威胁指标 ## 局限性 - **高计算开销** — 控制流图需要大量 RAM;模拟器执行平均每个应用需要 180 秒 - **环境敏感性** — 恶意软件可能会检测到模拟器环境并保持休眠状态 - **插桩复杂性** — 带有自定义加壳的应用可能会抵抗 Soot 框架的插桩 ## 工具与技术 | 工具 | 用途 | |------------|---------------------------------------| | DroidFax | APK 插桩与静态分析 | | FlowDroid | 污点分析 | | Monkey | 随机 UI 事件生成 | | DroidBot | UI 引导的测试输入生成 | | DroidMate | 自动化应用测试 | | Humanoid | 基于深度学习的 UI 测试 | | Joker | 静态分析隔离 | | Soot | Java 字节码分析框架 | | Python | 结果处理与混合逻辑 | | Java | 污点分析实现 | ## 数据集 - **良性 APK:** 从 Google Play Store 收集 - **恶意 APK:** 从 AndroZoo 收集 - **总计:** 96 对应用(良性 + 恶意版本) - 由于大小和许可限制,未包含数据集 - 参考:https://androzoo.uni.lu/ ## 项目结构 ``` android-malware-hybrid-analysis/ │ ├── study1_dynamic/ # Study 1 - Dynamic Analysis │ ├── main.py # Entry point │ ├── constants.py # Constants │ ├── settings.py # Settings │ ├── utils.py # Utility functions │ ├── set_env.sh # Environment setup │ ├── requirements.txt # Python dependencies │ ├── benchmark/ # Core benchmark logic │ │ ├── droidfax.py # DroidFax instrumentation │ │ ├── version.py # Version info │ │ ├── commands/ # ADB commands │ │ └── output_formats/ # Result formats │ ├── tools/ # Test case generation tools │ │ ├── droidbot/ │ │ ├── droidmate/ │ │ ├── humanoid/ │ │ ├── joke/ │ │ └── monkey/ │ └── data/ # Source/sink definitions │ ├── catCallbacks.txt │ ├── catsinks.txt.final │ └── catsources.txt.final │ ├── study2_taint/ # Study 2 - Taint Analysis │ ├── Infoflow.java │ ├── InfoflowManager.java │ ├── InfoflowConfiguration.java │ ├── AbstractInfoflow.java │ ├── BackwardsInfoflow.java │ ├── cmdInfoflow.java │ ├── SourcesAndSinks.txt │ ├── AndroidCallbacks.txt │ ├── analysis_final.py │ ├── evaluate_result.py │ └── xml_to_finalcsv.py │ ├── study3_hybrid/ # Study 3 - Hybrid Approach │ └── hybrid.py │ ├── report/ # Project Report │ └── Android_Malware_Hybrid_Analysis_Report.pdf │ ├── README.md └── .gitignore ``` ## 运行说明 ### 研究 1 ``` cd study1_dynamic pip install -r requirements.txt python main.py -tools monkey droidbot -t 60 -r 1 ``` ### 研究 2 ``` cd study2_taint python analysis_final.py ``` ### 研究 3 ``` cd study3_hybrid python hybrid.py ``` ## 未来工作 - **自适应动态分析** — 智能输入生成,以提高运行时覆盖率 - **混淆恶意软件检测** — 处理代码混淆和规避技术 - **实时部署** — 扩展框架以进行实时移动恶意软件检测 - **AI 集成** — 应用机器学习自动组合所有三种分析的输出 ## 依赖要求 ``` pandas==1.0.5 Jinja2==2.11.2 matplotlib==3.3.0 dominate==2.5.1 ```
标签:Android, DSL, JS文件枚举, 云安全监控, 域名枚举, 逆向工具, 静态分析