当你的 iPhone 出现这样的弹窗时,你的第一反应是什么?
我相信大多数人都会立刻在脑海里回忆自己的 Apple ID 账号和密码,记起来之后,把相应的内容填写进去。但,仔细想想,我们怎么确保这个弹窗真的是 iOS 系统调用的而不是第三方开发者钓鱼呢?
澳大利亚开发者 Felix Krause 也想到了这个问题,他在他的博客文章 中,讨论了开发者故意在自己的应用中设计钓鱼弹窗来盗取用户 Apple ID 与密码的可能性,这种自行设计的弹窗可以做到在显示上与 iOS 账号密码输入弹窗完全相同。
左为 iOS 官方系统弹窗;右为钓鱼弹窗
骗术揭秘
那么,通过这种钓鱼手段来「光明正大」地盗取用户 Apple ID 的账号与密码,是否能够实现呢?答案是有可能的。
首先,不管是哪一代 iOS 系统,都曾向用户展示过这样的账号密码弹窗,比如在 iOS 升级时、Game Center 登录时、应用内付费购买时等等。iOS 用户已经理所当然地养成了毫不犹疑在这样的输入框中填写账号密码的习惯。因此利用钓鱼弹窗来盗取 Apple ID 账号密码,大多数用户可能都会乖乖配合。
此外,这类弹窗采用的是 iOS 统一设计规范中的 UIKit – UIAlertController。一直以来,Apple 都鼓励开发者调用 UIKit 来使 iOS 应用看起来有统一的设计,而开发者只需要将 UIAlertController 的 title、message 和 Action 稍作修改,就能实现真假难辨的钓鱼弹窗。这是一段非常简单的代码,只要是位开发者都知道怎么写,所以问题就在于开发者有没有做坏事的心思。
你想问开发者怎么会知道我的 Apple ID 邮箱呢,再设计一个弹窗也不是什么难事。你以为你输入的内容无人知晓,实际上应用已经悄悄记录了下来。
最后,Apple 不会让这些应用通过上架审核的吧?这很难说,尽管 Apple 在检测第三方应用安全性方面做了很多努力,但是近两年 Apple 一直在强调 App Store 应用审核时间大大缩短,这也意味着审核质量在一定程度上发生了变化。
更糟糕的是,这类弹窗完全可以在应用通过 App Store审核后实现,绕开 Apple 的各种审核手段,例如使用远程代码、定时代码等(远程代码是被禁止使用的,但仍有通过审核的可能)。
如何防骗
那么,对用户而言,是否有一种有效的手段可以避免被这类以假乱真的钓鱼弹窗欺骗呢?答案也是肯定的。以下的方法都可以使用:
1.按一下 Home 键看看它会不会消失
如果一个 Alert 弹窗是系统实现的,那么按下 Home 键,它不会消失;而如果一个 Alert 弹窗是应用实现的,那么按下 Home 键,它会消失。下图的弹窗是在 App Store 更新应用时触发的,可以看到按下 AssistiveTouch 中的 Home 键后,它并没有消失,而仍然显示在主屏幕上。
同样,不会消失的系统弹窗还有将电话号码用于 iMessage 和 FaceTime 时的弹窗、开启使用 Touch ID 下载应用时的弹窗等。这是因为这些弹窗都是由 iOS 系统发出的,脱离于任何一个应用之外。
不过,按下 Home 键来辨别其它类型的钓鱼弹窗就不管用了,因为 iOS 上需要 Apple ID 账号和密码的场景很多。比如在 iOS 11 中第三方应用的内购,可能会需要输入密码,而这些窗口在按下 Home 键后是会消失的。
2.不输入或故意输入错误的账号和密码
如果是 iOS 系统要求你输入 Apple ID 账号和密码,显然你必须输入正确的内容,才能使操作继续。而如果你输入了错误的内容或者干脆不输入也能继续,那么很有可能这是钓鱼弹窗。
3.不要在弹窗中输入账号和密码
尽量使用 Touch ID、Face ID 等身份认证方式,而避免在弹窗中输入账号密码。如果一定要输入才能进行身份认证,可以在 iOS 系统的「设置」中进行,因为 iOS 系统官方的弹窗,就是从设置中调取用户的身份认证。
4.终极保护:双重认证
为你的 Apple ID 开启双重认证 后,当有应用或服务想要访问你的账号时,iOS 除了要求你输入账号和密码之外,还会给你的「受信任设备」或「受信任电话号码」发送验证码,这三项完全正确,才能访问你的 Apple ID。因此,即使钓鱼弹窗获取了你的 Apple ID 账号和密码,它们也无法得知验证码,在短时间内你的账户还是安全的。你可以尽快修改 Apple ID 账号和密码,以防数据泄漏财产损失。