AnalytIQ-ai-coder/apk-threat-intel

GitHub: AnalytIQ-ai-coder/apk-threat-intel

一个自动化 Android APK 威胁分析流水线,集成了静态与动态分析、VirusTotal 查询及本地 AI 风险评估,将多源威胁情报汇总为邮件报告。

Stars: 0 | Forks: 0

# apk-threat-intel 自动化 Android APK 威胁分析 pipeline。从 [MWDB (CERT Polska)](https://mwdb.cert.pl) 下载样本,执行静态分析,检查 VirusTotal,运行本地 AI 风险评估,并发送电子邮件报告。 ## 功能说明 对于每个新的 APK 样本: 1. **下载** 来自 MWDB(增量获取 — 仅获取上次运行以来的新样本) 2. **解析 AndroidManifest.xml** — package、permissions、activities、services、receivers、content providers、intent filters(自启动/可疑行为)、declared permissions、MultiDex 检测 3. **分析 DEX bytecode** — URL、IP、域名、目标 app package 名称、危险 API 类别、Shannon 熵、native libs、恶意软件框架指纹(Mamont、Cerberus、Anubis 等)、packer 检测、隐藏 DEX 文件、Base64 编码的 IOC 4. **检查证书** — 自签名检测、过期时间、subject、SHA1 指纹 5. **检查 VirusTotal** — 优先进行 SHA256 查询;如果哈希值未知,则上传文件并轮询结果 6. **MobSF 静态分析** — 安全评分、trackers、manifest 问题、危险权限(可选,需要 Docker) 7. **MobSF 动态分析** — 网络调用、发送的短信、访问的文件、加密操作(可选,需要 Android 模拟器) 8. **AI 风险评估** — 本地 Ollama 模型将风险评级为低/中/高/严重,并附带推理过程(不向外部发送任何数据) 9. **发送电子邮件报告** — HTML 正文摘要 + 包含每个样本 35 个以上字段的 CSV 附件 10. **删除已下载的文件** — 即使在出错时也会删除 ## 输出示例 ``` ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Field ┃ Value ┃ ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ Package │ ru.aj7ees.es788 │ │ App name │ Max_video │ │ Certificate │ Self-signed: YES (Android Debug Key) │ │ AI Risk │ CRITICAL — trojan.mamont/pwtrick, banking overlay │ │ VirusTotal │ 13/75 engines │ │ MobSF Score │ 49/100 │ │ Manifest issues │ clear_text_traffic, exported unprotected service │ │ Autostart │ BOOT_COMPLETED, LOCKED_BOOT_COMPLETED │ │ Suspicious actions │ SMS_RECEIVED, SCREEN_ON, CONNECTIVITY_CHANGE │ │ Malware family │ Mamont │ │ Targeted apps │ ru.alfabank.mobile.android (+ 29 more Russian banks) │ │ Dangerous APIs │ SMS abuse: sendTextMessage │ │ │ Account theft: AccountManager, getAuthToken │ │ │ Root: su, Encryption: AES │ │ Dangerous perms │ RECEIVE_SMS, SEND_SMS, READ_SMS, CALL_PHONE │ └━━━━━━━━━━━━━━━━━━━━━━┴━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘ ``` ## 环境要求 - Python 3.10+ - [Ollama](https://ollama.com) 及 `qwen2.5:14b` 模型 - MWDB 账户 — [mwdb.cert.pl](https://mwdb.cert.pl) - VirusTotal 账户 — [virustotal.com](https://www.virustotal.com)(免费版:每天 500 次请求) - 带有应用专用密码的 Gmail 账户 - **可选:** 用于 MobSF 静态分析的 [Docker](https://www.docker.com) - **可选:** 用于 MobSF 动态分析的 Android 模拟器(Android Studio AVD 或 Genymotion) ## 安装说明 **1. 克隆仓库** ``` git clone https://github.com/your-username/apk-threat-intel.git cd apk-threat-intel ``` **2. 虚拟环境** ``` python -m venv .venv # Windows .venv\Scripts\activate # Linux/macOS source .venv/bin/activate ``` **3. 依赖项** ``` pip install -r requirements.txt ``` **4. 配置** ``` cp .env.example .env # 编辑 .env 并填入您的 keys ``` **5. Ollama + 模型** 从 [ollama.com](https://ollama.com) 下载 Ollama,然后执行: ``` ollama pull qwen2.5:14b ``` ## 配置说明 | 变量 | 描述 | |----------|-------------| | `MWDB_API_KEY` | 来自 mwdb.cert.pl 的 API key → 账户设置 | | `MWDB_URL` | MWDB API URL(默认:`https://mwdb.cert.pl/api/`) | | `EMAIL_SENDER` | 用于发送报告的 Gmail 地址 | | `EMAIL_PASSWORD` | Gmail 应用专用密码 — [在此生成](https://myaccount.google.com/apppasswords) | | `EMAIL_RECIPIENT` | 收件人电子邮件地址 | | `VT_API_KEY` | VirusTotal API key(免费账户) | | `MOBSF_URL` | MobSF URL(默认:`http://localhost:8000`) | | `MOBSF_API_KEY` | MobSF REST API key — 可在 MobSF Web UI 右上角查看 | | `MOBSF_DYNAMIC` | 设置为 `true` 以启用动态分析(需要 Android 模拟器) | ## 用法 ``` python analyzer.py ``` - **首次运行** — 获取当天上传的所有 APK - **后续运行** — 仅获取自上次运行以来上传的 APK - 状态保存在 `output/state.json` 中 ## 项目结构 ``` ├── analyzer.py # Main entry point ├── mwdb_client.py # MWDB API client ├── downloader.py # APK download ├── manifest_parser.py # AndroidManifest.xml parser + intent filters ├── cert_analyzer.py # Certificate analysis ├── dex_analyzer.py # DEX analysis (URLs, APIs, entropy, malware frameworks, hidden DEX) ├── vt_client.py # VirusTotal lookup + file upload fallback ├── mobsf_client.py # MobSF static/dynamic analysis (optional) ├── ai_analyzer.py # Local AI risk assessment via Ollama ├── mailer.py # Email report with CSV ├── state.py # Last run timestamp ├── config.py # Config loader (.env) ├── .env.example # Example credentials └── requirements.txt ``` ## 安全说明 - APK 文件**绝不会被执行** — 仅作为 ZIP 压缩包进行解析 - VirusTotal 会**优先接收 SHA256 哈希值**;仅在哈希值未知(新样本)时才上传文件 - AI 分析**完全在本地**通过 Ollama 运行 — 不向外部发送任何数据 - 下载的文件在**分析完成后即被删除**,即使在出错时也会删除 ## MobSF 设置(可选) MobSF 在内置静态分析的基础上,增加了安全评分、tracker 检测和 manifest 分析。 **仅静态分析(无需模拟器):** ``` docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf ``` 打开 http://localhost:8000,从右上角复制 API key,并添加到 `.env` 中: ``` MOBSF_URL=http://localhost:8000 MOBSF_API_KEY= MOBSF_DYNAMIC=false ``` **动态分析(需要 Android 模拟器):** 1. 安装 Android Studio 并创建一个 AVD — 使用 **Android Open Source** 镜像(不含 Google Play),API 29,x86 2. 启动模拟器 3. 启用 root 权限:`adb root && adb remount` 4. 验证 ADB 是否识别到设备:`adb devices` 5. 在 `.env` 中设置 `MOBSF_DYNAMIC=true` ## 自动化(Windows 任务计划程序) 创建一个指向以下内容的计划任务: ``` C:\path\to\.venv\Scripts\python.exe C:\path\to\analyzer.py ``` ## 技术栈 | 组件 | 技术 | |-----------|------------| | MWDB 客户端 | `mwdblib` | | APK 解析 | `androguard` | | 威胁查询 | VirusTotal API v3 | | AI 分析 | Ollama `qwen2.5:14b` | | 终端 UI | `rich` | | 电子邮件 | Gmail SMTP SSL |
标签:AI风险缓解, DAST, 云安全监控, 威胁情报, 安全, 开发者工具, 恶意软件分析, 目录枚举, 移动安全, 请求拦截, 超时处理, 逆向分析, 逆向工具, 静态分析