gomlumon17/apk-fraud-analyzer
GitHub: gomlumon17/apk-fraud-analyzer
一个结合静态分析与大语言模型的 Android APK 恶意软件检测平台,能够自动反编译应用并生成含风险评分和威胁解释的分析报告。
Stars: 0 | Forks: 0
# 🏦 BOI APK 欺诈分析器
一个端到端的安全平台,利用静态分析、VirusTotal 威胁情报和大型语言模型,分析 Android APK 文件中是否包含恶意软件、间谍软件、银行木马和 RAT —— 在几秒钟内提供可操作的情报。
## 🎯 它的功能
大多数 APK 扫描器只会告诉你文件里*有什么*。而这个系统会告诉你它*做什么* —— 用通俗易懂的英语,精确地突出显示恶意代码,并由 AI 进行解释。
```
Upload APK → VirusTotal Check → MobSF Static Analysis
→ Smart File Targeting → AI Source Code Analysis
→ Risk Score + PDF Report
```
## 🚀 核心功能
- **VirusTotal 集成** — 在分析开始前,将 APK 哈希值与 70 多个防病毒引擎进行交叉比对
- **MobSF 静态分析** — 深入检查权限、manifest、证书、URL、跟踪器和 API 调用
- **智能文件定位** — 无需扫描所有 100 多个反编译文件,仅从 Android manifest 中提取服务和接收器 —— 即真正的攻击面
- **基于关键词的上下文提取** — 在完整源文件中扫描 30 多个可疑 API 调用,仅提取带有周围上下文的相关行 —— 将 token 使用量减少 90%
- **LLM 驱动的代码解释** — GPT-4o-mini 阅读实际反编译的 Java 代码,并用通俗易懂的英语准确解释恶意功能的具体作用
- **MITRE ATT&CK 映射** — 将发现结果映射到行业标准的移动攻击技术
- **自动 PDF 报告** — 专业的印度银行品牌报告,包含风险评分、判定结果、威胁和建议操作
- **React 仪表板** — 拖放上传 APK 并显示实时进度,可折叠的源代码发现结果,扫描历史记录
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────┐
│ React Frontend │
│ Vite + Axios | localhost:5173 │
└──────────────────────┬──────────────────────────────┘
│ POST /analyze
┌──────────────────────▼──────────────────────────────┐
│ FastAPI Backend │
│ localhost:8080 │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ VirusTotal │ │ MobSF API │ │ OpenAI │ │
│ │ v3 API │ │ localhost │ │ GPT-4o- │ │
│ │ │ │ :8000 │ │ mini │ │
│ └─────────────┘ └──────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────┘
```
## 🧠 智能流水线
### 为什么不扫描所有文件?
一个典型的 APK 反编译后会包含 100 多个 Java 文件。将所有文件发送给 LLM 不仅成本高昂,而且耗时极长。因此,系统采用了 3 层定位策略:
**第 1 层 — Manifest 分析**
`AndroidManifest.xml` 无法被混淆 —— 因为 Android 需要读取它。它声明了应用注册的每一个组件。系统仅提取 `services` 和 `receivers` —— 这些是在后台静默运行且无需用户交互的组件。
**第 2 层 — 关键词上下文提取**
系统没有发送整个源文件(有些文件包含 300,000 多个字符),而是使用 Python 在本地扫描完整文件,查找 30 多个可疑的 API 调用(如 `getLastKnownLocation`、`SmsManager`、`AudioRecord`、`VpnService` 等),并仅提取每次匹配项周围的 15 行代码。
**第 3 层 — LLM 分析**
只有提取出的可疑上下文会被发送给 GPT-4o-mini —— 并将 MobSF 的发现结果作为附加上下文。该模型会准确解释代码的作用、窃取了哪些数据,并将严重程度评为 CRITICAL/HIGH/MEDIUM/LOW。
**结果:** 107 个文件 → 16 个目标文件 → 每个文件仅发送约 2000 个字符,而不是 300,000 个字符
## 📊 分析输出示例
分析一个伪造的 Lazada 应用(实际的 RAT):
```
App : Lazada
Package : acoustic.implementing.used ← package mismatch = fraud signal
Verdict : MALICIOUS
Score : 94/100
Files scanned : 16
Total findings : 29
🔴 CRITICAL : 4
🟠 HIGH : 20
Key findings:
🔴 [CRITICAL] sendSMS — Sends SMS to all contacts without consent
🔴 [CRITICAL] onLocationChanged — Streams GPS coordinates to C2 server
🟠 [HIGH] CameraHandler — Silent camera capture via hidden SurfaceView
🟠 [HIGH] KeyboardService — Keylogger under cover of sound effects
🟠 [HIGH] BootReceiver — Persists across device restarts
🟠 [HIGH] FirewallServices — VPN hijack for traffic interception
```
## 🛠️ 技术栈
| 层级 | 技术 |
|---|---|
| 前端 | React 19, Vite, Axios |
| 后端 | FastAPI, Python 3.11, Uvicorn |
| 静态分析 | MobSF (Mobile Security Framework) |
| 威胁情报 | VirusTotal API v3 |
| AI 分析 | OpenAI GPT-4o-mini |
| PDF 生成 | ReportLab |
| 容器化 | Docker, Docker Compose |
## ⚡ 快速开始
### 前置条件
- Docker 和 Docker Compose
- OpenAI API 密钥
- VirusTotal API 密钥
### 1. 克隆仓库
```
git clone https://github.com/YOUR_USERNAME/apk-fraud-analyzer.git
cd apk-fraud-analyzer
```
### 2. 配置环境
```
cp .env.example .env
# 编辑 .env 并添加你的 API keys
```
```
OPENAI_API_KEY=your_openai_key_here
VT_API_KEY=your_virustotal_key_here
```
### 3. 启动所有服务
```
docker-compose up --build
```
这将启动 MobSF,等待其健康运行后,从共享卷中自动读取 MobSF API 密钥,接着启动后端,最后启动前端。无需手动复制密钥。
### 4. 打开仪表板
```
http://localhost:3000
```
拖放任意 APK 文件,即可观察分析的运行过程。
## 📁 项目结构
```
apk-fraud-analyzer/
├── backend/
│ ├── main.py # FastAPI server, /analyze endpoint
│ ├── analyze.py # MobSF + VT + AI analysis pipeline
│ ├── config.py # Settings with auto MobSF key fetch
│ ├── pdf_report.py # ReportLab PDF generation
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ └── App.jsx # React dashboard with collapsible findings
│ ├── Dockerfile
│ └── nginx.conf
├── docker-compose.yml # One command to run everything
├── requirements.txt
├── .env.example
└── README.md
```
## 🔌 API 端点
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | `/analyze` | 上传 APK 进行分析 |
| GET | `/result/{job_id}` | 获取分析结果 |
| GET | `/report/{job_id}` | 下载 PDF 报告 |
| GET | `/jobs` | 列出所有扫描任务 |
## 🔒 安全设计
- API 密钥存储在 `.env` 中 —— 绝不硬编码,绝不提交到版本库
- 在生产环境中,MobSF 密钥会从容器机密文件中自动获取
- `.gitignore` 排除了 `.env`、APK 样本、上传的文件和生成的报告
- 在 FastAPI 后端配置了 CORS
- 文件类型验证 —— 仅接受 `.apk` 文件
## 📈 为什么这很重要
移动银行欺诈是印度增长最快的威胁之一。攻击者将 RAT 伪装成合法的银行和购物应用,并通过 WhatsApp 和第三方应用商店进行传播。传统的防病毒软件依赖于特征码匹配,因此会漏掉被混淆的恶意软件。
该系统结合了:
- **MobSF**:用于无法被混淆欺骗的结构分析
- **VirusTotal**:用于已知的威胁关联
- **LLM**:用于从语义上理解被混淆代码的实际作用
其结果是,该系统成功捕捉到了一个具备完整功能的 RAT,它包含摄像头捕获、键盘记录、GPS 跟踪、SMS 拦截、屏幕录制和 VPN 流量劫持功能 —— 而这一切都被伪装成了一个 Lazada 购物应用。
## 🎓 学术背景
本项目是作为工程学学士的毕业设计开发的,旨在展示以下领域的实际应用:
- Android 应用安全与逆向工程
- 静态恶意软件分析技术
- 用于安全自动化的大型语言模型集成
- RESTful API 设计与容器化
- 网络威胁情报流水线
## 📄 许可证
MIT 许可证 — 详情请参阅 [LICENSE](LICENSE)。
为印度银行网络安全部门构建
标签:Android安全, AV绕过, DAST, DLL 劫持, FastAPI, React, Syscalls, 云安全监控, 大语言模型, 威胁情报, 开发者工具, 恶意软件分析, 版权保护, 请求拦截, 逆向工具, 静态分析