1.1 URL的“可视化”问题—字形欺骗钓鱼攻击
作为网站身份的标志,URL最常用的场景应用是被用户的眼睛看到。因此,攻击者引入了一种新的攻击方式—字形欺骗攻击。如果攻击者试图使用0、o、1、i之类的类似型字符进行攻击,可能会在网址的外观上产生一定的欺骗性。
在XP诞生之初,网络发展正盛,宋体和Times New Roman占据了大量桌面系统的UI,字母1和数字i的区分不是很强烈,乍一眼经常看错。因此,许多木马为了防止用户看出蹊跷,都以exl1orer.exe、svch0st.exe的名称运行。不久,在互联网上出现了许多字形攻击。
Apple—app1e Apple—app1e Apple—app1e Time New Roman 微软雅黑 宋体
为了解决这个问题,操作系统的字体和排版也进行一些微调,例如一些常用字体上数字1和字母i的区分越来越明显了,而且数字1出现在字母中时,两边的空隙也更大。
用长的像的数字去替换字母的方式相对过时,普通用户也有一定分辨的能力,攻击者肯定得找到更优的“解决方案”来实施攻击。结合URL支持国际化域名的“新功能”,攻击者提出了字形欺骗攻击的现代版本—国际化域名字形欺骗攻击。
1.2 国际化域名字形欺骗攻击
国际化域名字形欺骗攻击是指利用一些语系字母外形和英文字母外形几乎一样的特性,从而欺骗受害者的视觉判读的攻击形式。例如常见的字母“O”就有许多编码不同,但是外观一样的“兄弟”。O的欺骗性比之前所说数字1的例子强的多,在许多字体中各种“O”都呈现出完全一样的外观。
语系/符号
字形
UNICODE+
西里尔字母
Oo
041E/043E
希腊字母
Oo
039F/03BF
亚美尼亚字母
Oo
0555/0585
腓尼基字母
Oo
1090F/1091F
这不是个例,许多西方字母,比如西里尔字母a和英文字母a显示起来就是几乎一样的。如果攻击者注册一个混杂有西里尔字母的域名的“alipay.com”并发送给受害者,对方仅凭肉眼识别的话很有可能会受骗。在常用额“微软雅黑”等字体中,西里尔字母a和英文字母a并无外观上的差异。
Chrome浏览器已经在用户输入这个URL的同时显示出了punycode,告诉用户这个域名里面有Unicode字符。同时,域名注册商也在加强对此类域名的过滤,并不是所有这类都能注册。但是最为理想的情况应当是浏览器主动提醒这个地址不是“alipay.com”如果只是显示转换后的国际域名,很可能只会提醒到那些有经验的、知道xn—是何物的用户,对不认识国际域名的用户来说,这个提示可能就和HTTPS的绿锁一样被忽视掉。为减弱这个威胁,现在注册商已不允许混杂英文的国际域名注册,但这仍不能阻挡全部由型近字符组成的域名。
1.3 自纠错与Unicode字符分解映射
上面提到域名只要有Unicode都应该视为IDN,但凡事总有例外,浏览器还真的对URL一些字符做了特殊处理。浏览器自身对用户输入的URL有一定的纠正逻辑,例如你输入‘http:/www.example.org’(少个斜线),浏览器会自动帮你纠正成‘http://www.example.org’。同理,方便国际化域名的是,加入用户输入了‘http://互联网中心。中国’,浏览器会自动把句号转换为点。
在浏览器中还有一些可能大家并不是非常在意的特殊逻辑。以Chrome为例,在Chrome输入http:/www.example.org之后,Chrome并不会把它们转为punycode,而是会在其标准化函数中将该Unicode字符按照映射分解成ASCII字符‘org’,然后重定向到http://www.example.org。跟踪网络可以发现,在整个替换过程中,浏览器并没有发起请求,所以我们可以确定,与punycode一样,Chrome通过自身的逻辑就把它替换了。调试Chrome得知,Chrome在对URL的Host部分进行标准化时,如果发现它是一个类IDN,将会对它做转换到ASCII处理,在这个过程中调用ICU(Unicode国际化组件)库的标准化函数来将特定Unicode分解为ASCII字符。这个过程称为“分解映射”(DM),在每个浏览器中均有对这类字符的自动分解。更多的分解字符可以查询Unicode表得到。
1.4 登陆信息钓鱼攻击
钓鱼方式则是利用URL中登陆信息的部分。由于用户名:密码这样的形式看起来非常像域名:端口号,因此攻击者可以使用http://www.example.com:80@evil.com/的形式来将evil.com伪装成http://www.example.com来钓鱼。不同浏览器有不同的处理方式,以下是在地址栏直接输入网址后,浏览器处理时的差异。
2/13 首页 上一页 1 2 3 4 5 6 下一页 尾页