所见非所得: 浅析同形异义词攻击及案例分析

所见非所得: 浅析同形异义词攻击及案例分析

引言

自从 ICANN 二十多年前在域名(称为国际化域名或简称 IDN)中引入Unicode 以来,一系列全新的安全问题也随之浮出水面,同时还可能使用不同的字母和Unicode 字符注册域名。

在研究基于同形异义词和 IDN的网络钓鱼和其他攻击的可行性时,主要是在 web 应用渗透测试的背景下,我们偶然发现了一些奇怪的案例,它们也影响了移动应用程序。然后我们决定针对移动即时通讯工具展开调查,特别是那些面向安全的,调查这类漏洞的流行程度。

这篇博客文章提供了关于同形异义攻击的简要概述,强调了它的风险,并介绍了针对 Signal,Telegram 和 Tor Browser 的两种实际利用方式。这两种方式可能导致几乎不可能被检测到的完美网络钓鱼场景,也可能导致更强大的利用方式以用来对付具有网络欺骗意识的目标。

什么是同形字和同形异义词?

在我们生活中,碰见属于不同字母的字符却看起来相似的情况并不少见,这些字符即被称为同形字符。有时这取决于它们恰好以视觉上难以区分的方式呈现,使用户无法区分它们之间的差异。

因为肉眼看'a'和'a'看起来是一样的(一个同形字) ,但前者属于拉丁文,后者属于西里尔字母。 然而对于未经训练的人类眼睛来说,很难区分这两者,它们可能被计算机列为两种完全不同的解释。

同形异义词是两个看起来相同但实际上不同的字符串。 例如,英语单词"lighter"在写法上是一样的,但根据上下文的不同,它的意思也有所不同——它的意思可以是"点火的装置",也可以是名词,也可以是动词"heavy"的反义词。 字符串 blazeinfosec.com 和 blazeinfosec.com 经常作为同形字符呈现,但当转换为 URL 时会产生不同的结果。PHP大马

同形字,以及扩展的同形字,存在于许多不同的文字之间。 例如,拉丁文、希腊文和西里尔字母共用许多字符,这些字符要么看起来完全相似(例如,A 和 A) ,要么非常相似(例如,P 和P)。 Unicode 有一个文档,它考虑到了"易混淆"字符,这些字符在不同的脚本中具有相似的视觉感观。

字体渲染和同形字

如CVE-2018-4277和2017年4月由Xudong Zheng提供的示例所示,渲染字体的呈现方式,以及显示器中字体的大小,同形字和同形异义词可能以不同的方式显示,也可能彼此之间没有完全不同,这暴露了迄今为止针对 IDN 同形字所采取的措施是不足的。

下面是用 Tahoma 字体显示的字符串 https://www.apple.com (拉丁文)和  https://www.аррӏе.com (西里尔字母) ,字体大小为30:

下面是以 Bookman Old Style 字体显示的相同的字符串,大小为30:

 所见非所得: 浅析同形异义词攻击及案例分析

从它们呈现和显示的方式来看,Tahoma 似乎没有区分这两者,没有为欺诈网站的用户提供任何视觉指示。 另一方面,Bookman Old Style 似乎至少对'l'和'І'有不同的表现方式,给出了关于 URL 合法性的一个小小的视觉暗示。

国际化域名(IDN)和 punycode

随着在主要操作系统和应用程序中对Unicode 的支持的出现,以及互联网在那些不一定使用拉丁文字母的国家中得到普及,因特网名称与数字地址分配机构在1990年代末推出了第一个版本的互联网注册号(IDN)。

这意味着域名可以用其母语的字符来表示,而不是用 ASCII 字符来绑定。 然而,DNS 系统并不能理解 Unicode,因此需要一种适应 ascii 专用系统的策略。 因此,发明 Punycode  是为了将包含 Unicode 符号的域名翻译成 ASCII 码,这样 DNS 服务器就可以正常工作了。

  例如,ASCII 中的 https://www.blazeinfosec.com 和 https://www.blаzeinfosec.com 将是:

· https://www.blazeinfosec.com

· https://www.xn--blzeinfosec-zij.com

由于第二个 URL 中的'a'实际上是西里尔字母的'a',所以需要翻译成 Punycode。

