二维码钓鱼:当网络钓鱼藏在二维码背后
“扫描此二维码签署文件。”这句话看起来人畜无害,那个黑白小方块也一样。然而,这个二维码背后往往藏着一个假冒的登录页面。这种手法有个名字:Quishing(二维码钓鱼),由“QR”和“phishing(网络钓鱼)”组合而成。我们来看看它为什么这么有效,以及如何揭穿并举报藏在背后的网站。
什么是二维码钓鱼?
二维码其实只是用小方块写成的一段文字。这段文字大多数时候是一个网址。扫码时,手机读取这段文字,然后提示打开页面。
二维码钓鱼沿用了传统网络钓鱼的套路,只是把可点击的链接换成了二维码:
- 一份“待签署”或“与您共享”的文件;
- “今晚之前必须重新激活”的双重验证;
- 被扣留的包裹、罚单、退款。
它也出现在邮件之外:贴在停车缴费机、充电桩或餐厅菜单上真二维码之上的贴纸。原理不变:先让人扫码,再让人输入。
为什么二维码能从网眼里溜过去
邮件过滤器特别擅长一件事:读取邮件文字、找出链接、检查链接指向哪里。可二维码不是链接,而是一张图片。对于不会解码它的过滤器来说,这封邮件……根本没有链接,看起来甚至比普通邮件还干净。
有些过滤器现在已经能识别二维码。骗子们于是想办法让它更难识别:
- 把二维码放进PDF 附件,而不是邮件正文;
- 用彩色表格单元格或字符“画”出二维码,而不是用图片;
- 把它切成两张图片拼在一起,或者稍微变形。
对人眼来说毫无变化:手机照样轻松识别。对机器人来说,却又多了一道谜题。这和指南网络钓鱼:诈骗者如何让邮件成功送达中描述的捉迷藏是同一个思路。
一大步:从电脑跳到手机
二维码钓鱼真正厉害的地方在别处:它让我们换一台设备。邮件到达的电脑往往受公司保护:网页过滤、杀毒软件、链接检查。但为了扫码,我们掏出了手机。于是一切都变了:
- 手机往往是私人的,通过 4G 或 5G 上网,处在公司网络和防护之外;
- 屏幕很小:页面网址被截断,甚至完全不显示;
- 我们习惯性地、在两件事之间匆匆登录。
换句话说,陷阱并不在守卫站岗的地方触发。二维码钓鱼页面通常专为手机设计。而且其中很多是能绕过双重验证的“中间人”页面:这正是指南AiTM:当网络钓鱼偷走的不只是密码,而是整个会话的主题。
读出隐藏的网址……但不打开它
要分析一场二维码钓鱼活动,第一步是把二维码变成文字,而且始终不访问那个页面。有几种办法:
- 手机相机通常会在打开前先显示网址。我们只读,不点。
- 二维码识别 App,设置为只显示文字、不自动打开浏览器。
- 在电脑上,给二维码截个图,用离线解码工具读取,例如免费工具
zbarimg:
$ zbarimg capture.png
QR-Code:https://sho.rt.example/x7Kp
这样就得到了一个和其他网址一样的地址。把它好好保存:这就是证据。
识别域名和基础设施
网址读起来有点像倒着写的邮寄地址。真正重要的名字,也就是域名,位于 https:// 之后第一个“/”的正前方。它左边的所有内容,所有者都可以随意设定。
https://login.docs-m1crosoft.example/auth
这里的域名是 docs-m1crosoft.example,而不是微软。开头的“login”什么也证明不了。microsoft.com.verification.example 也是同样的陷阱:真正的域名是 verification.example。有些域名更进一步,使用其他字母表中与拉丁字母长得很像的字母:参见Punycode 与同形字:当假域名看起来和真的一样。
找到域名后,我们要找谁能采取行动。总会遇到三方:
- 注册商相当于域名的“户籍登记处”:域名是从这家公司买的。它可以暂停域名,使用该域名的所有页面随之失效。通过对域名进行 RDAP 或 WHOIS 查询就能找到它,查询结果还会显示创建日期:一个三天前才注册的“银行”域名,是非常糟糕的信号。
- 托管商相当于大楼的业主:它的服务器在显示这个页面。它可以删除页面或关停服务器。
- CDN(例如 Cloudflare)相当于大楼门口的前台:它代替服务器提供页面,并隐藏服务器的真实地址。它接受举报,可以显示警告,并把投诉转交给托管商。
二维码指向多个域名时怎么办?
这种情况非常常见:二维码并不直接指向陷阱页面,而是指向一条跳转链。先是短链接服务,再是被滥用来转向别处的正规服务,有时还有一道“您是人类吗?”的验证,最后才是假冒的登录页面。
每一环都有自己的负责方,每一环都可以举报:
- 先举报最终页面:它的域名(向注册商)和服务器(向托管商或 CDN)。
- 再举报第一环,也就是写在二维码里的那个地址。这是骗子的软肋:印出来或发出去的二维码再也改不了。只要切断这第一个链接,所有已经散布出去的二维码就都失效了。
- 最后举报中间环节:短链接服务通常会很快封禁滥用链接,而被当作跳板的正规网站也很需要知道这件事。
把整条链连同日期和时间都记录下来:骗子经常更换最终目的地,带日期的举报能帮助收到举报的团队。
用 Baitback 举报这次活动
二维码并不会让邮件消失:这封邮件是由某台服务器发出的,而服务器属于某个托管商。把邮件的完整源代码粘贴到 Baitback:工具会找出发件服务器、其托管商和举报地址,检查 SPF、DKIM 和 DMARC,然后准备好可直接发送的举报邮件。要理解这些邮件头讲了什么,请参见一封电子邮件如何从发件人到达收件人。
从二维码解出的网址,还要另外举报给上文找到的注册商、托管商或 CDN,以及 Baitback 提示的各大浏览器防护平台(Google Safe Browsing、Microsoft、Netcraft……)。几个小时之内,这个页面就可能对数百万用户屏蔽。
如果已经扫码并输入了密码呢?
别慌,但也别拖。在一台可信的设备上修改相关账户的密码,如果有“退出所有会话”的选项就使用它;如果是工作账户,请通知 IT 部门。只改密码并不总是够的:关于 AiTM 攻击的指南会解释原因。
- 二维码只是用小方块写成的网址:它和链接一样值得警惕。
- 它经常能通过过滤器,因为它看起来像图片而不是链接。
- 它把我们从受保护的电脑带到监管更少、屏幕更小的手机上。
- 我们解码它来读出网址而不打开,然后找出紧挨着第一个“/”之前的真正域名。
- 链条上的每一环(域名、服务器、跳转)都可以举报,邮件本身也可以。