最近我造了两个没有意义的名称:eixpay.com 和 eixpay.com,您可以分得出其中的差别吗?
在具备 Unicode 解读能力的现代上,这两个名称看起来可能完全相同,但是若您将它们复制再贴入当中,您将获得不同的搜索结果。右边的域名名称是使用俄罗斯文 (Cyrillic) 字元所组成,左边的域名名称则是用西欧语系 (Western) 字元所组成。虽然大多数的俄罗斯文字元都与 US-ASCII 字元迥异,但有一小部份的符号却看起来没什么不同 。
如果用十六进位码来显示,您就可以看出这两个域名名称的差异。如图所示,。com 在两个名称当中都是 ASCII 字码 (请看图 1)。
接着,我制作了一个简单的 HTML 档案,里面包含这两个域名名称的连结。请注意,在 anchor 标签 () 当中,ASCII 域名名称以斜体字显示,而 Unicode 域名名称则为正常字体 (请看图 2)。
当我第一次在 Firefox 3.5 当中载入这个档案时,字元编码会设成-8859-1(Western),因此 Unicode 连结看起来会明显不同 (请看图 3)。
不过,在将字元编码设定成 Unicode(UTF-8) 之后,情况就全然不同 (请看图 4)。
GIZMODO 指出,这对其他字串也有效。因此,攻击者只需找出共通的字码页,就能拼凑出假冒合法网站的字元。在我的短暂测试过程当中,我发现,在单一 URL 当中使用一个以上的 Unicode 区段会产生不可预期的结果。
最近对于 Internet Corporation for Assigned Names and Numbers () 核准使用国际化域名名称 (IDN) 的消息以及这样的作法如何造成安全风险有诸多的讨论。有些人认为,如果核准 IDN 的使用,将导致 Phishing更难防范。
简单的说,IDN 会在浏览器查询域名名称系统 (DNS) 之前先将 Unicode 字串转换成 punycode 字串。例如,eixpay.com 转成 punycode 之后将变成 xn--80aj7anh5h.com。在 www.IDNstuff.com/ 网站上提供了一些工具可将 Unicode 字串转换成 punycode,或是互转。
我花了一些时间,终于让我找到几个可接受顶层域名名称(。com、。net 等等) 以 punycode 编码的注册机构。一旦网络犯罪者注册了 xn--80aj7anh5h.com 这个域名,就能建立一个通透的 ASCII eixpay.com 网页,然后利用电子邮件、即时通信 (IM) 或者社交网络来引诱使用者点选 Unicode 连结至假冒的网络钓鱼 Phishing网页。如此一来,光是单纯地检查一下网站名称,已经不足以防范。(tyreal)