【技术分享】基于浏览器的指纹识别技术(含缓解方案)

转载 2016年08月31日 14:07:08

http://p3.qhimg.com/t018b30cb929cac1684.png

写在前面的话



恶意软件的开发者们通常都会利用各种各样的工具和技巧来隐藏自己的攻击行为。在这种情况下,指纹识别技术又给这些犯罪分子们提供了一个非常好的“保护伞”。在指纹识别技术的帮助下,网络犯罪分子们不仅可以躲避安全研究专家的检测,而且在进行大规模攻击活动的时候也不容易被觉察到。为了能够让大家更好地理解本篇文章的主人公-指纹识别技术,我们首先用下面这句话来简单描述一下:指纹识别技术利用了现代浏览器中的一个信息泄漏漏洞,该漏洞允许攻击者访问目标用户主机的文件系统,并且还可以从中查找出预定义的字段名称。


指纹识别技术与黑客能擦出怎样的火花?



想必大家也已经在网络上看到过不少指纹识别技术成功应用的例子了,而且我们还在2016年3月份的安全研究白皮书中介绍了其中的某些案例,虽然这份报告内容较多,但这些内容只是冰山一角。就在不久之前,Proofpoint公司的安全研究专家们发现了一个大规模恶意广告活动,而这一恶意活动已经持续了至少一年的时间。这也就意味着,很可能已经有大量的用户感染了与此次恶意广告活动有关的恶意软件。在指纹识别技术的帮助下,该恶意广告活动可以在不被他人发现的情况下针对正版OEM计算机发动攻击。

http://p7.qhimg.com/t01eeff3c4871fcddb5.png

图片1:恶意广告活动中所使用的指纹识别技术,指纹识别码隐藏于GIF图片之中

从防御端的角度出发,我们发表这篇文章的目的就是为了帮助大家更好地保护自己。更重要的一点就是,现在的网络攻击技术也在变得越来越复杂了,我们每天所要面对的都是新一轮的安全挑战。如果我们不能尽可能地了解攻击者所用的技术,那么我们怎么可能在这场没有硝烟的战争中取得胜利呢?与此同时,在拥有了一定程度的知识积累后,我们也可以轻易地将某个强大的工具从攻击者的“武器库”名单中除去,这样我们就可以更加快速地检测并识别他们的攻击活动了。当然了,俗话说得好,“道高一尺,魔高一丈”,网络犯罪分子总是能够设计出新的攻击技术来搞破坏。

值得注意的是,我们还需要考虑隐私方面的问题,因为指纹识别技术可以通过目标主机中的程序列表来识别用户信息。我们可以设想这样一种场景:A公司的市场营销人员肯定会非常想知道访问他们网站的客户是否使用了B公司的产品。具体如下图所示:

http://p3.qhimg.com/t01b727cd60cad69704.png

图片2:直接通过浏览器来检测目标系统中是否安装了诺顿反病毒软件

实际上,虽然图片2所示的功能只用一行代码就可以实现,但正是因为代码量少,所以才显得它是如此的神奇。很多恶意攻击者可能会为了金钱利益来对某一目标用户的网络行为进行非法监视,而此时他们就可以利用这项技术来了解目标主机中是否运行了类似VPN或者加密软件这样的特定软件了。


回顾一下那些令人头疼的网络协议



通过利用IE浏览器协议中的漏洞,攻击者不仅可以在目标主机中运行恶意代码,而且还可以获取目标主机中的数据信息。在这一章节中,我们要回顾一下相关的技术,其中包括目前尚未修复的漏洞,以及漏洞利用工具和恶意广告攻击过程中所利用的漏洞。

“File:// protocol”协议

