反诈输在哪:登录跨13个域名,用户早不看网址了

反诈输在哪:登录跨13个域名,用户早不看网址了

网络安全反欺诈基础设施

数据源:HN + web research

一位开发者收到了一条发件人未知的短信息。对方自称是某某银行客服,要求他拨打一个在任何公开渠道都查不到的电话号码,并为了核实身份,让他朗读信用卡背面的机密信息。这条短信是真的官方信息,但它的行事逻辑与跨国电信诈骗犯没有任何区别。

正规登录流程跨越十几个域名

安全专家每天都在苦口婆心地教导大众不要点击可疑链接,但企业在实际业务中早就把这条防伪规则踩碎了。开发者 maurycyz 详细拆解了一个目前非常典型的企业级登录流程:用户点开某公司的主站后,并没有留在安全的根域名下,而是立刻被重定向到了 login 加上第三方服务商域名的地址。

在这个页面中,用户还需要穿越由一长串十六进制 UUID 组成的认证中心域名,接着转去另一个毫不相干的服务商那里接受二次验证检查。一番折腾后,用户可能还会被路由到一个名为体验中心的数据收集站点,最后才跌跌撞撞跳回原公司的根域名。

整个流程走完,涉及用户名、密码和短信验证码的输入框,没有一个托管在企业自家的官方域名上。如果官方流程本身就像一场漫长且可疑的跳转游戏,攻击者根本就不需要去钻研高超的系统漏洞。他们只需花几块钱注册一个带有公司名称拼写错误的域名,写上几行带有密码框和公司徽标的前端代码,就能轻松骗过所有普通人。在验证令牌过期随机弹出登录框的日常打扰下,没人能分清哪个是正版,哪个是钓鱼。

一条官方短信截图,和钓鱼短信长得没有任何区别 图:一条来自快递公司的官方短信截图。来源:Troy Hunt / troyhunt.com

日常业务早就毁掉了网址信任

互联网的 DNS 层级系统最初设计十分清晰。从宽泛的顶级域到具体的运营方,再到服务器名,这种层层递进的结构本该是数字世界最好的防伪标志。但在各大公司各种外包业务和云服务的随意嵌套下,最有辨识度的那段二级域名,现在往往被夹杂在杂乱无章的重定向路径中间。

互联网服务发展到今天,普通用户每天在手机上需要完成数以百计的授权点击。在这个高度疲劳的状态下,把分辨真伪的沉重责任推给普通人,本身就是一种推诿。当正规银行和金融机构长期发送着带有短网址跳转的营销短信,当官方客服邮件里的调查问卷链接总是指向不知名的第三方分发平台,企业实际上正在日复一日地训练用户去忽略网址结构。

同一发送方第二天发来的另一条短信 图:同一发送方第二天发来的另一条短信,同样无法验证真伪。来源:Troy Hunt / troyhunt.com

要求用户防范危险链接成了一句永远正确的废话,因为企业发出的正规链接长得比精心伪装的钓鱼链接还要陌生。有安全专家甚至在工作中不得不将微软官方发送的业务邮件标记为垃圾邮件,原因无他,那些嵌套了无数追踪参数和外链的官方邮件,从特征上精确符合现代钓鱼邮件的各项指标。在一些技术论坛上,不少从业者甚至透露他们会故意将自家银行的官方邮件举报为诱饵邮件,只为了让安全部门的荒谬操作被看见。

三天后跟进的一封邮件 图:三天后跟进的邮件中,官方渠道与诈骗话术之间的界线彻底消失。来源:Troy Hunt / troyhunt.com

用四项工程底线重塑系统信任

针对当前乱象,开发者群体已经受够了虚伪的安全宣讲,转而提出了基于工程实践的底线标准。参考底层通信协议的规范要求,组织必须在技术架构层面作出不妥协的硬性约束。

首当其冲的是收敛根域名。大型组织必须使用单一的、被广泛认知的根域名来承载所有核心业务。一切涉及内部安全的服务,必须被放置在主根域名的子级下。那些在业务里随处可见的特定业务名加上第三方托管平台的野鸡式命名,在工程规范中理应被全面封杀。

对于邮件和短信通道里的互动行为,规范要求同样严苛。如果一条短信确实需要用户跳转去第三方网站填写信息,技术团队必须在本地服务器搭建重定向中间层。用户点开的依然是企业自家的调查问卷链接,随后再隐性路由至最终的服务商节点。

这套逻辑必须平行复制到呼叫网络中。官方在推销和客服短信里,绝不应该让用户去拨打一个无迹可寻的临时短号码。任何必须的联系方式,都必须作为附带信息,直接展示在从原始可信消息链接跳过去的官方网页上,而不是悬空在不可靠的短信文本中。

印度用六个月时间收缴乱象

面对这种深陷泥潭的乱局,试图通过教育去改变人的天性注定失败,真正的解法只能建立在基础设施的物理隔离上。印度在去年给出了一个极具参考价值的示范:该国政府为国内所有的金融机构强行划定了专用的域名隔离区。

按照新规,印度所有银行的官方服务必须且只能使用专用的银行业顶级域名后缀,其他非银金融机构则强制使用金融业专属后缀。无论是在网页端提供服务,还是通过邮件发送账单,哪怕是一个内部使用的认证跳转接口,也必须被严格收束在这个专用根域名之下。

更为彻底的是,印度通信部门同步收紧了电话客服网络的权限。银行客服呼出号码被强制统一划归到了 1600 号段。这个专属号段由印度电信部直接管控,专门分配给银行、金融服务与保险行业,以及少数政府机构使用。其核心目的就在于让服务与交易类的资金往来电话,能够在终端界面上与普通商业电话被物理区隔。反向逻辑同样成立——非特权机构根本无权使用该号段。印度政府仅仅给出了六个月的过渡期,全国的银行网络就迅速在一夜之间完成了整改切轨。

把系统烂摊子直接丢给用户是安全失职

这种从网络基础设施层发起的强制隔离,比投入巨额预算去做一万次反诈宣讲还要有效。用户不需要去学习什么是二级域名,不需要去分辨繁杂的授权跳转链路是否合法,甚至不需要具备丰富的数字生活经验。只要不是正规银行业域名后缀出来的网页,只要来电显示不是专属监管号段打头的号码,普通人甚至连看都不用看,一律直接视为诈骗。中国用户其实也面临着相同的困境,无数次收到各大银行官方的推销短信和诈骗短信,两者之间的区别,很多时候仅仅在于一个号码在黑产库里是否挂靠了可信记录。

安全工程领域专家 Kelly Shortridge 敏锐地指出,安全行业对所谓安全文化存在着一种不切实际的执念。这种执念的本质,是要求人类在这种冰冷的系统里投入无穷无尽的精力去关注细枝末节的安全边界,甚至试图让人在需要每天重复点击几百次的地方做到不出错。

要求普通人在十几级重定向跳转中识别出合法的第三方认证提供商,等同于要求住客去验证酒店电子锁的底层射频加密协议。印度的强力推行给出了一个确定性的工程答案:把系统设计的烂摊子丢给用户,是整个行业最大的失职。如果企业连统一收敛认证入口这样的基础工作都做不到,那反欺诈教育就永远只能停留在自欺欺人的层面。

参考链接:

  • maurycyz.com 原文
  • Lobsters 讨论
  • Troy Hunt 相关文章
  • HN 讨论