一种几乎无法被检测到的Punycode钓鱼攻击,Chrome、Firefox和Opera等浏览器都中招

国内的安全专家最近发现一种新的钓鱼攻击,“几乎无法检测”,即便平时十分谨慎的用户也可能无法逃过欺骗。黑客可利用Chrome、Firefox和Opera浏览器中的已知漏洞,将虚假的域名伪装成苹果、谷歌或者亚马逊网站,以窃取用户的登录凭证、金融凭证或其他敏感信息。

防钓鱼的最佳方式是什么?一般来讲,我们会在页面加载出来后检查地址栏,看看地址是否由有效的HTTPS连接提供。对吧?

那么,在继续深入之前,我们来看看这个页面。页面是由发现这一攻击的中国安全研究员Xudong Zheng创建的,点击去看看。

如果你的浏览器显示的地址是“apple.com”,并有SSL安全认证的,但是页面内容却来自另一个服务器(如上图所示),那么你的浏览器就易遭受“同形异义字攻击”。

Wordfence的安全专家们也创建了另一个PoC网站,展示了同一个漏洞;这个网站仿冒的是“epic.com”的域。用Chrome、Firefox来访问,看看是不是很神奇?

同形异义字攻击自2001年以来就已为人所知,但是浏览器厂商修复该问题的过程却很艰难。这种欺骗攻击就是网址看起来是合法的,但实际上不是,因为其中的一个字符或者多个字符已经被Unicode字符代替了。

许多Unicode字符,代表的是国际化的域名中的希腊、斯拉夫、亚美尼亚字母,看起来跟拉丁字母一样,但是计算机却会把他们处理成完全不一样网的网址。

比如说,斯拉夫字母“а” (U+0430)和拉丁字母“a”(U+0041)会被浏览器处理成不同的字符,但是在地址栏当中都显示为“a”。

Punycode钓鱼攻击

在默认情况下,许多web浏览器使用“Punycode”编码来表示URL中的Unicode字符,以防止同形异义字钓鱼攻击。Punycode是浏览器使用的特殊编码,目的是将Unicode字符转义成字符数目有限的ASCII 码字符集(A-Z,0-9),由国际化域名(IDN)系统支持。

比如说,中文域名“短.co”用Punycode来表示就是“xn--s7y.co”。

根据Zheng的博客,这个漏洞所依赖的基础是:浏览器只将单一语言采用的Unicode编码转换为Ponycode URL (比如汉语或者日语),但是如果一个域名当中包含来自多个语言的字符,浏览器就无法分辨了。

研究人员利用这个漏洞注册了xn--80ak6aa92e.com域名,绕过了保护,并在所有存在上述漏洞的浏览器中显示为“apple.com”,包括Chrome、Firefox和Opera,不过IE、Edge、Safari、Brave、Vivaldi并不存在该漏洞。

此处的xn前缀是一个“ASCII兼容编码”前缀,意味着浏览器采用Punycode编码来代表Unicode字符,因为Zheng用到了斯拉夫语的“а” (U+0430)而非ASCII的“a”(U+0041),浏览器的防御措施也就失效了。

Zheng已于一月份向受影响的浏览器厂商报告了该问题,包括Google和Mozilla。Mozilla目前还在商讨解决方案,Google已经在Chrome Canary 59中修复了这一漏洞,而且会在本月晚些时候发布Chrome Stable 58时,给出永久的修复方案。

与此同时,建议可能受此钓鱼攻击影响的用户暂时关闭浏览器中的Punycode支持,来分辨钓鱼域名,缓解此攻击。

Firefox用户缓解方案

Firefox用户可根据以下步骤,手动开启缓解方法:

1. 在浏览器地址栏中输入about:config,并按回车键。

2. 在搜索栏中输入Punycode。

3. 浏览器设置将显示network.IDN_show_punycode参数,双击或者右键选择Toggle,将值改为“True”。

Chrome和Opera中并没有类似的设置,来手动关闭Punycode URL转义,所以Chrome用户请耐心等待几周,等待Stable 58发布。

同时也建议用户在手动输入重要网站URL,包括Gmail、Facebook、Twitter、Yahoo及银行网站,不要点击某些网站或者邮件当中的上述网站链接,避免遭遇此钓鱼攻击。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-04-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏不二小段

【爬虫军火库】下载保存图片(文件)

今天开始开一个新坑,暂且叫做【爬虫军火库】吧。以前一直想系统地写些东西,最终大都未能成文,想来我不适合发宏愿立长志,还是一步一个脚印地写点零碎的东西。有关爬虫,...

33680
来自专栏ImportSource

并发编程-多线程的好处

上一文:并发编程-并发的简史 如果线程使用得当,多线程可以降低你的开发和维护成本,而且还能改善复杂应用程序的性能。多线程让模仿人类工作方式以及交互变得简单,多线...

37360
来自专栏信安之路

pentestdb 架构详解

在渗透测试领域有琳琅满目的工具、神器,它们可以大大简化渗透测试的工作量。但很多时候仅仅使用别人的工具是不够的,我们需要自己去编写一些脚本、插件来完成定制的内容,...

12700
来自专栏散尽浮华

事故记录:php-cgi进程过多导致系统资源耗尽

事故现象: 机房一台服务器运行一段时间后,突然发现系统资源即将被耗尽! 1)top命令查看一下系统的cpu ram swap的使用情况 ? 由上图分析,可以看出...

33450
来自专栏JAVA高级架构

分布式之redis复习精讲

16540
来自专栏来自地球男人的部落格

python中scrapy点击按钮

最初遇到的问题的是在用scrapy爬取微博时需要按照指定关键字来爬取特定微博,主要还是解决需要输入关键字然后点击搜索按钮的问题。于是: 首先 找了scrapy的...

43670
来自专栏乐享123

从MongoDB迁移到TokuMx

26180
来自专栏CSDN技术头条

NewSQL数据库大对象块存储原理与应用

一、前言 企业内容管理(EnterpriseContent Management,ECM)系统是一种管理非结构化内容的系统,传统代表为EMC Document...

28650
来自专栏友弟技术工作室

程序员必知必会的那些邪恶的脚本

朝圣 前言 程序员必须掌握一定的运维知识。本文通过一些邪恶,搞破坏的方式。教会你一些危险的脚本操作。 附赠 运维意识与运维规范 1.线上操作规范 ...

35370
来自专栏FreeBuf

SSLStrip 终极版:Location 瞒天过海

作者 Ether Dream 前言 之前介绍了 HTTPS 前端劫持 的方案,虽然很有趣,然而现实却并不理想。其唯一、也是最大的缺陷,就是无法阻止脚本跳转。若是...

22580

扫码关注云+社区

领取腾讯云代金券