iOS隐私安全之通过popup向用户索取Apple ID和密码
作者:admin | 时间:2017-10-17 02:18:59 | 分类:黑客技术 隐藏侧边栏展开侧边栏
你想知道用户的Apple ID和password吗?想访问用户的Apple帐号吗?或者在其他的web服务上使用Apple ID对应邮箱和密码?你只需要礼貌地问他们,他们可能就会告诉你哦。
攻击原理
iOS会在很多情况下要求用户输入iTunes密码,最常见的情况有安装iOS系统更新和app在安装时卡住了。
因此,用户已经习惯了当系统提示输入Apple ID和密码时,输入ID和密码。但是,这些提示不仅出现在锁屏、主页,也可能会出现在一个随机的app中,比如app想要访问iCloud,游戏中心或者应用内购买的情况。
因此,这种提示可以被任意的一个app滥用,通过UIAlertController就可以很简单的实现,效果看起来和系统对话框一模一样。即使了解一点钓鱼攻击的用户也很难在很短时间内发现这些警告(提示)是钓鱼攻击。
如何保护
如果出现这种情况,可以按home键,看app有没有退出:
如果app和输入apple ID密码的对话框都关闭了,证明这是钓鱼攻击;
如果app和对话框都可见,说明这是系统对话框;因为系统对话是不同的进程,不是iOS app的一部分。
不要在弹出窗口中输入ID和密码,手动打开系统设定进行输入。这就跟不点击邮件中的链接,改为在浏览器中手动输入是一个道理。
如果点击了cancel(取消)按钮,app仍然会记录你在password域输入的内容,所以关闭弹出对话框时,先清空弹出框中输入的内容。
我们之前想的是,伪造的警告信息需要app的开发者知道ID的邮箱地址,事实上这种弹出框的邮箱地址和密码都需要用户输入。所以,这种钓鱼app向用户问密码就变得更加简单了。
建议
因此,这种提示可以被任意的一个app滥用,通过UIAlertController就可以很简单的实现,效果看起来和系统对话框一模一样。即使了解一点钓鱼攻击的用户也很难在很短时间内发现这些警告(提示)是钓鱼攻击。
现在的web浏览器在防钓鱼攻击方面做得很好,但是手机app里的钓鱼攻击是一个相对比较新的概念。
当系统要求用户输入Apple ID和密码时,让用户在打开系统设置后输入;
修复该问题的根本在于,系统不应该经常要求用户输入ID和密码;
应用中的对话框应该在顶端显示app的标志,来跟系统对话框区分开;
有时候iOS会在锁屏时弹出这样的通知(如下图),点击后会打开iCloud设置,这种方式比向用户直接问密码更好。
复杂性
因此,这种提示可以被任意的一个app滥用,通过UIAlertController就可以很简单的实现,效果看起来和系统对话框一模一样。即使了解一点钓鱼攻击的用户也很难在很短时间内发现这些警告(提示)是钓鱼攻击。
制作这样的弹出框非常容易,Apple docs中就有例子,实际的钓鱼弹出框代码不超过30行。
Q&A
双因子认证安全吗?
答案是否定的,虽然有些人使用了双因子认证,但是仍然有很多用户在大多数web服务中使用相同的用户名和密码。即使你的账户是双因子认证的,那么app也可以问你第二部的code呀!
Apple store会接受这样的app吗?
答案是肯定的。虽然App Store有很多的安全机制,但是有很多的办法可以绕过,比如:
使用远程代码,JS桥等;
用 iTunes search API 来比较现在的版本号和App Store中的版本号,这样的话app可以在得到同意后,自动执行恶意代码;
用远程配置工具来配置一个只有Apple通过后才执行的特征;
使用基于时间的触发器,只有当app通过审核或拒绝后才执行;
手机钓鱼攻击
手机钓鱼攻击会变得越来越常见。因为iOS没有明确区分系统UI和应用的UI元素才引起这种钓鱼攻击。很多网站也会有macOS和iOS一样的弹出框,所以许多用户会以为这是一个系统弹框。
参考链接:https://github.com/KrauseFx/steal.password
*本文作者:ang010ela