看起来只是一个普通的“下载页”,但背后竟然在偷偷跑通一条链路——最终把恶意 APP 安装到用户手机上,而且很多时候看上去并没有“下载”这个明显动作。我把这条链路从入口到落地追了一遍,把方法、痕迹和防护要点都写出来,供技术人和普通用户参考。

一、起因与结论(先说白话结论)
- 你在网页上点了一个“下载”或根本没点,浏览器经历多次重定向后触发了一个 intent/深度链接,唤起手机上某个预装或第三方“下载/安装助手”应用。
- 这个助手应用会替你去下载 APK 并执行安装(利用它自身的系统权限或漏洞),用户界面上并不明显或被伪装成正常提示。
- 关键不是网页直接“偷偷下载并安装”——这是受限的 —— 而是网页把安装逻辑交给了设备上已有的、被滥用的应用来完成。也就是说,只要设备上存在某个可被利用的环节,整个链路就能闭合。
二、我如何追踪这条链路(可复现的调查步骤)
- 复现行为:在隔离的测试机(或模拟器)上打开那个下载页,观察浏览器行为。先在普通浏览器中确认是否会出现弹窗或自动跳转。
- 抓包并记录重定向:用 mitmproxy / Charles / Burp 记录 HTTP(S) 流量,开启“跟随重定向”模式。重点找连续的 30x 重定向、第三方广告域、CDN 链接。
- 查找 intent/URI scheme:搜索响应内容中是否有 "intent://"、"market://"、"app-id://"、自定义 scheme(如 myinstaller://)或 data:、blob: 等非常规 URI;
- 在 Chrome for Android,intent:// 是常见触发方式:浏览器会尝试用对应 app 处理该 intent。
- 捕获 Android 层事件:用 adb logcat 观察浏览器和系统日志,或使用 adb shell dumpsys activity intents 来看到系统收到的 Intent。抓取时注意过滤关键字(如 "START u0"、"Intent"、目标 package 名)。
- 追踪被唤起的应用:一旦 intent 被发出,mitm / logcat 会显示哪个包名被唤起。检视该包是否为系统预装的“更新/下载/安全助手”类应用,或为第三方 app。
- 分析被唤起应用行为:如果可能,在隔离环境里允许其联网,继续抓包观察 APK 的下载 URL、请求头、下载和安装行为(是否调用 PackageInstaller,是否请求 INSTALL_PACKAGES 权限,是否尝试获取设备管理员/无障碍权限等)。
- 反编译/静态分析:对下载到的 APK 做反编译,确认其安装逻辑、持久化手段与命令下发链路。
三、实际链路示例(抽象化后的通用模式) 下载页(看似正规) → 第三方广告/联盟重定向(多级跳转掩盖真实来源) → 命中包含 intent:// 或自定义 scheme 的页面响应 → 系统浏览器尝试打开对应 app(若 app 存在则被唤起) → 被唤起的“安装助手”去 CDN 下载 APK → 调用系统安装流程或滥用特权静默安装 → APK 获取设备权限(设备管理、无障碍等)并建立持久化与广告/命令通道
四、为什么用户会“看不到下载”
- 重定向与自动唤起把用户的注意力从“下载”这个动作转移到别处(比如直接弹出“打开/取消”之类的对话,或根本在后台完成)。
- 被唤起的应用可能是厂商预装、可信度较高,看起来像系统行为,用户不会怀疑。
- 一些安装助手有较宽的权限(尤其在老旧设备或厂商定制 ROM 上),可以在用户不明显的情况下完成更多操作。
五、普通用户能看到/识别的异常信号
- 页面频繁跳转、地址栏不断变换域名。
- 出现奇怪的“打开应用/下载管理器”弹窗,提示来源不是 Play 商店。
- 未从官方应用市场获取到的应用突然出现在已安装列表。
- 手机弹窗提示需要打开“未知来源安装”或要求授予“设备管理员/无障碍”权限并伴随紧急感语言(例如“为保证正常使用请立即授权”)。
六、防护与检测建议(面向普通用户和技术人员) 对普通用户:
- 尽量通过 Google Play 或厂商官方渠道下载安装应用;对陌生的下载页谨慎。
- 关闭“允许来自未知来源的安装”或把它设置为询问(在新 Android 版本中是按源控制的)。
- 不随意授予应用设备管理员和无障碍权限,授予前确认应用来源与功能合理性。
- 保持系统与浏览器更新,启用 Play Protect 等安全功能。
- 若怀疑被感染:查看“设置→应用”里最近安装的应用,卸载可疑项;检查“设备管理器/设备管理员”并撤销可疑权限;必要时备份数据并恢复出厂。
对技术人员 / 调试者:
- 用 mitmproxy/Charles/Burp 跟踪完整重定向链,注意 HTTPS 的 SNI 与证书链。
- 用 adb logcat + dumpsys activity 检查被触发的 Intent 与包名。
- 使用静态/动态分析工具对下载到的 APK 做深入研究(jadx、apktool、frida)。
- 在 CI/扫描流程中,把对流行“安装助手”或预装更新渠道的调用视作高风险,模拟重定向并检出含 intent:// 或自定义 scheme 的页面作为告警点。
- 在企业或产品环境中,把流量白名单、脚本内容安全策略(CSP)与第三方广告库的审计结合起来。
七、如果已经“中招”了怎么办
- 立即断网(关掉 Wi‑Fi/移动数据),从安全模式或通过 adb 卸载可疑应用。
- 检查并撤销设备管理员与无障碍权限。
- 若应用无法卸载或权限被滥用,建议备份重要数据后恢复出厂设置。
- 向运营商、厂商或安全团队报告,并把恶意域名/样本提交给安全厂商或 VirusTotal 做进一步分析。
八、对网站/产品方的提醒(防止被滥用)
- 审计页面中嵌入的第三方脚本与广告 SDK,限制可执行的重定向链长度与目标域。
- 对含有 intent:// 或非 HTTP(s) scheme 的链接做严格审查;对指向外部安装器的链接加入用户二次确认与白名单策略。
- 在用户触发下载行为时,明确提示“将跳转到第三方安装器/应用市场”,并记录相关证据链以备追溯。


