短消息/短信(SMS)服务诞生于1992年,第一条短信内容是 “圣诞节快乐( Merry Christmas )”。
尽管缺点一大堆:没有已读回执,有字数限制,而且依赖手机号码等等;但短信真的已经伴随我们度过了27年的时光。世界上很多人都已经迁移到了更好、更安全的消息平台,比如iMessage、WhatsApp和有望很快推出的融合通信( RCS:Rich Communication Suite )。
短信由于其无可争议的泛在性而沿用至今,虽然微信等即时通讯软件几乎取代了短信的沟通方式,但在中国商业市场上,业务级的短信收入这两年反而有不断增长的趋势。这主要是因为,短信做为双因子认证的便易性。
令人担忧的是,短信的安全性似乎每天都在下降。尽管美国国家技术与标准局(NIST)在2016年时就建议不采用短信作为身份验证因子,但很多网站和移动应用仍要求短信形式的第二身份验证因子。短信的不安全性众所周知,所以关于短信作为身份验证系统的讨论,倒是更多落脚在到底什么技术能够替代它上。
绕过短信验证的方法多种多样,不用细想就能举出来一堆。以下这些是最常见的:
1. 手机号码转移
手机号转网相对容易的国家也就更容易发生双因子身份验证(2FA)绕过攻击。澳大利亚就是此类攻击的主要早期狩猎场。攻击者收集到目标的凭证后便可以研究受害者的手机号码,给运营商打个电话,就能将该号码分配到攻击者控制之下的手机上。至此,所有的2FA验证码可被攻击者截获,而受害者往往毫无所觉。等他们第二天醒来的时候才发现自己的手机已停止服务,而在申请找回号码的一周里,银行账户的钱已经被攻击者取走了。
2. 移动运营商端拦截
这是去年爆发的一种新型攻击方式。攻击者通过移动运营商的客户门户来获取2FA验证码。如果某人太过懒惰,电子邮件和移动账户都重复使用相同的密码,攻击者只需要登录用户的移动账户,在存储的短信当中查找,便能获取到2FA验证码。然后就可以重置银行口令,大摇大摆地清空用户的账户了。
3. 恶意软件截获
至少自2014年起,便有定制的恶意软件可以感染手机并截获基于短信的2FA验证码。有时候这种恶意软件是银行木马的一部分。其他情况下,该恶意软件仅仅是转发2FA验证码给攻击者。安卓生态系统中该问题尤其严重,但苹果系统中几乎没有见到过。
4. 遗失手机重置密码
现代社会,丢手机换号码就跟糖尿病一样常见。所以,使用短信身份验证系统的所有服务都必须有可供用户重置账户和更新手机号码的恢复服务。如果攻击者已经入侵了电子邮件账户 (比如利用用户重复使用密码的漏洞),那他们就可以重置、更新或者绕过该2FA系统。遗失手机和密码重置页面是如今最常见的自动化攻击目标。检查一下忘记密码页面 (lost-password.html) 的访问日志,你会惊讶于这个页面被访问的次数和访问时间点。
5. 社会工程
针对特定组织或个人下手的攻击者会使用社会工程方法来绕过2FA。举个例子,攻击者给你打电话,声称自己是你银行的客户经理,正在进行账户欺诈检查,将给你发一个身份验证码,让你给他念一遍。然后,在你等待的期间,攻击者就用你念给他的验证码登录了你的账户。攻击者一边谢谢你的合作,一边眼都不眨地搬走你账户中每一分钱。
6. 中间人网站代理——Modlishka
一组研究人员创建了Modlishka网络钓鱼代理框架,向人们展示诱骗用户输入短信2FA验证码有多容易。演示视频堪称对安全社区的当头一棒。
理论上,非短信2FA的攻击界面要小得多(1-4点)。社会工程方法(第5点)则一直都很有效,这个问题是技术解决不了的。Modlishka框架(第6点)显示的最后一种攻击方法最为令人担忧。Modlishka能用于任意2FA系统,包括不基于短信的那些,因为一旦访问了该网络钓鱼筐架,用户会话就已经被黑了。
但即便有上述多种绕过方法,双因子身份验证和多因子身份验证依然是防御者工具箱中的必备。只不过,基于短信的2FA系统明显老态龙钟了。
- Modlishka:https://github.com/drk1wi/Modlishka
- Modlishka视频地址:https://vimeo.com/308709275
【本文是51CTO专栏作者“李少鹏”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】