2015微软Windows漏洞报告

标签:安全技术产品模式

访客:14743  发表于:2016-02-17 10:26:42

本文主要针对2015年微软、谷歌等公司相应产品新的安全防护机制或安全功能进行分析。

实际上在前年,即2014年的报告《Windows exploitation in 2014》中,我们也提到了一个当前网络攻击的主要趋势—0day攻击,其中较为全面地分析了攻击者使用的相关入侵技术,像隐蔽强制下载攻击(或称偷渡式下载攻击,drive-by downloads)和本地权限提升(LPE)攻击。

在这个新版本的报告中,将不会再重复先前所描述的。更多地是,我们将集中在2015年新的安全防护技术:如谷歌Chrome和微软Edge的新的安全功能, Hacking Team exp 相关信息以及微软的漏洞应急增强工具包EMET新的安全功能。

统计信息

从下表中,我们可以看到在过去的12个月里,IE 和Edge浏览器被修复加固的漏洞数量。其中标记为红色的漏洞,是已知在黑市中流通EXP的漏洞。


/uploadImages/20160203223752182.jpg

目前,微软已经停止了对IE6/IE7/IE8/IE9/IE10的支持。而这会促使用户转向使用安全性会更高的IE11。当然,微软还是支持其他Windows系统中的早期IE版本(例如Windows Vista SP2的 IE9或者Windows Server 2012 的IE10)。


/uploadImages/20160203223753329.jpg

在上图中,我们看到在2015年微软修复了许多关于各种Windows 用户模式组件 (Windows UMC)的漏洞。这些漏洞能为攻击者所利用,如通过远程代码执行漏洞执行恶意代码(RCE),利用本地权限提升来获取系统最高权限等等。第二种漏洞一般会结合远程代码执行漏洞来获取系统的所有访问权限。

而对于Windows UMC,从下图可以看到,实际上在2015年修复的Windows UMC漏洞的数量约为2014年的4倍。其中橙色代表2015年的数据,蓝色代表2014年的数据。


/uploadImages/20160203223755265.jpg

在上图中,我们了解了用户模式下的漏洞情况,那么在内核模式中情况又是怎样呢?内核模式(KM)驱动和win32k(Windows GUI 的内核组件)经常被攻击者利用其存在的漏洞来获取系统特权账户的权限。如果这些组件能进行远程代码执行,那么将是一件很为危险的事情。因为攻击者可以在内核模式下直接运行恶意代码,而接下来攻击者将可以获得计算机上所有资源以及部分主要用于系统的内存的控制权。下图是在内核及.net framework的漏洞情况。


/uploadImages/20160203223756484.jpg

而从下表中,我们可以看到2015年中Windows 组件补丁最多的为IE 和 用户模式组件(UMC) 。


/uploadImages/20160203223758646.jpg

为了分析Windows产品的薄弱点,我们再针对UMC进一步看看具体的漏洞情况,下表中我们可以了解到在针对各组件的RCE 以及LPE漏洞补丁中,Windows UMC中加固修复的漏洞补丁是最多的。


/uploadImages/20160203223759998.jpg

漏洞

在2014年中我们主要关注两种攻击类型,分别为隐蔽强制下载攻击(或称偷渡式下载攻击,drive-by downloads)以及本地权限提升(LPE)。而如本文开篇所言,第二种攻击类型能嵌入恶意代码,实现系统提权,同样也被用于远程代码执行漏洞利用,从而实现对浏览器沙盒的绕过,并运行payload或者直接在内核模式下运行恶意代码。

下面的表显示了被ESET 检测到的,在黑市中流通着EXP的漏洞。


/uploadImages/20160203223800529.jpg

其中,在2015年中令人印象深刻的LPE漏洞之一是CVE-2015-1769,关于挂载管理子系统的提权漏洞。该漏洞在微软发布的补丁MS15-085中被修复。其具体详情为在 Windows 挂载管理子系统发现一个提权漏洞,其中对其客户端和服务端均有影响。它允许攻击者利用可移动的 USB驱动的系统权限,通过根文件夹下特别定义的符号链接文件,来运行任意代码。对于这个漏洞,我们也称之为类蠕虫漏洞(Stuxnet-like),但实际上该漏洞比原始的蠕虫漏洞的危险性要小一点,原始蠕虫漏洞已经在补丁MS10-046中有修复。因为CVE-2015-1769并不存在于 Windows Shell 中,而仅仅只是在USB插入到计算机接口时才会被触发。换句话说,就是攻击者需要物理访问到PC机才能实施攻击。而MS15-085升级补丁修复了mountmgr.sys驱动以及两个内核文件 (ntdll.dll 以及ntoskrnl.exe)中存在的漏洞。

