atum@Tencent % cat blog/is-sim-pin-secure.md

给SIM卡上PIN、锁屏不显示通知详情后,你就安全了吗?

我昨天晚上在微信群中看到了一篇文章,文章作者家人一部手机被盗,被黑产犯罪团伙以SIM卡(主要是短信验证码)为起点,完成了对文章作者家人展开了一系列的攻击。虽然文章作者做了一些及时的补救,但这些攻击仍使得受害者损失惨重,如被刷了各种小额贷款等。我思考了一下这套攻击能成功的原因,以及如何才能防御这类攻击,在此分享给大家。

由于手机验证码、本机号码一键登录等认证手段的普及,SIM卡俨然成了一个信任根。一旦这个信任根被打破,就只能指望叶子上有足够的风控和安全策略对攻击者进行阻断。然而这个过程又有木桶原理的制约,所以……一旦攻击者拿到SIM卡,能做的事情太多了。

作者也提出了他的解决方案,那就是 SIM卡PIN + 锁屏(且锁屏时不显示通知详情)。即便这样,就安全了吗?

SIM卡PIN + 锁屏不显示通知详情也不安全

仔细想来,这些攻击的起点就是SIM卡。手机锁屏不显示通知详情可以让攻击者在无法解锁手机(most likely)的情况下无法获取短信验证码(至少看起来是这样),而SIM卡PIN码可以让SIM卡在更换到新手机上之后必须输入一个密码之后才能注册入网。这两个措施看起来确实可以防护住这一类攻击。

但是真的是这样吗?未必。

手机号嗅探和短信嗅探目前已经相当成熟,前者可以捕获周围在网的手机号,后者可以在2G网络下嗅探到某个手机号的短信。因此,即便你在锁屏状态下隐藏了通知详情,即便你有SIM卡PIN,攻击者仍然可以通过这种技术获取手机的验证码,进而展开相同的攻击。

无论短信嗅探还是手机号嗅探,都只在2G网络下才能进行。当然,这对攻击者并不难——一方面,攻击者可以找一个3G/4G信号不好、只能连入2G的环境进行攻击;另一方面,攻击者也可以展开降级攻击,将连入LTE网络的手机降到2G,这个技术也算非常成熟的。

怎么防这套攻击?

很简单,在蜂窝移动网络设置里面将网络模式设置为仅4G,或者5G/4G即可。

通过人工客服获取PUK来解锁SIM卡PIN可行吗?

有人提到,SIM卡PIN可以通过人工客服获取PUK来解锁。确实如此,但这个解锁过程是需要机主的手机号(部分地区还需要身份证号)的。考虑到黑产在拿到手机时手里能接触到的只有SIM卡以及无法解锁的手机,如果攻击者不使用我之前提到的手机号嗅探,便无法获得机主手机号(以及身份证号码)这一额外信息,也就没办法解开PIN的。

SIM卡,一个不可信的信任根

无论是SIM卡PIN,还是仅4G,基本治标不治本(鬼知道黑产是不是还有其他路径能搞你)。

如何治本呢?很遗憾,SIM卡是一些厂商的安全信任根之一已成既定事实。只要有一个绑有你身份证、银行卡号、认为持有这个SIM卡的人就一定是你,黑产就能通过SIM卡(主要是手机验证码)获取你的身份证、银行卡号这些关键信息,进而可以攻破一些安全策略做得稍好的(认为持有SIM卡、知道身份证号和银行卡号的人就一定是你)的APP的防护。

由于现在大多数APP都需要绑定手机号才能正常使用,因此弃用SIM卡这个安全锚点几乎不太可能
目前来看,想治本的最低成本方案,就是让这个不可信的信任根重新变得可信。用人话说,就是准备一个不常用号码,然后所有的账户都用不常用号码注册。然后再想办法确保这个不常用号码的SIM卡安全即可。

实现这套方案的方法

有很多种方法,比如:

  • 弄个手机号放家里,并将其所有短信转到邮件里面。
  • 弄一个带eSIM卡的设备(比如智能手表)并确保它的安全(手表一直贴身)。
  • 用阿里小号、GV之类的手机号进行注册等。

当然,也不是非要这样做。SIM卡PIN等防护方案虽然没有治本,但却也聊胜于无,配合上丢手机后立刻挂失补卡,可以阻断大多数黑产的攻击。就算没有阻断,也极大地增加黑产进行攻击的成本。