更新(04/12/2017):inria有一个指纹浏览器扩展的工具并检测其他浏览器泄漏。

更新(03/17/2017):微软修补了CVE-2017-0022,报道通过趋势科技。

更新(10/11/2016):微软修补了另一个指纹普夫。我们以前提到的“未被淘汰”,称为CVE-2016-3298。现在每个指纹识别尝试返回成功(onreadystatechange./onload无论如何,即使资源文件实际上并没有存在。

本质上,补丁确保内容来自资源而不是res: / / ieframe.dll不是被加载,而是默认关于:空白设置为位置。加载res: / / ieframe.dll / 16/1在iFrame中加载资源,但是尝试同样的事情,例如,res: / / mshtml.dll / 16/1失败和一个关于:空白加载。

修补信息漏洞泄露错误仍然是一个正在进行的问题。实际上,固定后只有几个小时通过Windows更新推动,曼努埃尔卡尔罗发现旁路:

更新:09/19/2016

曼努埃尔卡尔罗已经绕过CVE-2016-3351的补丁。看看他的帖子所有细节。正如我们在博客结束的结论中所提到的那样,“信息披露错误似乎在被修补后迅速徘徊和恢复”。

更新:09/14/2016

后,研究和信息披露通过Proofpoint和TrendMicro,微软正式宣布修补了另一个信息披露错误(CVE-2016-3351)称为影响Internet Explorer和Edge的“MIME类型检查”。我们已将其添加到下面帖子中的列表中。

笔记res.IE/Edge中的缺陷仍然活跃且未修补(由于曼努埃尔卡尔罗检查)。

- - - - - - - - - - - -

恶意软件作者将利用他们可以以完全隐身模式保持其运营的每个工具和技巧。指纹识别为他们提供了这种额外的边缘,以隐藏安全研究人员,并跑得几乎完全未被发现的大型活动。为了简化描述它,指纹识别在浏览器中使用信息披露缺陷,允许攻击者读取用户的文件系统并查找预定义名称。

关于指纹识别的成功有很多例子;我们在2016年3月的研究白皮书中提到了一些,操作指纹识别,但这只是冰山一角。最近,Proofpoint的研究人员发现了一个庞大的行动正如大家所知道的那样这种情况持续了至少一年甚至更长时间,导致了大量恶意软件感染。它严重依赖于指纹识别来小心地瞄准真正的用户,运行真正的OEM电脑。

Encoded_fingerrinting.

图1:恶意广告活动中使用的指纹,隐藏为GIF图像

当然,这是防御方在面对日益复杂的网络攻击时要吸取的教训。与此同时,我们可以很容易地从坏人的工具中移除一个强大的武器,这将导致更快速地识别他们的活动,至少直到他们想出另一个诡计。

此外,指纹识别还涉及隐私问题,因为指纹识别可以根据用户机器上的程序列表来对用户进行配置。我们可以想象,A公司的市场营销人员会有兴趣知道访问他们网站的访问者是否在使用B公司的产品。

诺顿

图2:直接从浏览器检查是否安装了诺顿防病毒

用一行代码来完成这一点是微不足道的(目前还没有修补,请继续阅读更多细节),尽管它肯定会让人对它是如何完成的感到惊讶。不那么谨慎的行为者可能对监视相关人员感兴趣,并检查他们是否在运行特定的工具,如vpn或加密软件。

关于一些麻烦的协议的一些历史

滥用Internet Explorer协议允许恶意软件作者运行恶意代码或获取有关受害者的信息。在这里,我们审查了一些过去和目前的技术,包括目前未被捕获并用于利用套件和恶性攻击的技术。

文件://协议

如果我们回到过去,在XP的Service Pack 2出现之前,本地机器区域(LMZ)允许您通过另一个协议运行二进制文件,而不受任何限制文件://协议

IE6ALERT.

图3:Microsoft修复了允许在IE6及更早版本中运行二进制文件的漏洞。

文件://协议实际上是在本地机器区域中运行的,具有完全权限。从你的邪恶网页,你可以做:

< iframe的src = " file: / / c: /下载/ malicious.html”> < / iframe >

以及实例化WScript之后。Shell中,您可以执行完整的远程代码执行。

XMLDOM LoadXML(CVE-2013-7331)

早在2013年,一位研究人员就揭示了这种方法IE中的Microsoft XMLDOM可以在错误消息中泄露本地驱动器/网络的信息 - XXE.这种技术是/在野外使用通过各种开发工具以及一些恶意广告活动。对于指纹而言,XMLDOM技术是最强大的,因为它允许检查任何类型的文件(不仅仅是二进制文件)。

Microsoft修复了XMLDOM检查的问题。请参阅推文和以下讨论在这里

概念代码的证明:http://pastebin.com/raw/Femy8HtG

Onload res: / / cve - 2015 - 2413

res://是一个运行在Internet Zone(甚至是本地文件)的内部IE协议,允许网页从本地文件加载资源(从资源部分)。与此同时,IE认为许多url是“特殊的”,它允许它们做一些事情,比如打开互联网连接对话框(以及更多)。

Microsoft允许通过普通HTTP网页加载RES:// URL,因为IE / EDGE需要它们的浏览器功能的各个部分,如默认错误或信息页面。

它被添加到EK级,作为对其,但现在也被修补。RES技术与XMLDOM IN不一样,因为它只能检查二进制文件,因为它需要其资源部分。

解码

图4:使用onload来检测资源是否被加载的脚本创建的图像

MIME类型检查(CVE-2016-3351)

作为描述根据Proofpoint的详细说明,这种MIME类型检查已经使用了很长时间,事实上早在2014年1月就开始使用了。这个漏洞的目的是发现某些文件关联是否与特定的安全/开发程序(如Wireshark, Fiddler, Python等),但也与常规软件(Skype, VLC等)相关联。通过做出这种判断,攻击者可以决定是否继续攻击。这是一种剔除安全研究人员并以真人为目标的好方法。这个错误是修补了2016年9月13日,微软发布。

我们“意外”在2014年11月偶然发现了这项技术邮政这引发了一系列的连锁反应:

代码

我们在2015年中间再次使用时,我们赶上了它正如大家所知道的那样大的运动.这次,代码隐藏在假GIF内部。除了检查MIME类型外,它还使用XMLDOM漏洞。

gif

曼努埃尔卡尔罗已经写了一段简单的代码如果你有兴趣检查这个bug。

Iframe res://变量(应用补丁的
更新(10/11/2016):打补丁的由Microsoft为CVE-2016-3298。

影响软件

操作系统:Windows 7、Windows 10(均已打过完整补丁)。
浏览器:Internet Explorer 10、11。Microsoft Edge(14.14393.0.0)和Microsoft EdgeHTML(14.14393)。

笔记对于Microsoft Edge,指纹识别将只在Windows和程序文件文件夹中工作,因为AppContainer不允许对系统的其他部分进行读取访问。

图片

图5:从一个网站上确定calc.exe在%system32%下的存在。

电流在开发套件中使用:

我们研究了Neutrino EK过滤安全研究人员的方式,它使用相同的Flash漏洞来利用和感染一个系统(Neutrino EK:在闪光灯中指纹),以及它的一项门前检查(中微子EK:更多的Flash花招).

iframes

图6:用于本地文件的IFrame检查

使用Flash中的ActionScript, Neutrino EK可以检查这些可加载资源,并通过JavaScript和DOM事件猜测这些文件是否存在。

免责声明:我们不会公开我们的概念证明,因为微软目前正在开发一个补丁。虽然它确实是在野外,但我们编写的PoC来自于中微子的基于flash的指纹,更容易复制/粘贴,以便其他坏人重复使用。如果您感兴趣,请私下联系我们。

缓解措施

对滥用此问题的良好缓解将允许IE加载仅由IE等MSHTML.dll,ieframe.dll等使用的资源文件。所有其他人都应该被封锁!

换句话说,应该允许允许iExplore.exe(或使用WebBrowser控件的任何其他二进制文件)仅加载WebBrowser引擎真正需要的资源,而且不再是。RES:协议的唯一合法用途是内部页面/对话框,也许是旧工具栏。Devtools(F12)也使用它。

IDAview

图7:一些RES://在Microsoft Edge中调用

一些旧的工具栏依赖于res://可能会停止工作,但他们可以白发别的人,让开发人员更新他们的代码。

结论

信息披露错误似乎在修补后迅速徘徊和resurface。这可能是由于由于兼容性风险而无法从根本上解决,因此核心问题可能是由于进行任何剧烈变化。

虽然与远程代码执行相比,这些缺陷并不严重,但它们可以帮助坏人将这些rce保存为真正的受害者,并将它们隐藏在安全社区之外更长的时间。

致谢

我想对你说声非常感谢曼努埃尔卡尔罗感谢您激励我深入研究这个问题。多亏了埃里克•劳伦斯在边缘和受影响的路径中进行额外检查。