因着前几天在一个群里看到有人说Facebook的账号被盗用了,损失了几万美金,最后也不了了之。代理商同学提醒建议打开双重验证:为了提高 Facebook 平台的安全性,我们建议广告主必须打开双重验证才能访问商务管理平台。这段时间因新冠疫情的蔓延,线上活动的活跃度不断上升,广告主个人帐户遭盗用的情况屡有发生,这给了网络危险分子可乘之机,让他们得以窃取商务管理平台的访问权限,投放虚假或有误导性的广告。
看到这个事情,想到一篇古早的文章,分享给大家,以下为正文,内容比较多,请耐心观看:
我记得在两年前,两步验证(2-Factor-Authentication, 2FA)变得非常普及并且在各大主流网站(Google, Facebook, Yahoo 等)广泛应用。那时我十六岁,天真的我想不通为什么这么天才的想法之前没有人想到过。在那时,我认为2FA就是一个可以保护自己的金色盾牌,它可以抵御那些最复杂的网络欺诈。
两步验证的分析,概念以及流程
两步验证的分析
当将两步验证看做一个整体时,从一个攻击者的角度看来仅仅有这些东西。在我第一次对两步验证的分析中,我经常在想是否可能进行以下的攻击:
暴力搜索两步验证的pin码(有一些服务,比如苹果,只有四位的pin,并且几乎没有任何频率的限制)。
发现pin生成的漏洞。
通过某种方法窃取两步验证后的session标记,这样攻击者可以不用通过两步验证就登录账户。
以上技术都是攻击的有效手段,但是通常没有人会使用,因为这些手段太老套了,已经有了相应的防御。
概念及攻击流程
被攻击者的用户名/邮箱和密码。
被攻击者关联到两步验证服务的手机号。
一个手机号欺诈服务。
手机语音信箱远程登录的账号。
攻击者在支持两步验证的网络应用上登录被攻击者的账号。
Telstra不管是什么Caller ID或者是ANI都要求一个pin码,因此对于我上文描述的破解来说是安全的。
Vodafone在未设置pin码的情况下,如果我通过欺诈服务冒充你的号码拨打,会让我设置pin码或者是进入你的语音信箱。
Virgin Mobile我并未测试,然而由于它是Optus网络的一部分,因此它很有可能是易受攻击的。
你如果不确定你现在使用的是哪种网络,或者你想检查一下自己是否是易受攻击的,我的一个朋友((Aleksa Sarai)写了一段程序通过你的手机号来确定你的在澳大利亚的移动网络。你只需输入你的手机号然后点击check就可以了。
你可以在Github上找到检测移动网络的代码。
向谷歌安全团队揭露
谷歌是两步验证的早期使用者,它的全部服务都使用了两步验证。如果你所选择的电话公司在语音信箱安全方面管理非常严格的话,谷歌现在使用的两步验证系统还是非常安全的,但是谷歌所提供的两步验证可以绕过的概率其实是非常高的。
语音信箱服务的安全并不由谷歌管理而是由电话商管理。
一旦两步认证的标记或者OTP在语音信箱中,有许多可以攻击的因素,可以撤销标记而不改动谷歌端的数据。
如果你想看我和谷歌对话的全部邮件记录,你可以点击这里: google.pdf。
注意:通过这个绕过两步验证的方法并不能不动声色地来盗取谷歌账户,因为很有可能一旦登录到支持两步验证的谷歌账户中就会自动向用户发送信息。在前面的步骤中你必须选择拨打电话的方式然后继续破解。这样很可能会引起受害者的警觉。
他们对我最初的破解的回复如下:
嗨,
谢谢你的错误报告。我们已经看了你提交的数据并且确信这不是谷歌产品的安全缺陷。这个攻击假设了一个易被盗取的密码,并且实际的易被攻击性是由于电话商提供的对语音信箱的保护不够充分导致的。请直接向电话商报告这些。
Regrads,
Jeremy
虽然我知道语音信箱系统不够安全这是电话商的错误,我仍然觉得谷歌把两步验证标记发送到语音信箱这一做法有缺陷,这是个很危险的做法,并且大部分2FA提供商都不这样做。因此,我作出了以下回复:
Hi, Jeremy,
当我发现这些漏洞时,我完全理解并且我也和电话商在不断联系。
澳大利亚和英国的大部分电话商都只要求一个并未锁定的四位的pin码。然而,使用VoIP服务以及Asterisk AGI(http://www.voip-info.org/wiki/view/Asterisk+AGI)的一些脚本就在一天内可以进入语音信箱的账号。
实质上,虽然你说的“这一定是电话商的问题”是对的。这不仅意味着在最近四年里(或更多),在澳大利亚使用Optus提供的服务的人(澳大利亚的大部分人)是非常容易受到绕过两步验证攻击的,这也意味着许多国家的电信商也非常容易受相同种类的攻击。
我觉得把这个问题说成是一个纯粹的电话商的问题,会有点忽略掉两步验证并没有很好的理由来发送到个人的语音信箱里这个事实。另外,先不考虑由于外部的易受攻击性使得谷歌的两步验证可以被绕过这件事,谷歌这样做事实上还是会把敏感信息交给一个可能易受攻击的终端。
另外,在做了一些调查后,我能够跟Duosecurity 和Authy的专门负责两步验证的工作人员交流了。当我第一次发现谷歌发送两步验证的标记到语音信箱时,我非常肯定像Duosecurity 和Authy这样的两步验证服务提供商也是易受攻击的。但是我错了,他们并不会将两步验证标记发送到语音信箱。他们是这样处理这个问题的:
- 在通过语音发送PIN码或者两步验证标记时要求用户的某些交互行为。
- 在语音信箱留下一个空白信息而不是pin。
-要求用户的交互作为验证的方式(接到两步验证的电话->告诉用户按下数字键”x”->如果正确按下=确认,如果没有=未确认)
请让我知道你对此有何看法以及谷歌是否有应对这种情况的措施。十分显然这个问题是由于电话商的不安全的语音信箱服务造成的,然而这并不是谷歌或者是我可以控制的因此使得两步验证在某种程度下易受攻击。
两步验证对于那些将Optus手机号和谷歌账户绑定到一起的澳大利亚人来说是无效的,并且至少近四年是无效的(假设其他人已经知道Optus语音信箱的漏洞了)。
谢谢,
Shubham
谷歌很快回复道:
嗨,
感谢你解释这个问题的潜在作用域。
由于这并不是我们2SV系统在技术上的缺陷,我不确定我们能够做些什么来应对这个问题。但是我已经把一个bug记录下来并且会让团队成员来看一看。
Jeremy
假设这个问题不能修正,因此目前解决这个问题的最好方法就是禁用通过短信或者电话的两步验证,启用谷歌的两步验证,如果你绑定到手机就可能容易受到攻击。
这个设置方法可以在下面找到:https://accounts.google.com/b/0/SmsAuthSettings
———————————————————————————————————————————————————–
向Facebook安全团队揭露
因为我的一个失误,在这次揭露之前我刚刚意识到可以用攻击谷歌的类似方法来攻击Facebook。Facebook称他们的两步验证“Login Approvals”是一个类似于登录通知的特点,但是有额外的安全步骤。
用和上述步骤相同的流程来破解,同样可以绕过Facebook的两步验证。
登录账户。
点击“通过短信发送验证码”。
会显示出拨打电话的选项。
通过拨打被攻击者电话或其他方法保证被攻击者处于通话状态。
点击“电话通知验证码”选项。
验证码会被发送到语音信箱中。
另外,除了上述模式,也可以通过向”https://www.facebook.com/ajax/login/approvals/send_sms“发送表单数据为”method_requested=phone_requested”的请求。
这个方法是通过截取最初发送短信的请求,将”sms_requested”替换为”phone_requested”来实现的,它是最有效地方法。
你可以在这里找到我向facebook 披露这个漏洞的完整版本facebook.pdf.
然而,他们对此的回复如下:
Shubham 你好,
我们目前暂时禁用了通过电话来发送登录验证码的功能,未来还将进一步研究。我们的计划是当可以实现用户在通话中的交互时再重新启用这一功能,这样就可以防止我们将验证码发送到语音信箱中。
Neal, Facebook 安全团队
Facebook在我绕过两步验证之后迅速的禁用了部分功能,他们非常迅速地采取了措施,至少是临时的措施。
状态: 不再会受攻击| 揭露日期: Sun, May 11, 2014 at 10:28 AM
向 LinkedIn安全团队揭露
正如谷歌和Facebook一样,当被攻击者没有接到系统自动来电或者占线时LinkedIn就会将两步验证码发送到被攻击者的语音信箱中。
LinkedIn处理地很好,他们关闭了通过电话发送两步验证码这个功能,直到他们可以和第三方的两步验证提供商来修复这个问题。
你可以在这里看到我和LinkedIn发送的所有邮件linkedin.pdf.
他们对这一问题的主要回复如下:
Shubham,你好
感谢你在公开这个问题之前告诉我们。
虽然这个问题对我们的影响是有限的,但是我们暂时关闭了发送两步验证码的语音的功能。我们正在和第三方协商解决这个问题。在问题修复后,我们会考虑恢复语音功能。
谢谢,
David
状态: 不再会受攻击| 揭露日期: Wed, Apr 30, 2014 at 4:15 AM
向雅虎团队揭露 (通过HackerOne)
雅虎支持两步验证的主要服务也容易受到我上文中所说的攻击。事实上,对支持两步验证的雅虎账号的攻击会更严重因为攻击者并不用担心被攻击者知道他的账号已经登录。
通常支持两步验证的网络应用会在有人登录后发送短信通知。然而,当登录到雅虎账号以后,并不会发送短信,并且可以选择通过短信或者是电话来发送验证码。
向 Authy & Duosecurity揭露
我很快假设那些提供两步验证的服务都一定是易受攻击的。然而,我是错误的—因为他们知道这个事实并且对发送pin码到语音信箱这个问题有着长远考虑。
你可以阅读我和Authy 及 Duosecurity的来往邮件 authy.pdf and duosecurity.pdf
这两个服务提供商都在24小时内给了我回复,并且他们对此都非常热心。
Authy | 状态:不易受攻击 | 揭露日期: Wed, Apr 30, 2014 at 1:27 AMDuosecurity | 状态:不易受攻击 | 揭露日期: 2014-04-29 13:46:16 UTC
Authy会发送空白的语音信息,Duosecurity会在验证前要求用户的交互操作。
感谢Authy 和Duosecurity!
缓解技术和向电话商 Telco 揭露:
广大的读者你们好,我校对了上面的一些信息,包括世界各地各种移动网络的终端。
由于我不能查对 Telco 的海外电话商,我 知道世界各地的人都关心他们的电话商是否是易受攻击的。
要看你是否可以通过欺诈服务不用pin码就进入语音信箱,仅需要跟着上午所说的流程来,将终端号码改为你的电话商用的。
如果你的电话商也容易受到攻击请通过邮件或者是评论来告诉我。
应对这个问题并没有想象中的那么简单,这要求重新构造两步验证的电话通知。这里是一些建议的解决方法(在给那些公司的邮件里都提到过):
要求用户的交互作为验证(推荐)
以语音信箱检测结束通话(不可靠)
最后也是最重要的:
去除语音通话发送验证码的功能(减少了用户体验)
向 Optus揭露
我和Ben Grubb一起工作很愉快(The Sydney Morning Herald and The Age的编辑),他帮助我把这些问题反映给Optus并且在此过程中非常热心也很有合作精神。
当我第一次发现Optus是易受攻击的时候,我的研究让我注意到这篇文章thisIs your Voicemail Hackable? Optus, Telstra and Vodafone respond
Optus很严肃认真地对待顾客的隐私。顾客必须设置一个独一无二的PIN码来激活他们的语音信箱系统。当他们的PIN码被用户服务重新设置时,Optus会建议他们重新设置一个只有他们自己知道的PIN码。
至于欺诈服务,我们正在寻求多种方式来强调这一正在出现的整个工业界的威胁,包括技术上的解决途径以及进行对顾客的教育。
这篇文章的日期是2011年7月22号,距今已经三年了,令人惊讶的是这个问题依然存在并且是一个关于隐私的巨大隐患!
我和Ben在2014年3月2日将这个问题告诉了Optus,从那以后七天左右Optus修复了这个问题。
然而,在修复以后几个小时之内,我能够又一次找出不用pin就可以进入任何Optus顾客语音信箱的方法。Optus正在研究这样的绕过方法,但是在没有其他公告之前,如果你使用Optus或者其他使用他们网络的代理商的服务,请假设你的语音信箱是不安全的,比如Vaya, LiveConnected, Amaysim, Exetel, Yatango 等等。
备注
正如同我之前对于captchas, SSRF和 rate limiting的迷恋一样,我认为语音信箱和移动网络的安全会占用我未来的许多时间。
每个人都知道移动网络的安全性很差,但是都没有做出什么改变,直到我们因此受到侵害才能意识到这件事情的重要性。
END
做一个不断成长的公众号
我在这里等你,一起成长,一起学习。
我就知道你“在看”
作者:小马哥 来源:小马哥
本文为作者独立观点,不代表出海笔记立场,如若转载请联系原作者。