注册同形异义词域名

在国际化域名最初版本一中,可以将 ASCII 和 Unicode 的组合注册到同一个域名中。 这显然是一个安全问题,而且自从采用 IDN 第二和第三版以来已经不再是这样了,该版本进一步限制了 Unicode 域名的注册。 最值得注意的是,它指示通用顶级域名禁止注册包含混合脚本的域名(例如,同一字符串中的拉丁字符和日本汉字字符)。

尽管许多顶级域名注册商限制混合脚本,但历史上已经证明了在一个脚本中注册类似的域名的可能性—- 这是目前许多 gTLD 注册商所允许的做法。举个例子,apple.com 和 paypal.com 这两个域名都有西里尔同形异义词,过去被安全研究人员注册为网络浏览器中同形异义词问题的概念证明。

洛根 · 麦克唐纳写了一个工具 ha-finder ,它可以查看排名前100万的网站,检查每个网站的字母是否与拉丁文或小数混淆,然后执行 WHOIS 查找,并告诉你是否可以注册。

同形异义词攻击

尽管 ICANN 意识到了同形异义词攻击的潜在风险,但是自从 IDN 引入以来,第一批同形异义词在IDN欺骗被认为是在2005年被 Shmoo Group 的 3ric Johanson 发现的。 这个问题的细节在这个 Bugzilla 票据中有所描述,并且影响了当时许多其他的浏览器。

Unicode 同形异义词的另一个实现是针对 Spotify 的攻击,但与本文中描述的问题没有直接关系。在博客中,一位研究人员发现由于基于 Unicode 的用户名在 ASCII 码中的转换和规范化不当,导致攻击者可以直接接管用户账户。

最近,在野外发现了类似的针对加密货币交易所 MyEtherWalletGithub 的用户的网络钓鱼攻击, 2018年,苹果公司在 Safari 浏览器中修复了一个 bug名为  CVE-2018-4277 。腾讯实验室发现,在 URL 栏中输入了一个小写的拉丁字母'ꝱ' (dum),看起来与字符"d"一模一样。

不同的浏览器有不同的策略来处理 IDN。 根据配置,其中一些将显示 Unicode,以提供更友好的用户体验。 他们也有不同的 IDN 显示算法。谷歌的 Chrome 浏览器的算法可以在这里找到。 它在注册域名的 gTLD 上执行检查,并验证字符是否在西里尔混淆字符列表中。

火狐浏览器,包括默认配置的 Tor 浏览器,实现了一个不那么严格的算法,即使这些字符是拉丁混淆的,也可以简单地在他们的脚本中显示 Unicode 字符。当然,这些不足以保护用户的安全,也不难举出一个实际的例子:只要点击 https://www.раураӏ.com 链接就可以打开一个网站,其中的 URL 栏会显示 https://www.paypal.com 链接,即使它输入时并不是原始的 PayPal。

这给火狐 和 Tor 浏览器的用户带来了一个明显的问题。 在显示 IDNs 时,很多打算改变这两个浏览器的行为的尝试在过去已经发生,包括 Firefox 和 Tor 浏览器的票据—— 这些票据从2017年初就开放了。

使用同形词攻击Signal、Telegram和Tor浏览器

此前关于这一主题的绝大多数研究都集中在浏览器和电子邮件客户端上。因此,我们决定研究不同的媒介,其中可以利用同形异义词(无论是完全还是部分)来完成一次成功的攻击。

例如,通常情况下,使用面向隐私聊天平台(如Signal、Telegram)的个人的威胁模型是不包括点击通过短信或即时消息发送的链接,因为它已被证明是一系列入侵移动目标的攻击链中的初始攻击向量

正如本文前面提到的,根据用于显示文本的字体和大小,它可能以视觉上难以区分的方式呈现在屏幕上,使人类用户无法区分合法的 URL 和恶意链接。

攻击步骤

· 攻击者获得类似于攻击合适域名的同形词域名

· 攻击者在提供特定 URL 的 Web 服务器中托管恶意内容(例如,网络钓鱼或浏览器漏洞利用)

· 攻击者向目标发送包含恶意同形词 URL 的链接

· 攻击的目标点击链接,认为它是一个可信任的合法网址,因为没有办法在视觉上区分合法和恶意网址

