本博客是系列的第二篇,主要来讲 3CX 最近观测到的通过黑入系统进行盗打的情况。我们在上一篇文章 3CX 安全手册第一集:保持密码复杂度 中提到了使用脆弱密码的危害性。在本文中我们将焦点放在人们通常更感兴趣的部分:通过你的 SIP Trunk 免费外呼。
黑客的终极目标是什么?
当他们能登入用户的设备或者分机后,攻击者通常会等到晚上或者周末才进行攻击。他们会等到办公室没有人的时候,尝试向国外的目的地不断拨打电话。当有电话能被打通后,他们会批量向那个目的地不断地拨打电话。这就是盗打的基本原理。
这些被叫的目的地都是话费非常高的号码,攻击者为了使通话时间尽可能的长,通常会播放录制好的 IVR 语音信息,让用户的损失最大化。看到这里你可能会问:这么做到底有什么意义?对他们有什么好处?
因为黑客可以从中获利:这些收费高的号码是黑客从售卖者手里买来的,当通话建立或分钟数达到要求,黑客们会从中获得佣金。通话额外产生的费用是你的 SIP Trunk 付费给这些收费昂贵的服务号码提供商,他们会将金额的一部分作为佣金发给黑客,并保留剩余的部分作为利润。最后,在月底你会收到来自 VoIP 供应商发来的账单,但这时候为时已晚。
一些背景知识
这种类型的盗打有个专业名词:国际收入份额诈骗(International Revenue Share Fraud, IRSF),这在通信领域已经存在至少 30 年了。然而,随着 VoIP 地不断发展它们也变得更工业化和自动化,现在每年都会因此造成数十亿的损失。通信诈骗控制协会(Communications Fraud Control Association, CFCA)在 2019 年的调查中估计,此类盗打是最严重的诈骗类型,合计造成了 50.4 亿的美元损失。在新冠肺炎的几年,这一数字毫无疑问会变得更高。
当你的电话系统遭到了呼叫盗打,幸运的话可能只有几百元当地货币的损失,但是通常来说都会造成几千元甚至更多的费用。
是什么导致了呼叫盗打
我们将简短地介绍会造成盗打的几个因素以及一些不好的项目实践。
宽松的呼出规则配置
你不应该将呼出规则全部放开。一个好的项目实践会将国际号码和国内号码通过几个呼出规则区分开,而拨打国际号码的呼出规则限制是最严格的。
在 ITU 的标准中,一个国际号码通常有 + 或 00 开头的国家代码前缀。美国之类的国家会有例外,他们是 011 开头。所以你可以在呼出规则的拨号前缀里,使用 “00,+” 来定义国际呼叫,同时我们也可以通过设置允许拨打的分机来限制只有允许的分机可以拨打国际。
在大部分国家与地区中,本地号码通常是 0 开头,有固定长度限制的号码。
宽松的允许国家列表
在安全设置中的允许拨打国家应该针对每个客户进行严格的调整。你不应该为了方便或想以后再进行调整,而放开对所有国家的外呼权限。在默认情况下,我们只允许拨打安装 3CX 系统国家的呼叫,以减少盗打的风险。
当拨打国际号码时,系统会检测这个号码是否匹配呼出规则,以及这个国家代码是否在上述的设置中被允许拨打了。
需要注意的是,有些国际号码可以通过非国际标准拨打。有些运营商允许用户不加国家代码前缀即可拨打国际呼叫。比如号码 33123456789 可以通过一些线路打到法国。你需要跟你的线路供应商确认是否存在这种情况,并调整相应的规则。
使用美国线路时需要注意
NANP 拨号计划也有类似的情况,该计划在很大程度上被滥用于向加勒比海地区拨打电话的欺诈行为:所有美国供应商都允许将这些地区的电话作为本地区号拨打。因此,例如,你可以用 18091234567 连接到多米尼加共和国,这不会被检查到允许的国家代码,因为它被解释为一个本地号码。而 +18091234567 和 01118091234567在国家代码不允许的情况下会被系统阻止。
为了解决这个问题,你需要在所有其他规则的基础上增加一条出站规则,前缀标准=要阻止的 NANP 地区列表,以逗号分隔,并为路由 BLOCK CALL。
最后的防线
存在一些可以对抗盗打的其他控制手段。许多 VoIP 供应商的用户面板通常可以配置这些:
- 限制可拨打的国家。与 3CX 中的设置匹配。
- 允许外呼的最大并发。
- 账户额度限制,避免遭到盗打时无限制的扣费。
- 在检测到可疑呼叫时发送邮件提醒或直接禁用账户。
请关注 3CX 安全手册第三集,我们下期再见!