【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


目录

0x01 什么是网络钓鱼?

0x02 钓鱼可能产生的危害有哪些?

钓鱼

0x03 前言    

同形异义字攻击

那么Chrome、Firefox和Opera浏览器的漏洞又是来自哪里?

PS:为什么会产生这个漏洞呢?

0x04 用户如何保护自己呢?


讲解Punycode钓鱼攻击 之前,我们先简单了解一下,什么是网络钓鱼攻击的概率。

0x01 什么是网络钓鱼?

      网络钓鱼(Phishing,与钓鱼的英语fishing发音相近,又名钓鱼法或钓鱼式攻击)是通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出敏感信息(如用户名、口令、帐号 ID 、 ATM PIN 码或信用卡详细信息)的一种攻击方式。

      攻击者利用欺骗性的电子邮件和伪造的 Web 站点来进行网络诈骗活动,受骗者往往会泄露自己的私人资料,如信用卡号、银行卡账户、身份证号等内容。诈骗者通常会将自己伪装成网络银行、在线零售商和信用卡公司等可信的品牌,骗取用户的私人信息。

PS:来自百度百科的回答

0x02 钓鱼可能产生的危害有哪些?

例如:

文件通过PNG隐写技术将真正的模块隐藏在自身携带的图片资源中,在运行时从图片中动态提取出恶意模块,然后直接在内存(PE)中加载执行。

                                                                【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第1张图片

钓鱼

看天

      根据不同国家或地区,看看当前国情和时事,发现哪些目标和人群适合钓鱼攻击,进行定点钓鱼。

选竿

      选择特定的目标人群。

做饵

      制作具有诱惑性的文件、图片(隐写术)、木马、执行文件等等钓鱼工具(免杀)

上大鱼

      最后,就是等待傻鱼的上钩咯

0x03 前言    

      钓鱼攻击,“几乎无法检测”,即便平时十分谨慎的用户也可能无法逃过欺骗。

      在某些钓鱼场景中,黑客可利用Chrome、Firefox和Opera浏览器中的已知漏洞,将虚假的域名伪装成苹果、谷歌或者亚马逊网站,以窃取用户的登录凭证、金融凭证或其他敏感信息。

同形异义字攻击

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

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

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

备注:

      早期的DNS(Domain Name System)是只支持英文域名解析。域名的编码字符集是ASCII码。在IDNs(国际化域名international domain names)推出后,为了保证兼容以前的DNS,所以,对IDNs进行punycode转码,转码后的punycode就由26个英文字母+10个数字,还有‘-’组成。

ASCII码:ASCII码是基于拉丁字母的一套电脑编程系统,主要用于显示现代英语和其他西欧语言。它被设计为用1个字节来表示一个字符,所以ASCII码表最多只能表示2**8=256个字符。实际上ASCII码表中只有128个字符,剩余的128个字符是预留扩展用的。

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第2张图片

Unicode:随着世界互联网的形成和发展,各国的人们开始有了互相交流的需要。但是这个时候就存在一个问题,每个国家所使用的字符编码表都是不同的。这个时候,人们希望有一个世界统一的字符编码表来存放所有国家所使用的文字和符号,这就是Unicode。Unicode又被称为 统一码、万国码、单一码,它是为了解决传统的字符编码方案的局限性而产生的,它为每种语言中的每个字符设定了统一并且为之一的二进制编码。Unicode规定所有的字符和符号最少由2个字节(16位)来表示,所以Unicode码可以表示的最少字符个数为2**16=65536。

IDN:国际化域名(英语:Internationalized Domain Name,缩写:IDN)又称特殊字符域名,是指部分或完全使用特殊的文字或字母组成的互联网域名,包括法语、阿拉伯语、中文、斯拉夫语、泰米尔语、希伯来语或拉丁字母等非英文字母,这些文字经多字节万国码编译而成。IDN的域名是使用unicode字符集。

计算与知名网址的相似度

      此时这个待检测域名被映射成一个它所有可能的相似域名集合,这时候将top2w的知名网址域名集合与这个相似域名集合做一个交集,如果该域名集合是由IDN域名衍生而来的,则只要这个域名集合与知名网站集合有交集则认定这个域名有高度伪造嫌疑,因为常常使用IDN域名的情况通常是有伪造嫌疑的。

      如果该域名集合不是由IDN域名衍生而来的,则判断与知名网站域名交集个数是否为1(这里的意义在于伪造的域名具有极强的针对性)而且判断这两个域名之间的编辑距离是否为1。

      因为部分知名网站中的域名本身就十分相似,如果这个‘恶意’域名与多个知名网站域名相似,则反映出针对性不强,且更容易误报。

      再者,根据统计,90%的域名伪造行为编辑距离都等于1,也就是说,大部分伪造域名只会替换其中的一个字符(毕竟字符替换多了,人就更容易察觉其中的不同)。

 

