Win64bit提权0day漏洞(CVE-2014-4113)只是内核模式漏洞的开始

Win64bit提权0day漏洞(CVE-2014-4113)漏洞

攻击者经常利用已知的权限提升漏洞获得管理员级别的访问,而黑客直接利用0day漏洞进行攻击是非常罕见的。近日CrowdStrike团队(CrowdStrike Falcon Host Endpoint Threat Detection & Response)监测到了Win64bit2008 R2计算机上存在可疑的活动。CrowdStrike认为:这些计算机极有可能受到飓风熊猫(HURRICANE PANDA)的控制。详情点我

技术分析

Win32k.sys中负责窗口管理,以及任何GUI进程/线程将使用它。与其相关的用户模式模块user32.dll和GDI32.DLL。

由于与用户模式应用程序的复杂相互作用,许多问题存在在Win32k.sys中。根本的问题是函数的返回值不正确验证。程序员往往忽略了这一点,但这样做,是一个严重的安全隐患。

在Win32k.sys中,有一个叫做函数xxxMNFindWindowFromPoint(),它返回win32k!tagWND的地址结构或错误代码-1,-5。

另一个功能xxxHandleMenuMessages()将调用它,并用它的返回值作为参数xxxSendMessage()。

下面是代码片段:

xxxHandleMenuMessages(){
tagWnd * PWND = xxxMNFindWindowFromPoint(...); 
... 
//没有检查返回值是不是一个有效的地址
xxxSendMessage(PWND,...);
}

如果该错误代码-1或-5用于xxxSendMessage()作为地址,这将导致一个错误,如蓝屏。

在用户模式下,目前不可利用。我们看看如何利用此漏洞在内核模式下运作。

下面是关于如何利用的关键步骤或说明:

1、准备好内存部分为空页,建立一个畸形的win32k!tagWND结构的映射页,使得它正确地验证在内核。
2、触发该bug,并返回值  xxxMNFindWindowFromPoint的(PWND)()  为  -5(0xfffffffb) 。因为所有的结构要被选中的字段都可以访问有合适的值,xxxSendMessage()将把-5作为一个有效的地址。然后,它会被调用,这是指向shellcode的函数指针。
3、在win32k回调win32k!tagWND.lpfnWndProc以内核模式执行,回调将覆盖EPROCESS.Token提升权限。
4、创建一个子进程,用系统分配的程序权限。

示例使用SetWindowsHookEx函数()来控制xxxMNFindWindowFromPoint() 返回-5:

1、创建一个窗口和2级的弹出式菜单。
2、hook窗口给WndProc调用。
3、跟踪弹出菜单中选择窗口,然后输入钩子回调。
4、在钩子回调,它改变了菜单的WndProc到另一个回调。
5、在菜单的回调,它会破坏菜单和返回-5(PUSH 0xfffffffb; POP EAX)
6、导致xxxMNFindWindowFromPoint()上被破坏的菜单回报-5

此外,样品的shellcode是简单和直接的,可以从下面的代码段可以看出。我们可以看到,它得到EPROCESS的系统进程(PID = 4) ,并复制其特权标识EPROCESS当前进程。

从分析中,我们可以看到,它是非常容易被利用的内核级漏。一些有效的保护用户模式,如DEP,很容易绕过内核模式攻击。

因为这是一个程序,而不是单纯的数据或脚本可以用来利用的漏洞。样本的代码基本为裸码,完全暴漏在外面。一旦这样的内核级利用方式被进行二次修改利用,完全可以破坏沙盒程序。甚至驱动出更多的内核级漏洞。

Windows 8和更高版本的风险较小,因为目前可用的攻击代码被挡在这些版本。这是因为在内核模式的用户模式的内存页被称为管理模式执行保护(SMEP),这将阻止访问一个新的安全功能(读/写/执行)。因此,进入空页面,shell代码不会导致代码执行,可能会导致死机。

FreeBuf小编补充文章参考信息:http://blog.trendmicro.com/trendlabs-security-intelligence/an-analysis-of-a-windows-kernel-mode-vulnerability-cve-2014-4113/