· 恶意攻击行为发生

下面我们可以看到 Signal Android 和 Desktop 版本是如何分别渲染包含同形字符链接的消息的:奇热影视

   所见非所得: 浅析同形异义词攻击及案例分析

所见非所得: 浅析同形异义词攻击及案例分析

Telegram 甚至对这个假网站进行了网页预览,并以一种普通人无法辨别的方式呈现了这个链接是恶意的:

 所见非所得: 浅析同形异义词攻击及案例分析

直到最近,许多浏览器还是很容易受到这些攻击,并以拉丁文的形式在 URL 栏中显示同形词链接,而不是预期的 Punycode。另一方面,火狐浏览器在默认情况下一直试图变为用户友好的界面,并且在很多情况下不显示 Punycode,这会使得使用火狐浏览器的用户很容易受到这种攻击。

如前所述,Tor 浏览器是基于火狐浏览器的,这允许针对 Signal 和 Telegram 的用户提供完整的攻击链。考虑到这些即时消息的用户的隐私问题和威胁模型,很可能他们中的许多人会使用 Tor 浏览器进行网页浏览,因此使他们容易受到全链同形异义词的攻击。

Signal + Tor 浏览器攻击视频演示:

点击查看视频

Telegram + Tor 浏览器攻击视频演示:

点击查看视频

我们在Signal和Telegram中发现的错误已经分配了 CVE-2019-9970和 CVE-2019-10044。 这些建议可以在我们的 Github 的公告页面找到。

在我们的测试中,其他流行的即时通讯工具,比如 Slack,Facebook Messenger 和 WhatsApp 并不容易受到这类攻击。 最新版本的 WhatsApp 甚至在链接中显示了一个标签,警告用户这个链接可能是恶意的,而其他的通讯软件只是将链接呈现为无法点击的状态。

总结

可混淆的同形异义词是一类针对互联网用户的攻击,自 Unicode 域名出现以来已经存在了近20年。 同形异义词在计算机安全中的风险已经为人所知,并且已经得到了比较广泛的关注度,但是我们仍然不时地看到与同形异义词相关的攻击重新出现。

尽管这类攻击已经存在了一段时间,但人们很少关注这类攻击,因为它们通常被视为危害不大,而且通常属于社会工程学的范畴——这并不总是应用程序的威胁模型的一部分,人们经常假定用户们可以自行判断安全风险,但事实上,我认为在设计应用程序时可以做得更好来避免这类攻击。

最后,应用程序安全团队应该加强他们的程序的安全性,积极防止此类攻击的发生(就像谷歌设计 Chrome 浏览器那样注重细节) ,而不是指责注册商、依靠用户自己做到不上当或者等待 ICANN 拿出一个完美的解决方案来解决问题。

参考资料

[1] https://krebsonsecurity.com/2018/03/look-alike-domains-and-visual-confusion/

[2] https://citizenlab.ca/2016/08/million-dollar-dissident-iphone-zero-day-nso-group-uae/

[3] https://bugzilla.mozilla.org/show_bug.cgi?id=279099

[4] https://www.phish.ai/2018/03/13/idn-homograph-attack-back-crypto/

[5] https://dev.to/loganmeetsworld/homographs-attack–5a1p

[6] https://www.unicode.org/Public/security/latest/confusables.txt

[7] https://labs.spotify.com/2013/06/18/creative-usernames

[8] https://xlab.tencent.com/en/2018/11/13/cve-2018-4277

[9] https://urlscan.io/result/0c6b86a5-3115-43d8-9389-d6562c6c49fa

[10] https://www.xudongz.com/blog/2017/idn-phishing

[11] https://github.com/loganmeetsworld/homographs-talk/tree/master/ha-finder

[12] https://www.chromium.org/developers/design-documents/idn-in-google-chrome

[13] https://wiki.mozilla.org/IDN_Display_Algorithm

[14] https://www.ietf.org/rfc/rfc3492.txt

[15] https://trac.torproject.org/projects/tor/ticket/21961

[16] https://bugzilla.mozilla.org/show_bug.cgi?id=1332714

猜你喜欢

转载自blog.csdn.net/systemino/article/details/93246012