短信验证码真的安全?GSM短信也能作假!
更新时间:2019-02-11 17:23:04 浏览次数:376+次去年朋友圈曾传播过这么一则消息:多地警方陆续接报一类蹊跷案件,很多人早上起床后发现手机收到很多验证码和银行扣款短信,甚至网上银行APP登录账号和密码也已被篡改,损失惨重。那么,这种案例的背后隐藏着什么风险,我们又该如何防范呢?
手机号注册的隐忧
如今我们不管办理什么业务,又或是在任何网站和APP注册账号,首先想到的就是通过手机号码一键登录。这意味着,你的手机号就等同于你的微信、支付宝、银行和各种现金贷客户端的账号。如果你安全意识不高,这些APP注册时又都用了相同的密码……潜在的安全风险可想而知,基本是一损皆损。
万能的短信验证码
当你在登录各种APP时发现忘记了密码怎么办?没关系,少数APP可以通过短信验证码一键登录,而所有的APP还能使用短信验证码来重置密码。
可以说,短信验证码在今天已然成为了一种“万能”的存在,有了它,登录、认证、重置和支付等流程就将一路绿灯。
本文引言中涉及的案例,就是针对手机号注册和短信验证码“量身定制”的一种诈骗手段:黑客通过“GSM劫持+短信嗅探技术”,可实时获取用户手机短信内容,进而利用各大知名银行、网站、移动支付APP存在的技术漏洞和缺陷,实现信息窃取、资金盗刷和网络诈骗等犯罪。
问题来了,这一整套流程要分很多步骤,难道手机安全方面的漏洞竟然如此严重吗?
验证码和U盾的差异
实际上,自从智能手机和移动支付功能关联捆绑后,从银行到支付工具,相关企业都在研究如何提升安全性,避免可能的盗刷风险。而大家最终“商量”的结果,就是基于短信的二次验证机制。
提起二次验证,相信不少用户都会想起“U盾”。
U盾是银行针对网络支付推出的一种USBkey,当我们需要办理转账、汇款、缴费等支付业务时,必须按系统提示将U盾插入电脑的USB接口,输入U盾密码并进行验证成功后才可完成支付过程。
问题又来了,既然短信和U盾起到的都是二次验证,那它们的安全系数不是应该等同的吗?很遗憾,U盾的安全系数远非短信验证码可比。
简单来说,当你在银行开通网上银行时,银行会针对你的个人信息生成一组个人数字证书,而这个证书会保存在银行服务器,以及让你拿回家的个人U盾内(U盾内的数字证书处于不可读状态)。
当我们尝试网上交易时,银行会向你发送由时间、地址和交易内容等信息组成字符串加密后生成的秘钥A。交易确认前需要将U盾和PC相连,秘钥A会通过网络和数据线传输到你的U盾中,而U盾则会根据你的个人数字证书对秘钥A进行不可逆运算并得到秘钥B,再将秘钥B返还给银行。同时,银行端也会根据秘钥A和你的数字证书进行不可逆运算,只有结果与秘钥B一致才确认为合法交易,否则交易便会失败。
换句话说,通过U盾进行的二次验证,从验证信息的获取和确认信息的返回都是加密的,中间流程没有给黑客留下用于攻击的漏洞。
短信验证码可就没有这高的技术含量了。我们都知道,手机网络是从1G(模拟通讯)→2G(GSM)→3G→4G发展而来,但受制于各种限制,无论是3G还是4G时代,手机语音和短信依旧保持着以纯数字信号的2G方式进行传输,而GSM制式下的手机短信却是单向鉴权并且是以明文方式传输的。
看到没,这里面就存在两个明显的漏洞。其一是“单向鉴权”,其二是“明文方式传输”。第一个漏洞,意味着当手机在GSM制式下收到一条短信时,基站只会验证手机是不是真的,而手机却不会去验证发来短信的基站是否为真,这个漏洞就造成了伪基站的泛滥。
第二个漏洞,意味着短信验证码的6个数字都是明文传输,黑客无论是通过中途截取,还是借助手机漏洞获取了短信内容,都可明明白白看到这6个数字。
手机里的钱是怎么丢的
手机信号的好坏,与它距离当前基站(由运营商建立的移动通信交换中心和手机之间的信号纽带)的远近息息相关。黑客可以通过专业主机和笔记本电脑(或手机)组成一部“伪基站”,并以大功率向周边释放信号。
由于手机存在自动对比周围基站信号,自动接入最强信号基站的运行机制,所以经常被“伪基站”诱导并接入。
我们平时收到的来自10086、10010的“官方诈骗短信”就是出自“伪基站”之手,如果你误点了短信内容中的外部链接,手机里就会被直接植入木马。而本文涉及的“GSM劫持+短信嗅探”,实际上就可视为基于伪基站的进阶版。
首先,黑客会干扰附近的手机信号,使4G变为2G信号,再利用基于2G移动网络下GSM明文传输的协议漏洞,搭配专用手机组成短信嗅探设备。然后,黑客会通过伪基站来收集附近的手机号码,在支付类APP中尝试使用这些号码以短信验证码的方式进行登录,并利用短信嗅探设备来嗅探短信。
在这个过程中,黑客可以凭借一个2G伪基站和一个2G伪终端,锁定具体手机号与嗅探短信验证码之间的对应关系,从而选定进一步的作案目标。
接下来,黑客会根据目标手机号,在某些渠道通过“撞库”的手段,获悉与这个手机号绑定机主的姓名、身份证号和银行卡号等信息。至此,手机号、姓名、身份证号、银行卡号、短信验证码这“诈骗五大件”就都握在黑客手里了。
由于短信嗅探技术只能同时获取短信,并不能拦截短信,所以黑客大都会选择在机主夜晚睡觉的时间段,用以上“诈骗五大件”登录你的支付宝、银行客户端等APP,或是在各种现金贷应用中冒名注册并贷款提现。
由于绝大多数用户睡觉前都会降低手机音量,听到信息提醒也不会及时查看,才会出现引言中睡一宿后“钱没了”的悲剧,手机满屏都是各种验证和支付、转账、贷款成功的提醒短信。
风险就在你我身边
你以为只要防范“GSM劫持+短信嗅探”就够了吗?在智能手机时代,还有更多漏洞需要引起我们的重视。
比如,现在几乎所有的第三方APP都寻在申请“读取联系人和短信内容”的权限,哪怕它只是一个小小的手电筒应用。而一旦这些APP中的任意一个服务器端存在安全漏洞,或是这个APP本来就是存在病毒木马的恶意APP,那它天生就具备盗取你短信验证码的功能。
此外,还有很多手机支持云服务,支持自动备份联系人、通话记录和短信内容。而黑客只要掌握了你的云端账号,同样可以跳过手机而读取你的短信内容。因此,笔者的建议是通过手机自带的权限管理机制,屏蔽任何APP读取短信记录的权限,并有选择性地关闭自动备份短信的云服务等功能。
普通用户如何防范
“GSM劫持+短信嗅探”的核心,就是利用了2G网络的先天漏洞,所以最根本的解决方案就是在全国范围内彻底淘汰2G网络,全面升级到3G/4G。现实中,三大电信运营商都在逐步将2G资源向4G转移,但各家采取了不同策略。比如联通采取留3G退2G、移动留2G退3G,电信则综合考虑。
可惜,在VoLTE未大规模商用前,三大运营商在部分地区还是离不开2G网络的辅助,也就是漏洞短期内无法从运营商这边完美解决。因此,无论是用的是移动、联通还是电信的SIM卡,是否开通了VoLTE,在部分城市和地区,都面临着“GSM劫持+短信嗅探”的攻击风险。
可能有朋友会问了,如果我选择睡觉前将手机调成飞行模式或是关机,是否可以避免这个风险?答案是理论上可以,但如果你已经被黑客锁定为作案目标,对方可以直接去发送APP验证码的公司服务器附近进行短信嗅探,哪怕你关机,也不影响在APP界面输入发送验证码的指令,只是你需要第二天开机后才能收到而已。
虽然依旧存在风险,但睡觉前关机却已经是我们普通用户可以做到的最稳妥解决方案了。此外,就是咨询当地运营商,如果当地支持的话一定要开通并激活手机的VoLTE功能。
最后,就是打开支付宝开启高级验证、开启常用设备保护、对资金账户投保,如果真的在睡觉时受到了扣费短信,一定要做好截图取证,并第一时间冻结账号和报警,主动联系损失财产APP的官方客服进行投诉,必要时可以发微博获得舆论上的支持。
针对“GSM劫持+短信嗅探”案例,其实还有更多理论上的解决思路。
比如,让新手机首次安装SIM卡时加入绑定当前手机MAC地址的步骤,今后每次收发短信都需要先验证MAC地址,再发送短信明文。
再比如,增加APP的两步验证。两步验证APP基于TOTP机制,不需要任何网络连接(包括Wi-Fi),也不需要短信和SIM卡,验证码完全在手机本地生成,所以APP两步验证可最大限度免疫SIM卡劫持和GSM短信劫持。
还有一个最简单的,以后在获取验证码登录的界面增加一个随机的应答题,除了验证码以外还需输入正确的答案,这样黑客即使拿到短信也不知道问题答案。
当然,这些都不是咱们用户自己可以决定的。只是希望借着此次GSM短信劫持案件的爆发,让更多相关企业和部门可以联手堵死有关的漏洞,比如让2G彻底淘汰,或是手机厂商加入强制关闭2G功能的选项,从而让我们今后移动支付、理财可以更加安心吧。