欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

内核漏洞破绽攻击游行Dark Composition Exploitation Case Study

来源:本站整理 作者:佚名 时间:2017-10-12 TAG: 我要投稿

测验考试写这个Exploit的原由是邱神 @pgboy1988 在3月份的一条微博,这是邱神和社哥在cansecwest2017上的议题《Win32k Dark Composition--Attacking the Shadow Part of Graphic Subsystem》,起初邱神在微博公开了这个议题的slide,和议题中两个demo的PoC,其时我也恰好刚开端进修内核漏洞破绽bug,因而就想测验考试将此中一个double free的demo写成exploit(事实证明我想的太简略了)。
起初由于本身事情和其余在同时停止的一些flag,另有一些噜苏事情的缘故原由,这个Exploit拖疲塌拉了半年光阴,此中踩了许多坑,但这些坑异常风趣,因而有了这篇文章,我会和人人分享这个Exploit的出生过程。
我在6月份完成了Exploit的提权部门,随后遇到了一个异常大的艰苦,便是对Handle Table的修补,10月份完成了全部漏洞破绽bug的应用。
异常异常感激邱神在我测验考试写Exploit的过程当中对我的辅导,真的异常异常紧张!也异常感激我的小伙伴大米,在一些细节上的评论辩论碰撞,办理了一些成绩,许多时刻本身走不出的弯假如有大佬可以或许辅导,或许和小伙伴交换评论辩论,会办理许多本身要很久能力办理的成绩。
末了我照样想说,十一长假时完成这个Exploit的时刻我差点从椅子上跳起来,whoami->SYSTEM那一刻我忽然感到,这个世界上怕是没有甚么比system&&root更让我高兴的事情了!

调试情况:
Windows 10 x64 build 1607
win32kbase.sys 10.0.14393.0
Windbg 10.0.15063.468
IDA 6.8
邱神的slide和PoC: https://github.com/progmboy/cansecwest2017
我会默许浏览此文的小伙伴们曾经卖力看过邱神和社哥的slide,对于slide中提到的知识点我就再也不赘述,迎接徒弟们交换评论辩论,批评指正,感激浏览!
0x01 对于Direct Compostion和PoC
对于Direct Composition在slide里有相干描写,假如想看更详细的内容可以或许参考MSDN,这里我就再也不赘述,我最开端复现这个double free漏洞破绽bug的时刻碰到了第一个成绩,其时PoC无奈触发这个漏洞破绽bug,会前往NTSTATUS 0xC00000D,我从新跟踪了一下挪用过程,发明了第一个成绩的办理办法。

起首,在Win10 RS1以后Direct Compostion的NTAPI援用可以或许经由过程NtDCompositionProcessChannelBatchBuffer挪用,经由过程enum DCPROCESSCOMMANDID治理。
enum DCPROCESSCOMMANDID
{
    nCmdProcessCommandBufferIterator,
    nCmdCreateResource,
    nCmdOpenSharedResource,
    nCmdReleaseResource,
    nCmdGetAnimationTime,
    nCmdCapturePointer,
    nCmdOpenSharedResourceHandle,
    nCmdSetResourceCallbackId,
    nCmdSetResourceIntegerProperty,
    nCmdSetResourceFloatProperty,
    nCmdSetResourceHandleProperty,
    nCmdSetResourceBufferProperty,
    nCmdSetResourceReferenceProperty,
    nCmdSetResourceReferenceArrayProperty,
    nCmdSetResourceAnimationProperty,
    nCmdSetResourceDeletedNotificationTag,
    nCmdAddVisualChild,
    nCmdRedirectMouseToHwnd,
    nCmdSetVisualInputSink,
    nCmdRemoveVisualChild
};
这个NtDCompositionChannelBatchBuffer函数在win32kbase.sys中,它的函数逻辑以下:
__int64 __fastcall DirectComposition::CApplicationChannel::ProcessCommandBufferIterator(DirectComposition::CApplicationChannel *this, char *a2, unsigned int a3, __int64 a4, unsigned __int32 *a5)
{
          switch ( v10 )
        {
          case 9:
            v11 = v6;
            if ( v5 >= 0x10 )
            {
              v6 += 16;
              v5 -= 16;
              v12 = DirectComposition::CApplicationChannel::SetResourceFloatProperty(
                      v7,
                      *((_DWORD *)v11 + 1),
                      *((_DWORD *)v11 + 2),
                      *((float *)v11 + 3));

[1] [2] [3] [4] [5] [6] [7] [8] [9]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载