双重认证开启仍然被钓鱼的后续以及原理分析

2023-07-25 21:13:40 +08:00
 airycanon

原贴: https://v2ex.com/t/959041

这个事关注的人挺多的,我只是发了个帖子描述事情经过,没想到得到各位大牛的鼎力相助,评论里有大牛分析出双重认证是怎么绕过的,有的帮忙破解这个应用的后台查数据的,还有帮我扫描域名信息提供资料的,帮我转发到其他平台的,在这里向各位说一声谢谢,也感谢 V2EX 提供这样一个平台可以让我发声。

绕过双重认证

原贴中关于如何绕过双重认证,有一些描述不太准确,虽然我补充到后面了,但还是有一定的误导,导致大家都在关注钓鱼的密码框。

因此我把帖子下沉了,在这个帖子里详细说一下原理,有些步骤我无法实践,是通过结果倒推的。

第一步 登录 Apple ID 页面

这一步很多人都没意识到,是在 App 里内置了一个隐藏的 WebView 访问 appleid.apple.com/sign-in,由于是在受害者自己的设备上,弹窗出来之后人脸识别就登录了,很多人包括我自己对这个弹窗没那么敏感,根本没有意识到是在登录 Apple ID 的管理后台。

提供两个对比视频,过程是一样的,最终都是登录到了 Apple ID 的管理后台。

一个是用内置的 Safari 登录。
https://www.bilibili.com/video/BV1d841117Lv/?share_source=copy_web&vd_source=172f1dea4092d685cfef2703eaabfd08

一个是用 App 内置的 WebView 登录,这个 WebView 还可以隐藏。
视频是由微博大佬 BugOS 技术组 提供的。
https://www.bilibili.com/video/BV1Nj41197A5/?share_source=copy_web&vd_source=172f1dea4092d685cfef2703eaabfd08

第二步 获取密码

通过伪造的密码输入框钓鱼,诱导受害者输入密码,这一步大家都比较清楚,我就不附图了。

第三步 获得 Cookie

这一步是通过大牛破解了对方的后台,有 Cookie 相关的配置以及记录,我猜测的。
在第一步的 WebView 登录之后,就可以通过注入 JavaScript 获取到 Cookie ,有了 Cookie 之后,就可以给 appleid.apple.com 的后台 API 发起 HTTP 请求了。

第四步 接收验证码

这一步有一个自动接收验证码并保存下来的服务即可,这个应该不太难。

第四步 添加信任号码

Apple ID 管理页面的地址是 appleid.apple.com/account/manage,在这个页面可以添加一个双重认证的信任号码。
拿第二步的密码、第三步的 Cookie 、第四步的验证码,就可以模拟添加信任号码的 API ,发起 HTTP 请求,添加一个新的号码。

至此,所有的操作都在受害者本机完成,不会触发双重认证,事后我查看了家人的邮箱,第一封被盗相关的邮件内容也是通知她有一个新的信任号码加入了 Apple ID 。

我认为整个事件确实有人为疏忽的问题,但是双重认证不就是为了避免这些疏忽,才有的最后一道防线的么,而通过这种手段添加双重认证号码竟然不需要再次认证,导致这个机制直接被绕过了,这才是最严重的问题。

后续

苹果的退款基本不太可能了,我已经尝试了所有的渠道,警察那边我提供了 App 、域名等资料,但是后面再联系就不回我了,感觉他们也不太相管,因此我只有一条路就是起诉了,接下来就是整理各种证据找律师了,如果这件事还有后续的话,我再更新吧,谢谢大家关注。

