在上一篇文章中我们讨论了IDN域名钓鱼攻击的基本原理,攻击者会使用与官方网站真假难辨的假冒域名。然而,域名注册商和浏览器厂商并非毫无作为,他们实施了一些安全措施,例如限制IDN域名注册,或在浏览器地址栏直接显示其Punycode编码。
但是,IDN域名并没有也不会被完全禁止。许多注册商仍然允许注册,例如全球最大的顶级域.com就支持IDN域名。我们之前演示的域名就是.com后缀的。
浏览器的防御差异
针对IDN域名可能被用于钓鱼攻击的反馈,主流浏览器厂商基本都进行了调整。目前主要的防范思路是:在地址栏将IDN域名统一显示为Punycode编码,以避免其与拉丁字母域名混淆。
- Google Chrome:自58版本起实现了上述修复。
- Opera:在44版本推送了包含此安全机制的更新。
- 基于Chromium/WebKit的浏览器:这也意味着包括Microsoft Edge、360极速浏览器在内的许多浏览器都获得了防御IDN钓鱼的能力。

- Internet Explorer (IE):情况比较特殊。在非西里尔字母语言的操作系统上,IE无法在地址栏显示非系统语言的字符,因此只能将西里尔字母的IDN域名显示为Punycode,意外地实现了防御。

不过,在俄语等西里尔字母语言的系统上,IE就无法起到防护作用了。

- Mozilla Firefox:作为市场占有率第四的浏览器,Firefox至今仍坚持在地址栏将IDN域名以其“原有的样子”(即混合字符)显示。其官方解释是:
我们的IDN威胁模型特别排除了全部是同形异义字的情况,因为它们无法被以编程的方式检测到。而且我们的“TLD白名单”在面对大量新TLD时无法做到完全涵盖。
—— Bugzilla: IDN Phishing using whole-script confusables on Windows and Linux

当然,Firefox也并非毫无防护。当用户在地址栏编辑网址或进行复制粘贴操作时,它会显示该IDN域名的Punycode编码,这算是一种补救措施。

- 搜狗浏览器:同样存在安全隐患,它也会将IDN域名原样显示。

如何有效防范?
总的来说,在使用浏览器访问网站时,以Firefox为首的部分浏览器对IDN域名的钓鱼攻击防御力较弱,攻击依然具有迷惑性。如果你对安全有较高要求,可以尝试以下方法:
- 谨慎点击链接:避免直接点击他人提供的短链接或看似简单的网址。尽量手动输入域名,或通过可靠的搜索引擎结果页进入网站。
- 交叉验证:在安全需求极高的情况下,可以尝试在Chrome、Firefox等多个浏览器中访问同一地址。由于各浏览器显示策略不同,这有助于暴露IDN钓鱼域名。
- 检查网站证书:具备一定技术基础的用户可以检查网站的HTTPS证书。正规企业官网通常使用需要严格身份验证的EV(扩展验证)证书,证书中会明确记录如“Apple Inc.”等所有者信息。而仿冒网站通常只能申请到仅验证域名所有权的DV(域名验证)证书,这是一个重要的识别点。对于网络钓鱼和SSL证书的更多技术细节,可以在云栈社区的相关板块找到深入的讨论。
邮件系统的安全审查
在电子邮件方面,部分邮件服务提供商的安全机制更令人担忧。
- Gmail:会将IDN域名的发件人地址原样显示。对于未使用S/MIME邮件安全证书签名的邮件,Gmail会给出“无法验证邮件的发送者”的提示。

然而,如果攻击者使用S/MIME证书对邮件进行签名后再发送,Gmail则会完全信任这封邮件,并将其发件人标记为“通过验证的电子邮件地址”。


- 其他邮件客户端/服务:相比之下,Mozilla Thunderbird、网易邮箱和QQ邮箱等表现更好。它们会将IDN域名的发件人信息以Punycode编码形式显示,或者直接弹出风险警示,提醒收件人仔细核对发件人地址。


通过本系列两篇文章,我们简要分析了基于IDN域名的网络钓鱼攻击手法以及现有的防范措施。希望这些内容能帮助你更好地识别和防范此类安全威胁。
|