ehansih/android-vuln-scanner
GitHub: ehansih/android-vuln-scanner
Android 设备本地安全扫描应用,检测设备安全配置、应用 CVE 风险、网络安全设置并关联真实攻击活动,提供风险评分和修复建议。
Stars: 0 | Forks: 0
# VulnScanner — Android 设备漏洞扫描器
**最新版本:** [v1.3.0](https://github.com/ehansih/android-vuln-scanner/releases/latest) · Android 8.0+ · Kotlin · Jetpack Compose · Material 3
## 截图
```
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ DASHBOARD │ │ DEVICE SECURITY │
│ ┌───────────────────────┐ │ │ ┌───────────────────────┐ │
│ │ Overall Risk: HIGH │ │ │ │ ✅ Screen Lock │ │
│ │ Score: 62/100 │ │ │ │ ✅ Storage Encrypted │ │
│ │ ████████░░ 62% │ │ │ │ ❌ Developer Mode ON │ │
│ └───────────────────────┘ │ │ │ ❌ USB Debugging ON │ │
│ │ │ │ ✅ Biometric Enrolled │ │
│ Apps Scanned: 47 │ │ │ ⚠️ Patch: 6 mo old │ │
│ Risky Apps: 8 │ │ └───────────────────────┘ │
│ Critical CVEs: 2 │ │ OS CVEs Found: 15 │
│ High CVEs: 9 │ │ Device Score: 62/100 │
│ │ │ │
│ [START FULL SCAN] │ │ [SEE ALL FINDINGS] │
└─────────────────────────────┘ └─────────────────────────────┘
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ APP CVE SCANNER │ │ ATTACK INTELLIGENCE │
│ ┌───────────────────────┐ │ │ ┌───────────────────────┐ │
│ │ Chrome CVSS 8.8 🔴 │ │ │ │ FluBot Campaign │ │
│ │ CVE-2024-xxxx HIGH │ │ │ │ Matched: 3 findings │ │
│ │ │ │ │ │ Financial Impact: $1B │ │
│ │ WhatsApp CVSS 6.5 🟡 │ │ │ ├───────────────────────┤ │
│ │ CVE-2023-xxxx MED │ │ │ │ Pegasus Spyware │ │
│ │ │ │ │ │ Matched: 1 finding │ │
│ │ Telegram CVSS 0.0 🟢 │ │ │ │ Indicators found │ │
│ │ No CVEs found │ │ │ └───────────────────────┘ │
│ └───────────────────────┘ │ │ Total Exposure: ~$1.2B │
└─────────────────────────────┘ └─────────────────────────────┘
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ NETWORK SECURITY │ │ DEBUG LOGS │
│ ┌───────────────────────┐ │ │ ┌───────────────────────┐ │
│ │ SSID: MyHomeWiFi │ │ │ │ [I] Scan started │ │
│ │ Encryption: WPA2 ✅ │ │ │ │ [I] Device scan OK │ │
│ │ VPN: Active ✅ │ │ │ │ [W] NVD rate limit │ │
│ │ Proxy: None ✅ │ │ │ │ [I] App 12/47: Chrome │ │
│ │ TLS: 1.3 ✅ │ │ │ │ [I] CVE found: 8.8 │ │
│ └───────────────────────┘ │ │ │ [I] Scan complete │ │
│ No critical findings │ │ └───────────────────────┘ │
│ │ │ [COPY LOGS] [SHARE] │
└─────────────────────────────┘ └─────────────────────────────┘
```
## 功能
| 模块 | 检查内容 |
|--------|---------------|
| **设备安全** | Root 状态、开发者模式、USB 调试、屏幕锁定、存储加密、生物识别、Play Protect、安全补丁时效 |
| **已安装应用** | 对所有应用进行 NVD CVE 数据库扫描、危险权限授予、侧载/未知来源应用 |
| **系统漏洞** | 根据 NVD 已知 CVE 匹配 Android 版本 |
| **网络安全** | WiFi 加密类型(WEP/WPA/WPA2/WPA3/Open)、VPN 状态、代理配置 |
| **攻击情报** | 真实移动攻击活动(FluBot、Pegasus、Cerberus 等)与扫描结果关联,包含已记录的财务和数据泄露影响 |
| **恶意软件行为** | 无障碍服务滥用、设备管理员劫持、悬浮窗权限滥用、隐藏应用(无启动器图标) |
| **泄露监控** | 通过 HaveIBeenPwned API v3 检查邮箱泄露(需要 HIBP 密钥) |
| **VirusTotal** | APK SHA-256 哈希值通过 VT 引擎检查(需要 VT 密钥) |
| **SIM 安全** | SIM 锁定状态、运营商锁定状态 |
| **蓝牙** | 配对设备审计、可发现模式检查 |
| **调试日志** | 应用内实时日志查看器 — 按级别筛选、复制或分享以获取支持 |
## 颜色编码
| 颜色 | 含义 |
|--------|---------|
| 🟢 绿色 | 安全 / 无问题 |
| 🟡 黄色 | 中等风险 |
| 🟠 橙色 | 高风险 |
| 🔴 红色 | 严重 — 需要立即处理 |
每项发现都包含 **"如何修复"** 部分,提供具体的设置菜单步骤。
## NVD 连接验证
```
=== NVD API Dry Run Test ===
Endpoint: https://services.nvd.nist.gov/rest/json/cves/2.0
Test 1 — Unauthenticated ping:
Status: OK
Total CVEs in NVD database: 342,458
Timestamp: 2026-04-06T08:36:11.182Z
Test 2 — Authenticated lookup (Android 14 CVEs):
Status: OK | Rate limit: 50 req/30s (authenticated)
Total results for "android 14": 122 CVEs
CVE-2014-0537 CVSS 7.5 2014-07-09
CVE-2014-0539 CVSS 7.5 2014-07-09
CVE-2014-4671 CVSS 4.3 2014-07-09
Test 3 — App keyword scan (WhatsApp):
Status: OK
Total WhatsApp CVEs: 63
CVE-2015-1157 CVSS 7.8 2015-05-28
CVE-2017-8769 CVSS 4.6 2017-05-18
CVE-2018-11632 CVSS 6.5 2018-05-31
Test 4 — Rate limit burst (5 rapid requests):
req1: HTTP 200 req2: HTTP 200 req3: HTTP 200
req4: HTTP 200 req5: HTTP 200
5 requests in ~6230ms — avg 1246ms/req (no 429s hit)
Conclusion: NVD fully reachable. Authenticated key active.
Rate limit: 50 req/30s | 9x faster than unauthenticated.
```
**速率限制:**
| 模式 | 请求数 | 时间窗口 | 每个应用耗时 |
|------|----------|--------|-------------|
| 无 API 密钥 | 5 请求 | 30秒 | ~6,200毫秒 |
| 有 API 密钥 | 50 请求 | 30秒 | ~700毫秒 |
## 模拟扫描结果
```
=== Full Scan Started ===
[Device & Network — parallel scan]
Root check: PASS (not rooted)
Developer mode: WARN (enabled)
USB debugging: WARN (enabled)
Screen lock: PASS (PIN set)
Encryption: PASS (active)
Biometric: PASS (fingerprint enrolled)
Play Protect: PASS (enabled)
Security patch: WARN (8 months old → HIGH)
OS CVEs (android 14): 15 found (2 CRITICAL, 4 HIGH)
Network SSID: HomeWiFi (WPA2)
VPN: not active → LOW
Device score: 62/100
[App Scan — 47 user/updated apps]
Scanning [ 1/47]: Google Chrome CVE found (CVSS 8.8 HIGH)
Scanning [ 2/47]: WhatsApp CVE found (CVSS 6.5 MEDIUM)
Scanning [ 3/47]: Telegram No CVEs
Scanning [ 4/47]: Instagram CVE found (CVSS 7.5 HIGH)
...
Scanning [47/47]: Calculator No CVEs
NVD rate-limited (429) → backed off 2s → resumed
Risky apps: 8 / 47
Critical CVEs: 2 | High CVEs: 9
[Attack Intelligence]
FluBot campaign matched (3 findings) — $1B+ financial exposure
Pegasus indicators: 1 (developer mode active)
Cerberus: 0 matches
[Risk Summary]
Overall Risk: HIGH
Device Score: 62/100
CVE Network: OK (NVD reachable)
Scan duration: ~42s (with API key)
=== Scan Complete ===
```
## 安全审计
### 已修复问题
| # | 严重程度 | 位置 | 问题 | 修复方案 |
|---|----------|----------|-------|-------------|
| 1 | **严重** | `app/build.gradle.kts` | NVD API 密钥硬编码在版本控制文件中 — 在公开 GitHub 上暴露 | 移至 `local.properties`(已加入 gitignore)。密钥通过 `localProperties.getProperty()` 在构建时读取 |
| 2 | **中等** | `AndroidManifest.xml` | `android:allowBackup="true"` — 允许通过 ADB 备份安全扫描器应用的数据 | 改为 `android:allowBackup="false"` |
| 3 | **低** | `RetrofitClient.kt` | `HttpLoggingInterceptor.Level.BASIC` 应用于所有构建类型 — 在发布版本中泄露 API 请求 URL 和标头到 logcat | 改为仅在调试版本中使用 `BASIC`,发布版本中使用 `NONE` |
### 确认安全
| 检查项 | 状态 | 备注 |
|-------|--------|-------|
| 明文流量 | ✅ 已阻止 | `android:usesCleartextTraffic="false"` + `network_security_config.xml` 中 `cleartextTrafficPermitted="false"` |
| 证书固定 | ✅ 仅系统锚点 | 不信任用户 CA — 阻止通过安装的代理证书进行 MITM 攻击 |
| TLS 版本 | ✅ TLS 1.3 | Android 10+ 默认值;OkHttp 强制使用现代加密套件 |
| 源代码中的 API 密钥 | ✅ 已移除 | NVD 密钥现位于 `local.properties`(已加入 gitignore)。HIBP/VT 密钥存储在 `SharedPreferences`(设备本地) |
| SharedPreferences 作用域 | ✅ 私有 | `Context.MODE_PRIVATE` — 不对世界可读 |
| SQL 注入 | ✅ 安全 | Room ORM 使用参数化查询;无原始 SQL |
| 输入验证 | ✅ 已存在 | 在 HIBP 调用前验证邮箱;在 VT 调用前验证哈希长度 |
| 发布版本中的日志 | ✅ 已修复 | HTTP 日志在发布版本中现为 `NONE` |
| 权限 | ✅ 最小化 | 所有声明的权限都有文档说明的用途;无过度授权 |
| Root 检测绕过风险 | ✅ 已标注 | Root 检测是尽力而为(文件 + `su` 执行);Magisk Hide 可绕过。应用不会仅根据 Root 状态做出安全决策。 |
| ProGuard/R8 | ✅ 已启用 | 发布版本中 `isMinifyEnabled = true`;代码压缩和混淆已激活 |
| 数据备份 | ✅ 已修复 | `allowBackup="false"` 防止通过 ADB/云提取扫描数据 |
### 后续说明
- NVD API 密钥在此次修复之前存在于 git 历史中。如果您在 v1.3.1 之前 fork 了项目,**请生成新密钥** https://nvd.nist.gov/developers/request-an-api-key — 密钥是免费的。
- Root 检测是基于启发式的;高级 Root 隐藏工具(Magisk Delta、Zygisk)可能会绕过它。这是 Android 的已知限制 — 没有应用层修复方案,除非使用 Play Integrity API。
## 安装(侧载 APK)
### 要求
- Android 8.0+(API 26+)
- 互联网连接(用于 CVE 查询)
### 步骤
1. **下载 APK** — 从 [GitHub Releases](
│ │ ├── AppScanner.kt # Installed app + CVE lookup + rate-limit backoff
│ │ ├── DeviceSecurityScanner.kt # OS/device checks + OS CVE lookup
│ │ ├── NetworkScanner.kt # WiFi/VPN/proxy checks
│ │ ├── AttackIntelligenceEngine.kt # Maps findings → real-world attack campaigns
│ │ ├── MalwareBehaviorScanner.kt # Accessibility/admin/overlay/hidden app scan
│ │ ├── BreachMonitorClient.kt # HIBP email check + VT APK hash check
│ │ ├── BluetoothSecurityScanner.kt # Bluetooth paired device audit
│ │ ├── PermissionUsageScanner.kt # Permission usage history (AppOps)
│ │ ├── SimSecurityScanner.kt # SIM lock / carrier lock status
│ │ └── MdmDetectionScanner.kt # MDM/EMM profile detection
│ ├── ui/
│ │ ├── screens/ # Compose screens (Home, Device, Apps, Network,
│ │ │ # Threats, Logs, Malware, MDM, Breach, Perms)
│ │ ├── components/SeverityBadge.kt # Colour-coded severity indicator
│ │ └── theme/Theme.kt # Dark theme + severity colour palette
│ └── viewmodel/ScanViewModel.kt # StateFlow → UI, scan lifecycle management
```
**技术栈:** Kotlin · Jetpack Compose · MVVM · Room · Retrofit · OkHttp · Coroutines · Material 3
## 版本发布
| 版本 | 亮点 |
|---------|-----------|
| **v1.3.0** | **NVD API 密钥已激活** — 扫描延迟从每应用 6200毫秒降至 700毫秒(提速 9 倍)。47 个应用约 42 秒扫描完成。安全修复:API 密钥移至 `local.properties`。 |
| v1.2.0 | 并行设备和网络扫描、系统应用从 CVE 扫描中过滤、NVD 速率限制修正 |
| v1.0.4 | **攻击情报仪表盘** — FluBot、PegasusCerberus 与发现结果关联。NVD 429 指数退避 |
| v1.0.3 | 包名清理 |
| v1.0.2 | 应用内调试日志屏幕、每个应用的实时扫描进度 |
| v1.0.1 | 修复:扫描启动时的生物识别权限崩溃 |
| v1.0.0 | 初始发布 |
## 许可证
仅供个人和内部安全使用。CVE 数据来源于 [NVD (NIST)](https://nvd.nist.gov/),属于公共领域。
标签:AMSI绕过, Android, Android安全, Claude, CVE检测, DSL, GitHub Advanced Security, Jetpack Compose, Kotlin, Material 3, URL发现, 威胁检测, 安全加固, 安全检测, 安全评分, 弱配置检测, 目录枚举, 移动安全, 网络安全, 设备安全, 隐私保护