3797 次点击
所在节点    问与答
36 条回复
akaraccoon
2023-07-26 12:07:22 +08:00
@Zheming 不是的。我测试过了已经。这种钓鱼模式,苹果压根就不会给你发短信验证码/或者信任设备上的验证码/以及 yubikey 密钥,统统不需要。直接跳过了。苹果的双重认证说明里明确说明了 在新设备或者网页登录时候需要以上三种的 2fa,但是实际上在本机 iphone 上登录时,以上三种都跳过了。就是说对本机的信任度是极高极高的。!!
Nitroethane
2023-07-26 12:22:38 +08:00
第三步「获得 Cookie 」,如果 appleid.apple.com 的 Cookie 设置了 HttpOnly 的话是不能通过 JS 拿到的,你看看 appleid.apple.com 的 Cookie 有没有设置这个。
Chad0000
2023-07-26 12:25:35 +08:00
@akaraccoon
主要是“对本机的信任延伸到了 webview 上”,如一楼所说。而 app 能完全控制 webview ,就没有安全可言。只要作恶的诱导用户在本机 app 的 webview 登陆就彻底失防。
leonshaw
2023-07-26 13:16:21 +08:00
1 楼说的对
yinmin
2023-07-26 15:46:00 +08:00
@airycanon 微信支付也拒赔吗?
yinmin
2023-07-26 15:57:23 +08:00
@airycanon 微信操作:我 - 服务 - 钱包 - 消费者保护 - 安全保障 - 百万保障 - 资金被盗申赔 - 账单有被盗交易,然后选择被盗交易提起索赔。
airycanon
2023-07-26 16:05:34 +08:00
@yinmin 微信支付没试过,但是从它的描述看,只支持微信账号被盗的索赔,我这种情况可能不行,我试一下,感谢提醒。
tin3w5
2023-07-26 16:25:05 +08:00
@akaraccoon 不知道是否能通过 profile 的方式强制要求即使在本机也必须 2FA ?
当然,就像 @Chad0000 说的,如果不能做到让 webview 在 app 之间隔离,那安全只能是伪命题。
ff8
2023-07-26 16:38:56 +08:00
微信端应该不会理赔。微信端只知道频繁多次多笔 AppStore 扣款这一个点。至于扣款的设备,扣款的商品微信都不知道,无法触发微信支付风控。
Danswerme
2023-07-26 16:55:06 +08:00
@Nitroethane 我看了 appleid.apple.com 的 cookie , 绝大部分 都是 httpOnly 的,非 httpOnly 的几个 cookie 看起来也和登录状态无关。WebView 插入的 JS 应该也是遵循 httpOnly 无法获取到 cookie , 但是 iOS 上 WKHTTPCookieStore 提供了获取所有 cookie 的能力。

https://developer.apple.com/documentation/webkit/wkhttpcookiestore/2882005-getallcookies
Danswerme
2023-07-26 16:59:39 +08:00
楼主原帖 283 楼有人贴出了相关代码,可以看出是使用 uniapp 编写的,关键代码是 plus.navigator.getCookie("https://appleid.apple.com") ,plus.navigator.getCookie 是 html5plus 提供的能力。

https://www.html5plus.org/doc/zh_cn/navigator.html
explore365
2023-07-26 17:09:26 +08:00
逻辑漏洞,苹果应该限制通过 webview 访问 appleid.apple.com 的 App 白名单。
oovveeaarr
2023-07-27 00:19:49 +08:00
说一句题外话,苹果是强制要求使用 In App Browser 的。。。
quotationm
2023-07-27 09:21:39 +08:00
@billlee 前段时间支付宝的 webview 不是也出过问题吗,不知道后续怎么样了,这些标榜安全的公司怎么回事,骗子都跑到家里拉屎了
777777
2023-07-27 11:21:24 +08:00
https://support.apple.com/zh-cn/HT213841 感觉是利用了 iOS 16.6 修复的漏洞,webkit 有好多任意代码执行和一个信息泄露。如果是真的楼主可以用苹果存在漏洞进行索赔。(总有人跟我杠 ios 安全,ps:我用的也是 iPhone )
wyq977
2023-07-28 18:06:23 +08:00
@airycanon 想问一下你 ios 版本是多少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX