不知道你是否见过这样一个域名 “www.аррӏе.com”?在火狐浏览器中打开后,你会看到一个地址栏显示为苹果官方域名 www.apple.com,但页面内容却完全不同的网站。

作为实验,笔者也注册了一个域名 “орро.com”。

将这两个域名放在一起比较,大多数人可能根本无法一眼看出区别:
www.орро.com (仿冒域名)
www.oppo.com (真实域名)
笔者将在本文中剖析这种基于IDN域名的网络钓鱼攻击背后的基本原理,带你一探其中的奥秘。
首先,我们需要明确两个核心概念。
什么是网络钓鱼攻击?
“网络钓鱼”是一种试图窃取敏感信息(如用户名、密码、信用卡号等)的攻击行为。攻击者通常会伪装成可信的来源,诱使受害者上钩,这就像渔夫用鱼饵钓鱼一样。
“网络钓鱼”是指企图窃取敏感信息以利用或出售窃得的信息的行为,敏感信息的形式包括用户名、密码、信用卡号、银行账户信息或其他重要数据。攻击者借助诱人的要求伪装成信誉良好的来源,诱使受害者受骗上当,这类似于渔夫使用诱饵来捕鱼。
— Cloudflare:什么是网络钓鱼?

简单来说,钓鱼攻击的本质就是通过伪装和欺骗从受害者那里非法获利。随着技术演进,攻击手段也日益复杂。如果你对各类安全攻防技术感兴趣,可以关注 云栈社区 的安全板块,那里有更多深入的讨论和资源。
什么是IDN域名?
国际化域名(英语:Internationalized Domain Name,缩写:IDN)又称特殊字符域名,是指部分或完全使用特殊的文字或非拉丁字母组成的互联网域名,包括阿拉伯语、中文、俄语、泰米尔语、希伯来语或韩语等使用非拉丁字母的语言,这些文字经多字节万国码编译而成。在域名系统中,国际化域名使用Punycode转写并以美国信息交换标准代码字符串储存。
— 维基百科:国际化域名
简单地说,IDN域名就是使用非拉丁字母(如中文、俄语字母)注册的域名,例如 “中文.中国”。它是本文所述钓鱼攻击得以实现的技术基础。在底层的域名系统(DNS)中,IDN域名会被转换成一种叫做 Punycode 的ASCII编码格式进行存储。例如,“中文.中国” 编码后就变成了 xn--fiq228c.xn--fiqs8s。
为什么这类域名能以假乱真?
我们来仔细对比一下这些域名。
以仿冒的 “www.аррӏе.com” 为例,和真实的 “www.apple.com” 对比:
www.аррӏе.com
www.apple.com
仔细观察(或在某些系统字体下),你会发现第一个域名中的 “ӏ” 和拉丁字母 “l” 有细微差别。实际上,在一些常见的字体(如思源黑体)中,这些字符可能根本无法正常显示。

这恰恰说明,用于IDN钓鱼攻击的字符并非标准的拉丁字母,否则不会出现“www”和“com”显示正常而中间字符异常的情况。它们实际上是来自其他语言字母表的同形异义字符,其中最常见的是 西里尔字母。
西里尔字母是俄语、乌克兰语等斯拉夫语族语言使用的文字系统。它与拉丁字母、希腊字母有着很深的渊源,许多字母外形高度相似。

从图中可以看出,不同字母体系间存在大量视觉上难以区分的字符。攻击者正是利用了这一点,用其他语言中形似的字符来替换拉丁字母,以达到仿冒的目的。
由于域名不区分大小写(访问 APPLE.com 会自动跳转到 apple.com),因此必须使用小写字符。这一步淘汰了希腊字母,因为其小写形式(如 α, ρ)与拉丁字母(a, p)差异明显。相反,西里尔字母中的一些小写字母与拉丁字母小写形态惊人地相似:
| 西里尔字母 |
а |
е |
о |
р |
с |
у |
ѕ |
і |
ј |
ӏ |
| 拉丁字母 |
a |
e |
o |
p |
c |
y |
s |
i |
j |
l |
IDN钓鱼攻击正是滥用了这些“真假难辨”的字符。历史上就曾出现过使用西里尔字母“а”仿冒的 pаypal.com(现已无法访问)。
为了防范此类攻击,目前许多域名注册商已禁止或严格审核此类IDN域名的注册,有些公司甚至会抢先注册这些易混淆的域名以保护品牌。大多数现代浏览器也会默认将IDN域名转换显示为 Punycode 格式,以提醒用户注意风险。
在后续的文章中,笔者将进一步展示此类攻击在浏览器、电子邮件等实际场景中的应用效果,并探讨更具体的防御措施。
最后需要郑重声明:文中提及的 “www.аррӏе.com” 和 “www.орро.com” 仅用于网络安全教育目的。这些实验性网站上均有醒目的风险提示和原理说明,并非真正的钓鱼网站。