另外一个漏洞为CVE-2015-1635。该漏洞存在于Windows 7及之后系统版本中的系统驱动文件http.sys,其允许攻击者以本地系统权限远程执行恶意代码,并可用于实施DoS攻击或者攻击目标机器,使之蓝屏死机。该漏洞是与Windows Server相关,在进行http 会话中,它能够被轻易利用,对HTTP 头部参数设置一个特定的值,从而触发整数溢出漏洞。该漏洞exp具体如下:

GET /%7Bwelcome.png HTTP/1.1 User-Agent: Wget/1.13.4 (linux-gnu) Accept: */*

Host: [server-ip]

Connection: Keep-Alive

Range: bytes=18-18446744073709551615

Hacking Team

去年发生的Hacking Team大量代码和工具泄露事件,对于去年及以后的安全形势的影响是重大的。其实Hacking Team的入侵攻击早在几年前(甚至更早)就已经开始进行了。从法律和道德的角度来看,关于Hacking Team出售网络攻击工具給其他国家的这一情况,实际上也违背了瓦森纳协议中的相关要求。因为泄露的文件显示,HT对外出售的国家中,包含了瓦森纳协议中所禁止的国家。

FreeBuf 百科

《瓦森纳协定》又称瓦森纳安排机制,全称为《关于常规武器和两用物品及技术出口控制的瓦森纳安排》 (The Wassenaar Arrangement on Export Controls for Conventional Arms and Dual-Use Good and Technologies),目前共有包括美国、日本、英国、俄罗斯等40个成员国。“瓦森纳安排”规定成员国自行决定是否发放敏感产品和技术的出口许可证,并在自愿基础上向“安排”其他成员国通报有关信息。其根本目的在于通过成员国间的信息情报制度,提高常规武器和双用途物品及技术转让的透明度,以达到时常规武器和双用途物品及相关技术转让的监督和控制。

其泄露的关于Windows, Flash Player 以及 Internet Explorer 的0day exp 也被传播开来。

作为HT的客户,可以通过其提供的工具,对目标实施各种潜在的攻击。比如drive-by downloads等。对于drive-by downloads漏洞的EXP是从泄露的源码中发现的,其关于Flash Player 的exp可针对多种浏览器进行攻击,包括像IE 、Edge、Chrome、Firefox以及Opera等。而且,其中一些exp不仅仅能作用于Windows系统,其对Linux以及AppleOSX也是支持的。以下是目前监测到的Hacking Team泄露的工具中针对的相应漏洞统计。


/uploadImages/20160203223800529.jpg

Hacking Team为他的用户提供支持所有主要的桌面和手机终端平台,包括像Windows, Linux,Android, OS X, and iOS等系统部署监控工具(后门)的能力。在下图中,我们对监测到的HT的后门程序进行了统计,具体情况如下,


/uploadImages/20160203223800918.jpg

Google Chrome

在过去的一年,谷歌也推出了若干有用的漏洞利用缓解方法。首先,我们可以认为 LPE exp的防护方法是基于关闭 win32k.sys驱动的使用, 而我们也知道其实win32k.sys跟Windows其他的内核漏洞一样,也是存在较多的漏洞。该防护限制的方法称为“win32k 进程锁定”,其被应用在沙盒标签中,也被称为“进程缓冲”。这个功能用户可以在Windows 8及之后的系统版本中,SetProcessMitigationPolicy体验下。该安全规则的主要目的是减少攻击者绕过Chrome沙盒并以最高权限运行恶意代码的概率。

对于Chrome 沙盒,根据我们之前的研究了解:其主要依赖于Windows 的安全机制,如低完整性级别,SID (安全标识符)拒绝,作业对象权限限制,沙盒中运行的进程令牌的权限移除等安全机制。但是以上的这些规则都是针对RCE漏洞以及依赖于用户模式代码漏洞的利用的。攻击者往往意图通过一次全面的渗透,利用 RCE-exp结合LPE- exp(通常被用于针对win32k.sys驱动文件),来达到在内核模式中运行定义的代码,以便获取最高的系统权限。

FreeBuf 百科

这里可以稍微关注下低完整性级别的相关安全机制,比如代码试图访问一个内核对象时,系统会将主调进程的完整性级别与内核对象的完整性级别进行比较。如果后者高于前者,就拒绝修改和删除操作。这个比较是在检查ACL之前就完成的。所以,即便进程拥有访问资源的权限,但由于它运行时使用的完整性级别低于资源所要求的完整性级别,所以仍会被拒绝访问。假如一个应用程序要运行从网上下载的代码或脚本,这个设计就尤其重要。在Windows Vista上运行的Internet Explorer 7正是利用了这个机制,以“低”完整性级别来运行。这样一来,下载的代码就不能更改其他任何应用程序的状态,因为那些应用程序的进程默认是以“中”完整性级别来运行的。

其实从 Chrome 47版本开始,所有的浏览器的用户都能启用一项功能“PPAPI win32k 锁定”,用户可以在chrome://flags中找到该功能,并可以尝试启用win32k 锁定模式 ,其对所有的渲染器进程或者对 Flash或者PDF插件进程等都有安全防护作用。

Chrome 的另外一种漏洞防护机制(主要针对Flash Player),称为“. 向量漏洞固化”(vector. exploit hardening)。该安全机制引入了特殊的检查方法以及一种新的堆分配方法,来保护Flash Player 进程 ,降低其遭受如缓冲区溢出等漏洞利用攻击等风险。

而Chrome M48 beta版中,Google开发者针对渲染器进程引入应用容器沙盒。这个安全机制,有点类似于IE11沙盒的增强保护模式(Enhanced Protected Mode, EPM )。在Chrome M48 beta版中默认该功能是关闭的:如果要启用该功能,用户需要在chrome://flags中的“启用应用容器锁定”进行设置。


/uploadImages/20160203223801954.jpg

Edge

Edge 是微软专门为Windows 10所开发的浏览器。与IE11相比,其包含了丰富的安全选项,并且这些安全选项默认为开启的。Edge标签在应用程序容器中默认是以64位进程在运行的。从其机制来看,Edge是一个全新的浏览器,它并不兼容旧的附加组件和插件。而且,它也不支持以往浏览器版本的技术,如 ActiveX, BHO 以及VBScript等。这些技术(像VBScript 引擎vbscript.dll文件中所存在的漏洞)常为恶意程序和漏洞利用工具所利用,经由浏览器渗透进本地系统。

伴随着Windows 10第一次大的升级,微软主要为Edge增添了新的安全机制,一种保护浏览器免遭二进制文件注入的功能机制。比如,该库文件需要获取一个微软数字证书签名或者被批准,同时还需带有微软Windows硬件质量实验室的数字签名证书,才能成功加载一个dll文件进入Edge浏览器。在此安全机制下,其他准备加载到浏览器进程的库文件也将会被暂时锁定。但实际上为了实现3D加速,其中仍然允许视频驱动的同步加载,而这在将来也可能成为攻击者进入系统的利用路径。

EMET

EMET产品的重要作用在于预防各类未知的零日漏洞,也被微软视为Win7、Win8、Win8.1系统最后的安全防线。EMET工具也一直用于保护Windows系统最核心、重要的安全区域,用户可以定义安全规则或者使用EMET默认规则,增强当前系统的安全系数。应该说微软逐年都在提高其漏洞应急增强工具包(EMET)。该工具涵盖了范围较广的RCE漏洞利用及技术。最新的EMET 5.5beta版本引入了新的安全机制,主要为用户在LPE 漏洞的利用方面(主要通过利用特别定义的字符文件对win32k.sys存在的漏洞进行利用)提供防护。该功能称为“阻断不受信任的字体”(Block Untrusted Fonts),目前 Windows 10 的用户可以使用该功能。


/uploadImages/20160203223802243.jpg

EMET 5.5 beta版本允许用户启用特殊缓冲选项,该选项主要应用于在漏洞被触发时,LPE exp的计数(几乎都是存在于win32k.sys)。微软定义的这些字体文件安装在%windir% /fonts 目录下。而“阻断不受信任的字体”(Block Untrusted Fonts)功能启用如下图,


/uploadImages/20160203223803460.jpg

结语

在本报告中,我们也大概了解到了关于Web 浏览器的各种安全机制包括像微软EMET的使用情况。我们也对微软产品的漏洞修复情况作了统计,而对于用户来说,Windows 用户模式组件存在的漏洞威胁程度目前来看是最高的。我们后续也会持续关注windows的具体漏洞情况。而对于windows用户来说,在日常的工作生活过程中,也应尽量利用已有的安全机制,来提高本地环境的安全性。


来源网络

2015 微软Windows漏洞报告

评论(0)

您可以在评论框内@您的好友一起参与讨论!

<--script type="text/javascript">BAIDU_CLB_fillSlot("927898");