【技术分享】任意伪造大站域名(以Apple官网为例)

发表于:2017-04-18 13:50:00 来源:  安全客 阅读数(0人)



你相信这是一个钓鱼网站的域名吗?


Punycode可以让域名由外文组成。Punycode使用ASCII字符集,可以把外文域名转换成有意义的字符。例如,域名xn--s7y.co,会被转换成短.co


在安全角度看,由於Unicode字符与ASCII字符难以区分,所以注册Unicode域名「xn--pple-43d.com」,会被转换成「apple.com」。乍看下域名没大分别,可是「apple.com」的a用编码Cyrillic (U+0430),而不是编码ASCII (U+0041)。这就是传统的IDN欺骗。


幸运的是,现在的浏览器有防御机制限制IDN欺骗。像火狐和Chrome浏览器,如果域名包含多个不同语言的外文编码,就会把域名的Unicode编码以正则表达式显示。例如,「apple.com」会被显示为「xn--pple-43d.com」,这就避免与真正的苹果官网混淆。


火狐和Chrome的IDN欺骗防御机制是可以被绕过的,如整个钓鱼网站域名都是由一种语言的外文编码组成,例如「apple.com」,是由Cyrillic编码「xn--80ak6aa92e.com」所组成。经常发生IDN欺骗,是因为在火狐和Chrome上,所有英文都是采用同一字体,因此在视觉上难以区分域名是由哪种编码组成。在这情况下,用户只能靠SSL证书来识别网站的真伪性。


2017年1月20日,这漏洞已经提交给火狐和Chrome,而Chrome 59已经把这漏洞修复。Chrome团队决定把Chrome 58也纳入修复中,预计在4有25日就能完成修复。而火狐则表示这漏洞未能解决。在火狐漏洞平台中,这漏洞状态由「修复中」转为「不会修复」,并把危险级别标为「低危」。


火狐用户想修复这漏洞,可以前往about:config并设置network.IDN_show_punycode为true,以正则表达式来显示IDN域名,从而分辨域名的真伪性。




各浏览器测试截图


Chrome




Firefox




Firefox SSL




总结


当用户从网站输入个人资料,必须注意域名的真伪性。同时,希望火狐能够考虑修复这个漏洞。


相关新闻

大家都在学

课程详情

信息安全基础

课程详情

网络安全漫谈

课程详情

网络安全基础