先将我们的视角切换到当年XP操作系统SP2版本刚刚面世的时候,当时XP平台下的本机域(LMZ)可以允许你通过利用其他的协议(file:// protocol)在不受任何限制的情况下运行任意代码。

http://p2.qhimg.com/t019c1e66769446cee1.png

图片3:该漏洞允许攻击者利用IE6以及IE6之前的浏览器版本来运行任意代码,微软公司目前已经修复了这一漏洞

实际上,“file:// protocol”协议运行在本机域(LMZ)中,该协议拥有完整的主机访问权限,通过下面这段网页代码并实例化一个WScript.Shell,你就可以在目标主机中执行远程代码了。

<iframe src="file://c:/downloads/malicious.html"></iframe>

“res://”协议(漏洞CVE-2015-2413)

“res://”协议是IE浏览器的一个内部协议,该协议允许网页直接加载本地文件资源。与此同时,IE浏览器还可以将“res://URLs”这样的资源地址视为特殊的资源引用。

微软公司允许普通的HTTP网页使用“res://URLs”来加载资源,因为IE或Edge浏览器中的部分功能需要使用这份协议。

http://p6.qhimg.com/t019cb4f6e894cc334e.png

图片4:检测脚本所创建的图片文件是否加载成功

Iframe中的“res://”变种(此漏洞未修复)

受影响的操作系统:Windows 7和Windows 10

浏览器:Internet Explorer 10、11;Microsoft Edge (38.14393.0.0);Microsoft EdgeHTML (14.14393)。

请注意:对Microsoft Edge浏览器而言,指纹识别技术只能在“Windows”和
“Program Files”这两个文件夹下起作用,因为AppContainer不允许程序访问系统的其他部分。

http://p6.qhimg.com/t01344c8ceff7a43e01.png

图片5:通过网页来确定主机“system32”文件夹下是否存在calc.exe(计算器)


漏洞利用工具是如何使用该技术的?



我们对Neutrino EK过滤器的运行机制进行了研究,具体内容请查看这篇文章:《Neutrino EK:Flash中的指纹识别技术

http://p5.qhimg.com/t01f226352216f9b592.png

图片6:通过iframe来检测本地文件


广大用户们应该怎么做?



在这里,我们给大家提供一个比较好的缓解方案。为了解决目前存在的问题,用户应该只允许IE浏览器去加载类似mshtml.dll和ieframe.dll这样的只有IE浏览器会使用的资源文件,所有调用其他资源文件的操作行为都应该被阻止。

换句话说,我们应该只允许iexplore.exe(以及其他需要使用Web浏览器进行操作的程序)加载Web浏览器引擎真正需要使用的那些资源文件。除了这些文件之外,其余的任何文件都不应该允许加载。在某些IE内部页面/对话框,或者某些旧版本的浏览器工具栏中使用res资源调用协议才是该协议合理的使用方式。除此之外,DevTools开发者工具(F12)同样需要使用这个协议。

http://p5.qhimg.com/t01e464d2aa9fc3f34f.png

图片7:Microsoft Edge浏览器中的资源调用(res://)

某些需要使用“res://”协议的旧版本浏览器工具栏可能会因此而无法正常工作,但是我们可以将其需要使用的DLL文件加入白名单,这样就可以暂时让其正常工作了。至于如何彻底修复这一问题,就交给各位程序员去解决吧。


总结



虽然微软公司此前已经表示,这些信息泄漏漏洞已经被修复了。但是就目前的情况来看,这些漏洞似乎并没有彻底被修复。之所以会出现这样的情况,很有可能是由于浏览器内核中存在的问题没有得到根本性的解决,因为一旦对内核进行了大规模改动,那么将有可能引起各种兼容性方面的问题。

致谢



在这里,我要特别感谢一下Manuel Caballero(@magicmac2000),感谢他一直鼓励我深入去研究这篇文章中所提到的安全问题。除此之外,我还要感谢Eric Lawrence(@ericlaw)为这篇文章所提供的帮助和贡献。

参考资料

1.     2016年3月份Malwarebytes发布的安全白皮书《Operation Fingerprint》:

https://malwarebytes.app.box.com/v/operation-fingerprint

2.     Proofpoint发现的AdGholas恶意广告活动:

https://www.proofpoint.com/us/threat-insight/post/massive-adgholas-malvertising-campaigns-use-steganography-and-file-whitelisting-to-hide-in-plain-sight

3.     微软公司关于“res://”资源协议的介绍:

https://msdn.microsoft.com/en-us/library/aa767740(v=vs.85).aspx

4.     漏洞CVE-2013-7331的PoC代码:

http://pastebin.com/raw/Femy8HtG)

5.     《Neutrino EK:Flash中的指纹识别技术》:

https://blog.malwarebytes.com/cybercrime/exploits/2016/06/neutrino-ek-fingerprinting-in-a-flash/

本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.com/learning/detail/2987.html

相关文章推荐

通过使用evercookie技术实现设备指纹

设备指纹是互联网中经常使用的一种技术,通过设备指纹技术,为每个设备确定一个唯一的设备ID。由于IP地址个数的限制,内网中往往使用NAT技术,将内网中的上万个IP映射成几个外网IP对外访问。这样内网用户...

基于HTML Canvas实现“指纹识别”技术

作者:zhanhailiang 日期:2015-01-31 说明 所谓指纹识别是指为每个设备标识唯一标识符(以下简称UUID)。诸如移动原生的APP都可以通过调用相关设备API来获取相应的UUI...

远程OS探测中的网络协议栈指纹识别技术

摘要     远程探测计算机系统的OS(操作系统)类型、版本号等信息,是黑客入侵行为的重要步骤,也是网络安全中的一种重要的技术。在探测技术中,有一类是通过网络协议栈指纹来进行的。协议栈指纹是指不同操...

java指纹识别+谷歌图片识别技术

原帖网址: http://topic.csdn.net/u/20120417/15/edbf86f8-cfec-45c3-93e1-67bd555c684a.html java指纹识别...
  • lsccsl
  • lsccsl
  • 2012-04-20 14:25
  • 2392

java指纹识别+谷歌图片识别技术

分类: java 算法 2012-04-17 13:38 7006人阅读 评论(66) 收藏 举报 java指纹识别+谷歌图片识别技术 前阵子在阮一峰的博客上看到了这篇《相...

java指纹识别+谷歌图片识别技术

前阵子在阮一峰的博客上看到了这篇《相似图片搜索原理》博客,就有一种冲动要将这些原理实现出来了。 写了图片识别的一个demo 提供源码下载,免费下载地址:http://downl...

指纹识别技术设计的注意事项

指纹识别用于各种应用,包括电子门禁系统、智能卡、车辆点火开关控制系统、带指纹控制存取功能的 USB 记忆棒及许多其它应用。指纹扫描仪中的数字信号处理元件可执行滤波、转换、特征提取、匹配运算及其它算法等...

java指纹识别+谷歌图片识别技术_源代码

主类: import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; publ...
  • ylchou
  • ylchou
  • 2012-04-20 01:00
  • 7844

java指纹识别+谷歌图片识别技术

转载自:http://blog.csdn.net/yjflinchong/article/details/7469213 java指纹识别+谷歌图片识别技术 前阵子在阮一峰的博客上看到了这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)