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, 云安全监控, 大语言模型, 威胁情报, 开发者工具, 恶意软件分析, 版权保护, 请求拦截, 逆向工具, 静态分析