短信验证码盗刷:机器人在刷你的短信账单
短信验证码盗刷(SMS pumping)是一种针对发送验证码的公司的欺诈。机器人把高价号段的手机号填进注册或登录表单,公司为发往每个号码的验证码付费,其中一部分费用通过终端费分成,流回操纵机器人的人手里。没有人会输入这些验证码。攻击的表现是短信支出骤增、验证码发往你没有客户的国家,以及完成验证的验证码比例不断下降。
短信验证码盗刷是怎么运作的?
公司发出的每条短信都要付费,其中大部分归负责投递短信的移动网络。在一些国家,这笔终端费(termination fee)是美国或西欧一条短信价格的许多倍。盗刷就是靠这个差价获利。
- 幕后操作者谈好收入分成,对象是能对某个号段收取终端费的一方,比如小型运营商或路由上的某个中间商。
- 机器人寻找按需发送短信的表单。 注册、登录、密码重置和“把应用链接发给我”这类表单都符合条件。
- 机器人提交这个号段里的号码,往往按顺序排列,来自许多 IP 地址,以稳定的速率或成批地提交。
- 你的短信服务商投递每条验证码,并向你收费。 费用沿着路由逐级传递,第 1 步约定的分成落入欺诈者手中。
- 这些验证码从不会被输入。 也从没有任何账号被创建。
业内把这称为人为抬高的流量(artificially inflated traffic),SMS pumping 是它的通俗叫法。它和短信轰炸不同,短信轰炸的目的是用验证码刷爆某一个人的手机。盗刷瞄准的是你的账单,号码是按它们能让你花多少钱挑出来的。
损失能有多大?
最有名的例子来自 2023 年的 Twitter。埃隆·马斯克说,公司每年因虚假的双重验证短信流量损失约 6000 万美元,同一个月,Twitter 宣布从 3 月 20 日起,短信双重验证只向付费的 Twitter Blue 订阅用户提供。在小公司,最先出现的迹象往往是短信账单达到平时的好几倍,多出来的支出集中在少数几个国家。
攻击在日志里是什么样子?
| 信号 | 正常流量 | 盗刷 |
|---|---|---|
| 转化率(完成验证的验证码 ÷ 发出的验证码) | 稳定且较高 | 急剧下降,在被攻击的国家往往接近零 |
| 目的地国家 | 与你的客户所在地一致 | 你没有开展业务的国家,或者某一个国家突然激增 |
| 号码规律 | 随机 | 同一号段内的连续号码,同一前缀反复出现 |
| 请求节奏 | 跟随你每天的流量起伏 | 稳定的机器速率,或在反常的时段成批出现 |
| 会话 | 请求来自正在使用应用的真人 | 会话里除了请求验证码,没有任何其他活动 |
转化率是最有用的单项指标。按国家跟踪它,下降时发出警报。如果某个国家发出几百条验证码,却几乎没有一条被验证,要么是投递出了故障,要么是遭到盗刷,两种情况都需要有人查看。
怎样阻止盗刷?
组合使用多种措施,因为每一种单独使用都有漏洞。
- 只允许发往你提供服务的国家。 短信服务商都允许你关闭目的地国家,Twilio 把这项设置叫作 geo permissions(地区权限)。如果你在某个国家没有客户,就不应该往那里发任何短信。
- 按号码、前缀和 IP 限制频率。 一个号码一小时很少需要超过几条验证码,一整段连续号码更不应该每个都收到验证码。
- 在发送前设置门槛。 只在用户完成了某个让机器人付出代价的操作之后,才显示验证码请求,比如通过 CAPTCHA 或完成邮箱验证步骤。短信放在最后发。
- 放慢重发。 逐步拉长重发请求之间的等待时间,例如先 30 秒,再 60 秒,再几分钟。
- 按国家监控转化率,任何国家一旦低于你设定的阈值就暂停发送,直到有人检查过为止。
- 使用服务商提供的反欺诈功能。 一些验证 API 会在消息发出之前,拦截有盗刷记录的号码和前缀。
- 提供发送成本为零的渠道,比如验证器应用、邮箱验证码或通行密钥,让依赖短信的登录少一些。
开启每项措施之前,先检查它对真实用户有什么影响。把出门旅行的客户挡在外面的国家封锁,或者在旧手机上无法通过的 CAPTCHA,同样会让你损失注册量。
没有真实用户,怎样测试这些措施?
你需要真实国家的真实号码,才能看到用户看到的情况:验证码是否到达、需要多久,以及新的限制会不会拦下正常的第二次尝试。租用号码可以做到这一点。API 可以申请指定国家的号码、轮询你的应用发出的验证码,并在测试结束时释放号码,这样一次测试就能从接收端确认国家白名单和重发计时器是否按预期工作。测试 OTP 与短信验证:开发者手册介绍了如何安排这些测试,一次性验证码如何抵达你的手机解释了验证码从服务商到手机所走的路线。
常见问题
短信验证码盗刷违法吗?
欺诈者一方通过欺骗手段收取费用,也违反了短信服务商的可接受使用条款。对被攻击的公司来说,实际问题在于账单。服务商对盗刷短信和其他已送达的短信一样收费,是否退款由服务商自行决定,所以预防比事后争议更重要。
单靠 CAPTCHA 能阻止短信验证码盗刷吗?
不能。一些操作者会花钱使用专门破解 CAPTCHA 的服务,所以它只是提高了每次攻击的成本,并没有堵住漏洞。和国家限制、频率限制结合起来,它能减少机器人可以触发的验证码数量。
我自己的手机号会被用于短信盗刷攻击吗?
盗刷使用的是欺诈者能收取终端费的号码,所以普通个人号码很少牵涉其中。如果你的手机收到许多服务发来的一大批验证码,更可能是短信轰炸,收到没申请过的验证码怎么办一文讲的就是这种情况。