屏幕上有东西看不见地盖着:安卓悬浮窗权限与转账界面的遮挡自查 图 1
屏幕上有东西看不见地盖着:安卓悬浮窗权限与转账界面的遮挡自查 · 图 1

屏幕上有东西看不见地盖着:安卓悬浮窗权限与转账界面的遮挡自查

安卓上有一类事故,事后描述起来所有人都觉得玄:明明点的是”确认转账”,到账地址却不对;明明弹的是钱包页面,点下去却装进了一个陌生应用。它的地面基础其实很朴素——安卓允许应用在其他应用上层绘制界面。这个能力为来电浮窗、屏幕翻译、快捷工具等服务过用户,也给”你看到的”和”真正接住你手指的”不是同一个应用留了口子。这篇文章只讲防御:这个权限叫什么、在哪里能看到谁拿到了它、转账前该做哪个动作。

一、权限的名称、入口和授予方式

这项能力在系统接口层面的名字是 SYSTEM_ALERT_WINDOW,中文设置界面通常写作”显示在其他应用的上层”或”悬浮窗”。它一般不在安装瞬间自动生效,而是应用第一次需要时引导你去设置页里手动开关——注意这个”引导”本身也可以是剧本的一部分:刚装完一个工具类应用,它立刻跳进设置页催你开悬浮窗,你要先想清楚它是否需要一直悬在所有界面之上。查看谁拿到了这个权限的路径在系统设置的应用管理里,不同厂商界面位置略有差异,但都能列出一个应用清单;清单本身就是体检报告:手电筒、输入法、来电拦截器出现在这里合理,一个昨天刚装的”空投查看器”高居其上,就该警觉。还要区分两种授权:常驻悬浮是长期在场,瞬时弹出只在特定动作那一刻覆盖界面,后者同样能接走一次点击,因此”它平时看不见”不构成无罪证明。

屏幕上有东西看不见地盖着:安卓悬浮窗权限与转账界面的遮挡自查 图 2
屏幕上有东西看不见地盖着:安卓悬浮窗权限与转账界面的遮挡自查 · 图 2

二、遮挡为什么能骗过眼睛

所谓界面遮挡,利用的是两个事实:其一,浮层可以是完全透明的,它不需要画出任何东西,只需要”存在”并把触摸事件接走;其二,人的确认动作是模式化的——金额看过、地址扫过、手指按下去,整个过程不到两秒,眼睛核对的是内容,手指核对的是位置。攻击手法无非两类:在真实按钮旁边或上方再盖一个假按钮,把你引到错误的位置;或者干脆盖住界面的一小条,让原本写着”拒绝”的区域看起来像”同意”。系统厂商近年持续收紧浮窗行为——比如浮层在触摸瞬间被移除后,这次触摸就不应再交给浮层处理——但约束在演进,习惯不能外包给版本号。

三、转账确认前的三件套

不需要装监测工具,三件事就够覆盖大多数场景。第一件,动大额资产前下拉一次通知栏再收起:通知栏永远画在最上层,如果通知栏下方立刻出现异常浮层、界面色调变化或按钮”提前变亮”,说明有应用在趁机上色。第二件,看”设置里有没有被自动改动”:正规转账流程不会在你操作途中自己弹出系统设置页、自己勾选权限,界面自己开始跳,就是有人在替你按。第三件,定期做权限台账:进入应用管理的悬浮窗列表,把不认识、想不起为什么授权过的条目挨个关掉——关掉悬浮窗权限不会影响一个应用的基本功能,最多让它的小工具不再悬浮。

最后一层保险永远是确认文化而不是识别能力:转账地址核对取地址首尾若干字符之外,再看中间随机一段;金额、网络、收款人三项分开逐项过;大额新地址先走小额验证。遮挡攻击吃掉的是”扫一眼”,它吃不掉”逐项读”。同一逻辑也适用于把硬件钱包的屏幕当第二读者:金额与地址以设备端显示为准,电脑或手机界面可能被浮层改写,硬件设备的显示不经过那条渲染链路,两边不一致时立即停手断线,把选择权交还给慢的那一方。

风险提示:本文只提供安卓界面安全自查方法,不构成投资建议,也不涉及任何攻击手法的制作。各品牌安卓设置入口名称存在差异,以你所用机型的实际界面为准。