还有更厉害的版本

最早初期的这个样品应该是发现在2009年的12月。当时这个样品泛滥不开来,因为当时样品有些其他的限制。直到另外的两个样品是在2011年的6月发现,样品编译日期是2011年的3月,样品已经是达到现在的CVE-2014-4113的功能了。CVE-2014-4113这次的样品呢,和之前的这两个样品进行了对比,发现基本一致,只是清除了所有的使用消息。

本次漏洞的存在,绝非一年两年,根据多个样品比较,这个漏洞必定存在了最多五年,最短三年。而这期间都有某些黑客在利用这个漏洞。此次CVE-2014-4113的EXP,经过了至少三次的修改流传,直到当前披露的这一次。

坏消息是这个CVE-2014-4113已经出了补丁。

而好消息是,还有一个与这个不相上下的甚至说是更厉害的第四个版本,在某黑客手里握着。为什么这么断言呢?因为这个EXP并没有发挥到极致,还有一个版本应该是完全可以广泛发挥。

[本文作者 小雅(xiaoya),转载请注明来自FreeBuf.COM]

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2014-10-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

Python爬虫小白入门(一)

开篇语 本篇文章适用人群 >有一点点语法基础,至少知道Python这个东西,如果有其他方面语言的基础那也凑合 >会一点点Linux系统的操作,最好是ubunt...

533110
来自专栏FreeBuf

恶意软件Darkleech大肆感染Apache服务器

假设每台服务器十个站点的话,至少有20000个网站被感染,其中包括知名网站如《洛杉矶时报》。 Darkleech主要使用了Apache的模块注入iframe到受...

20960
来自专栏角落的白板报

【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

“ 工欲善其事,必先利其器。磨刀不误砍柴工!” 管理工具会VSTS。 代码管理会用GITHUB。 服务器会用Azure。 所有的东西都是利用现有服...

30190
来自专栏Golang语言社区

Go的单元测试技巧

本文为社区粉丝原创投稿,再次感谢作者DrmagicE的分享,欢迎大家在评论区留言和作者讨论,同时也欢迎大家踊跃投稿,分享您的golang语言学习经验!投稿邮箱地...

15030
来自专栏京东技术

多级缓存设计详解 | 给数据库减负,刻不容缓!

物流研发部架构师,GIS技术部负责人,2012年加入京东,多年一线团队大促备战经验,负责物流研发一些部门的架构工作,专注于低延迟系统设计与海量数据处理。曾负责青...

50160
来自专栏FreeBuf

浅谈开源web程序后台的安全性

一、前言 不知怎的最近甚是思念校园生活,思念食堂的炒饭。那时会去各种安全bbs上刷刷帖子,喜欢看别人写的一些关于安全技巧或经验的总结;那时BBS上很多文...

22390
来自专栏角落的白板报

【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

“ 工欲善其事,必先利其器。磨刀不误砍柴工!” 管理工具会VSTS。 代码管理会用GITHUB。 服务器会用Azure。 所有的东西都是利用现有服...

36180
来自专栏张戈的专栏

WordPress发布文章主动推送到百度,加快收录保护原创

工作实在太忙,也没时间打理网站。最近公司额外交待了一些网站 SEO 方面的优化任务让我关注(这就是啥都要会、啥都要做的苦逼运维的真实写照了...)。 于是抽空看...

36760
来自专栏程序员互动联盟

【盟友分享】如何快速获取Chromium源码和编译

感谢盟友:我为之狂的热心分享!同时也希望盟友们多多分享自己写的不错的文章哦; 正文: 最近准备研究下Chromium源码,但在获取Chromium源码以及编译...

74180
来自专栏carven

第一篇博客---hexo博客建成

  在国庆期间,时间很充裕,刚好阿里云有一个云翼计划,大学生9.9一个月就可以拥有一台自己的服务器。我趁自己有点闲钱就入手了一个。

11720

扫码关注云+社区

领取腾讯云代金券