那么Chrome、Firefox和Opera浏览器的漏洞又是来自哪里?

      经测试Chrome、Firefox和Opera能够直接在地址栏中显示Unicode字符,我们即可注册Unicode域名对应的Punycode转码后的域名,在浏览器中输入网址后会直接显示Unicode字符。

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第3张图片
      一般来讲,我们在打开某一个陌生的页面后,会查看浏览器加载出来后检查地址栏,看看地址是否由有效的HTTPS连接提供或域名是不是就是真的域名(例如:www.baidu.com)。对吧?

      本次,我们主要要讲的是利用Punycode转码后的域名,伪造欺骗。页面是由发现这一攻击的中国安全研究员Xudong Zheng创建的,点击去看看。

www.xn--80ak6aa92e.com

那么,我们来分析哈,我们本来是想要访问浏览器后,能直接被浏览器解析为:www.apple.com 的。

先看看www.xn--80ak6aa92e.com解析成中文域名后,是什么样的,如下:

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第4张图片

https://www.chromedownloads.net/chrome64win-canary/list_5_2.html

如果有安装谷歌,请先卸载掉当前版本(我这里是最新版本),再安装 56.0.2906.0_chrome64_canary_windows_installer.exe (离线安装版)

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第5张图片

这个是我们的离线版,我们双击打开

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第6张图片

此时,我们在谷歌浏览器旧版本(56)里访问www.xn--80ak6aa92e.com之后,谷歌浏览器旧版本(56)会自动还原成www.apple.com,在该版本浏览器中,我们的浏览器是容易遭受“同形异义字攻击”的。

PS:为什么会产生这个漏洞呢?

      因为,浏览器只将单一语言采用的Unicode编码转换为Ponycode URL (比如汉语或者日语),但是如果一个域名当中包含来自多个语言的字符,浏览器就无法分辨了。

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第7张图片

那么,我们用最新版的谷歌浏览器(本博主最新版谷歌浏览器为: 83.0.4103.61(正式版本))再次访问www.xn--80ak6aa92e.com试试呢?看看结果如何

【APT杂项篇】一种老旧,但却防不胜防的钓鱼攻击(Punycode 钓鱼攻击)_第8张图片

      从上图,我们可以看出浏览器并没有将URL域名转发为www.apple.com ,可见在新版本中已修复该漏洞。

      Google已经在Chrome Canary 59中修复了这一漏洞,而且会在本月晚些时候发布Chrome Stable 58时,给出永久的修复方案。

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

Punycode的攻击方式存在两个明显的优势,导致常被攻击者选取用来攻击:

  1. Masquarading:从肉眼上很难区分正常域名和punycode伪装的域名,进行网络钓鱼的成功率很高。

  2. Evasion:从安全防护的角度而言,通常会因为避免大范围误报而把含关键词的域名列为白名单,所以可以有效的绕过安全防护产品的威胁情报检测等功能。

0x04 用户如何保护自己呢?

  • 用户在点击任何通过短信或IM应用程序共享的链接之前应保持警惕,即使它们来自于一位可信的联系人。IDN格式显示由浏览器设计控制,最终用户在控制如何显示URL有局限性。主要和最有效的方法是利用密码管理器在输入密码之前检查URL,这可有效降低用户向同形异义网址钓鱼网站输入凭证的机会。辅助检查将有效检测URL以查看是否有任何明显的字符切换。
  • 低版本的用户禁用浏览器的punycode支持
  • 其它浏览器貌似旧版本也有,感兴趣的可自行搜索。

 

参考链接:

https://mp.weixin.qq.com/s/yaN1WkAPRaYlLuekvo8zHg

https://www.anquanke.com/post/id/189066#h2-1

https://www.anquanke.com/post/id/147104

https://prsdigg.com/articles/8ed62523c167e2f3df779242e486d58089e87e381c3d40d09f14e4df0cdc1385

 


虽然我们生活在阴沟里,但依然有人仰望星空!


 

你可能感兴趣的:(APT杂项篇,网络钓鱼,Punycode,钓鱼攻击)