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文件枚举, 云安全监控, 域名枚举, 逆向工具, 静态分析