本文翻译自 Chrome and Firefox Phishing Attack Uses Domains Identical to Known Safe Sites,已获得原作者授权。

这是一条对所有 Chrome 与 Firefox 浏览器用户发布的 Wordfence 公共服务安全声明: 有一种钓鱼攻击手段今天在安全社区中引起了很多人的注意。

钓鱼攻击,指的是攻击者向你发送一封包含恶意网站链接的电子邮件。因为链接看上去可信,你可能会点击进入恶意网站。仅仅浏览恶意网站可能让你的计算机被感染,或诱使你使用可信网站的凭证来登录。攻击者随后就可以获得你的用户名、密码以及其他可以引诱你提供的敏感信息。

这个钓鱼攻击的变种使用 unicode 来注册看上去与真实域名完全一致的域名。这些假域名可以被用于钓鱼攻击中,来欺骗用户登录假冒的网站,从而将登录信息拱手交给攻击者。

受影响的浏览器包括 Chrome 最新版,也就是 57.0.2987,以及 Firefox 浏览器的最新版(52.0.2)。IE 与 Safari 不受影响。

我们创建了一个 demo 域名,来演示攻击者注册在浏览器中看起来与其他公司完全一致的域名的方法。我们决定注册假冒网站来模仿一个称为“epic.com”的医疗保健网站。你可以使用 Chrome 或者 Firefox 浏览器访问我们的 demo 网站。作为对比,这里是真正的 epic.com

在 Chrome 中,真正的 epic.com 看起来像这样:

Real epic.com in Chrome

我们的假冒 epic.com 在 Chrome 浏览器中看起来像这样:

Fake epic.com demo in Chrome

在 Firefox 中真实的 epic.com:

Real epic.com in Firefox

在 Firefox 中的假冒 epic.com:

Fake epic.com demo in Firefox

如你所见,这些域名在浏览器中看起来完全一致,但他们是完全不同的网站。其中一个是我们今天注册的。我们的 epic.com 域名其实是 https://xn--e1awd7f.com/,但在 Chrome 与 Firefox 中它显示为 epic.com

真实的 epic.com 是一个医疗保健网站。使用注册的 unicode 域名,我们完全可以克隆一个 epic.com 网站,然后发送邮件诱使用户登录我们的假冒医疗网站,这样一来就可以拿到他们的登录凭证,他们的医疗记录与其他敏感信息将对我们完全开放。

我们甚至通过 Let’s Encrypt 为我们的 demo 网站获取到了一个 SSL 证书。这只花了 5 分钟,并且是免费的。这样在 Chrome 中我们的域名旁边就会显示“安全”,而在 Firefox 中旁边则有一个绿色的锁标志。

攻击原理

xn-- 前缀是“ASCII 兼容编码”的前缀。这个前缀让浏览器知道当前域名是以“punycode”编码的,用于呈现 unicode 字符。从非技术角度来说,如果你有一个中文域名(或其他国际字符域名),你可以注册一个以英文字母组成的域名,并让浏览器在地址栏中显示中文域名(或其他国际字符域名)。

在上面的例子中,我们使用了 “e”、“p”、“i”、“c” 这些unicode 字符,虽然看起来与英文字母完全一致,但其实是不同的字符。在当前的 Chrome 版本中,只要所有字符都是 unicode,域名就会以国际化形式展示。

Firefox 的修复方法

在 Firefox 地址栏中输入“about:config”(没有引号)。

搜索“punycode”(没有引号)。

你会看到一个名为 network.IDN_show_punycode 的参数。

将参数值从 false 修改为 true

现在如果你访问我们的 demo 网站,你会看到:

Fake epic.com in fixed Firefox

Chrome 有修复方法吗?

目前就我们所知,没有。Chrome 已经在他们的测试版本 Canary 中发布了一个补丁。接下来几天应该就会发布正式版本。

在正式版本发布之前,如果你在输入敏感信息前不确定访问的是否是真实网站,你可以从地址栏复制 URL,并粘贴到 Windows 记事本或 Mac 的 TextEdit 中。如果是假冒的域名,粘贴的 URL 将会显示为 https://xn--... 版本;否则,地址将会维持原样不变。(译者注:此处是指从地址栏复制 URL;如果在访问目标网站之前预先从链接复制 URL 的话,粘贴的内容是不会有变化的。一个简单的验证方式是从地址栏复制 URL 后直接原地粘贴回地址栏

散播讯息

早在 2001 年 IDN 同义词攻击的概念就已经存在了,以色列的研究者 Evgeniy Gabrilovich 和 Alex Gontmakhe 写下了最早的记录

Web 浏览器已经尝试过很多修复方法,但是当前 Chrome 与 Firefox 中的实现显然并不足够。Chrome 即将修复这个问题,这值得赞扬。也幸亏 Firefox 有手动修复的办法。

我们鼓励您散播此讯息。这种钓鱼攻击的手段今天已经受到不少关注(4 月 14 日),并在安全社区中流传。Xudong Zheng 今天早些时候发表了关于此话题的文章,在 Reddit 的 netsec 节点上也有相关讨论

我们认为在 Chrome 正式发布相关补丁之前出现相关钓鱼攻击的可能性很高,因此决定发布这条公共服务声明。