Top
首页 > 网络和信息安全 > 新闻快递 > 正文

检测本地文件躲避安全分析

发布时间:2016-10-25 13:04        来源:toutiao.com        作者:

前言

上个月,我们一直都在尝试弄清楚攻击者到底是如何通过检测目标系统中应用程序的相关MIME类型来对用户进行攻击的。如果目标计算机中安装了反病毒工具的话,恶意软件将拒绝下载恶意代码。这样一来,攻击者不仅可以保证恶意软件不会被检测工具所检测到,而且还可以在目标主机中潜伏很长的时间。当然了,所有的这一切都发生在浏览器中。虽然厂商及时修复了相关的漏洞,但我们现在仍然可以绕过补丁来实施攻击。我们可以做到的事情,攻击者当然也可以做到。

漏洞概述

今天我们要讲解的是另外一个指纹漏洞,这个漏洞将允许攻击者检测目标主机中是否存在某些类型的文件。根据Proofpoint公司的安全研究专家所透露的信息,这个漏洞是一个信息泄露漏洞,此前有很多不同的恶意广告活动和漏洞利用工具都利用了这个漏洞来实施攻击。目前,微软公司已经成功修复了这个漏洞。

在2015年10月至12月期间,Proofpoint公司的安全研究专家发现了至少两个信息泄露漏洞(CVE-2016-3351和CVE-2016-3298),并且已经将漏洞细节提交给了微软公司。微软于2016年9月份修复了漏洞CVE-2016-3351,并且在2016年10月份修复了漏洞CVE-2016-3298。但不幸的是,黑客在不到一天的时间里就成功绕过了这两个补丁。

利用漏洞CVE-2016-3298

我们可以加载目标文件的内部资源,并通过检查类似onload/onreadystate/onerror这样的事件是否发生来检测主机中是否存在某些目标文件(exe、dll和cpl等等),这种方法也是目前攻击者最为常用的方法。实际上,IE浏览器会使用内部资源来加载信息页面、错误信息、以及某些插件图标。虽然这些资源嵌入在二进制文件之中,但是我们也可以单独加载这些资源。

最常见的一个例子就是当我们尝试在IE浏览器中加载无效的URL资源时,IE浏览器会显示一个错误页面。比如说,当我们在浏览器地址栏中输入网址“http://invalidsite”之后,IE浏览器就会将如下图所示的页面显示给我们:

我们看得懂这个URL地址,但是浏览器不一定看得懂,而这个页面很明显跟我们输入的网址没有任何关系。接下来,我们可以通过检查该页面的属性来找出该页面真正的URL地址:在页面空白处点击鼠标右键,然后在弹出的菜单中选择“页面属性”,浏览器便会将关于该页面的信息显示出来:

加载资源

正如我们所看到的那样,该页面的内容来自于“res://ieframe.dll/dnserror.htm#http://invalidsite/”,其中“res:”表示的是资源,而这是IE浏览器用来从二进制文件中加载内部资源所用的方法。默认情况下,浏览器会假设资源文件存在于目录“windows/system32”之中,但是我们也可以修改这个路径。比如说,如果我们安装了Fiddler,我们就可以轻易地找出其中的一个有效资源,并将其提供给IE浏览器。接下来,我们就可以通过检测readystate事件来查看资源是否加载成功了。

如果你使用的是Resource Hacker这样的免费工具,那么你就可以直接读取到资源的名称和内容,并将它们以图片或者HTML文件的形式进行加载。为了进行简单的演示,我们在Resource Hacker中打开并查看dnserror.htm的内容,具体如下图所示:

实际上,我们根本不需要通过Resource Hacker来查找有效资源,因为二进制文件中的默认资源都有固定不变的值。比如说,所有二进制文件的“文件信息”都可以通过资源“/16/1(16 == RT_VERSION)”来查找。需要注意的是,我们完全不必检索每一个需要进行测试的文件,因为我们可以直接通过加载默认资源来实现我们的目的。比如说,我们可以向Fiddler提供资源的默认信息,而下面这段指令将会触发一个readystatechange事件。

安装补丁之前的PoC

为了利用这个漏洞,我们应该在一个iFrame中加载资源,并且记录下onreadystate事件被触发的次数。如果该事件被触发了一次,则说明目标文件存在;如果被触发了两次,则说明该文件不存在。

关键代码如下所示,如果你愿意的话,你也可以直接下载一个可用的PoC[下载地址-密码:infected]。

 

专题访谈

合作站点
stat