Windows全版本提权之Win10系列解析

一、背景先容

2018 年 8 月 27 日,境外安然钻研职员 SandboxEscaper 在其小我主页上表露了影响 Windows 10 及Windows Server 2016系统的一个安然破绽。根据描述,该破绽存在于Windows的计划义务调整办事中,使用该破绽进击者可以从USER提升至SYSTEM权限。

天融信阿尔法实验室第一光阴进行跟进,进行破绽复现和阐发。本文将以Windows 10 X64系统平台为根基,具体先容该破绽及破绽使用措施。同时附带使用该破绽实现的提权对象及源码。

二、破绽简介

Windows 计划义务调整办事的接口函数(schedsvc!SchRpcSetSecurity())用于改动计划义务相关文件造访节制属性,未验证调用者身份。进击者可主动调用该接口函数,共同“硬链接(HardLink)”,达到改动指定系统文件造访节制属性的目的。当一些系统办事的关键模块(EXE/DLL)被窜改,再次调用该办事,进击者的代码将得以履行,且为SYSTEM权限。

三、相关技巧

在详细解说破绽及其使用措施之前,让我们首先简单懂得一些与之相关的常识。先容这部分内容是为了让不认识Windows相关特点的读者对该破绽有加倍清晰的熟识,认识以下内容的读者可以跳过这一部分。

Security Descriptor 安然描述符

在Windows系统下,Security Descriptor安然描述符(简称SD) 是包孕一个内查工具所有关于安然设置的数据布局。SD中包括用户SID、DACL、SACL。DACL注解了哪些用户可以造访该工具、以什么要领造访该工具(如CreateFile时指定的造访权限)。

系统中每一个文件、进程等等都有对应的内查工具,此中都有一个SD布局,包括每个用户对该文件支持的操作。这里摘取《Windows 安然编程》一书中关于该内容的部分阐明,必要具体懂得该部分内容的可以读一下这本书。

SchRpcSetSecurity()破绽函数支持调用者改动部分文件的安然属性,此中安然属性经由过程SDDL字符串描述,Windows会解析SDDL并转换为SD描述符。有必要懂得SDDL具体信息的可以参考尾部连接。

ALPC (Advanced Local Procedure Call)高档历程调用

ALPC是一种用户模式与内核模式通讯的要领,也支持进程间通讯。该要领被Windows系统大年夜量应用。ALPC容许在系统内运行的客户端进程要求在同一系统中运行的办事器进程供给某些信息或履行某些操作。

此中Windows计划义务就采纳了该要领进行治理,schedsvc模块以办事的要领运行,可以看做一个办事供给者。计划义务治理法度榜样可以经由过程ALPC调用schedsvc的接口进行一些增编削查操作。

硬链接(HardLink)

硬链接是经由过程将多于一个的路径引用在单个文件的符号链接。普通的说,硬链接可以看做特殊的“快捷要领文件”。我们可以经由过程mklink在指定位置为指定文件创建硬链接,这时刻就可以经由过程这2个路径造访同一个文件。

当然硬链接有其他很多限定和特征,这里不做太多先容,只先容与本文相关的内容。

如微软所描述,硬链接并没有零丁的SD描述符。变动硬链接的安然描述符,即变动了根基文件的安然描述符。

四、破绽位置

破绽函数位于Windows计划义务调整办事中,办事名称为 Task Scheduler,主模块为schedsvc.dll,寄托svchost.exe法度榜样注册为系统办事。

该模块接口函数SchRpcSetSecurity(),用于改动计划义务有关文件或目录的安然属性。该函数并没有编码上的安然问题,孕育发生安然问题的缘故原由是该函数没有验证调用者的滥觞及合法性,即随意率性法度榜样均可以经由过程ALPC接口调用该函数改动文件属性。这里贴一下微软针对该函数的阐明:

指定文件PATH 和 安然描述SDDL,该函数将为指定的文件设置对应的安然属性,当然PATH并不是指定一个文件全路径,而是指定一个“义务名称”,该函数会根据义务名称补全路径,详细的后面会先容。下面是IDA反汇编该函数的内容:

全部流程着实并不繁杂,一些老例操作。这里贴出我们必要懂得的相关部分的代码,也便是图中阐明的设置文件安然描述符的函数代码:

[1] [2] [3]下一页

可见该处为一处虚函数调用,这时刻IDA中没有很好的描述函数的地址及名称,只好拿起Windbg进行动态调试,应用WinDbg附加到svchost.exe进程(系统中有多个svchost进程,可以根据敕令行参数或者已加载模块定位目标进程),终极定位到该函数终极调用了taskcomp! SetSDNotification ()函数:

tsched!SetJobFileSecurityByName()终极会设置文件安然属性,以下是该函数的关键流程

着末来看看动态调试的环境,在WinDbg中单步跟踪task!SetSDNotification(),该函数接管2个参数。因为是X64汇编情况,函数调用的参数通报采纳X64传参要领,前四个参数依次经由过程RCX RDX R8 R9进行通报。

至此破绽函数关键流程已完毕,关键之处是schedsvc!SchRpcSetSecurity()内部会调用taskcomp!SetSDNotification(), 按照通报的义务名称参数和SDDL安然描述字串,设置%systemdir%\\Tasks\\义务名称.job 的安然属性。

单单能改动该目录的一个文件内容和文件属性彷佛也没有什么意义,照样没有一段以SYSTEM权限履行的代码,无法有效使用。这时刻就要提起前面提起过的Windows符号链接之一的“硬链接”,在 %systemdir%\\Tasks目录创建一个链接到系统法度榜样A的硬链接,这个时刻经由过程改动安然属性,使得通俗用户也有权限改动系统法度榜样A的文件内容,然后经由过程系统接口启动窜改后的法度榜样A,让我们的代码以高权限运行。举个例子:系统办事均运行在SYSTEM权限下,查找一下哪些系统目录的EXE/DLL被注册为办事,改动该文件后启动该办事,即可得到SYSTEM权限。

五、破绽使用

前文已经先容过破绽函数的流程及感化,进击者经由过程SchRpcSetSecurity()接口函数可以设置对系统法度榜样的造访属性,使得通俗用户权限运行的法度榜样可以改动系统法度榜样及其履行代码。笔者完善了SandboxEscaper供给的POC,制作了支持Windows10 x86/x64 及Windows Server2016系统的提权对象(GitHub传送门),下面将以此为例先容该破绽使用的完备流程。

该EXP经由过程使用破绽函数,改动系统办事Microsoft XPS DocumentWriter 办事(该办事为XPS打印办事)的关键DLL,然后经由过程COM接口发送打印义务,终极系统将会启动该办事。

以下代码是定位文件路径以及创建文件硬链接的历程:

不过有一点必要留意的是,因为硬链接必要在%systemdir%\\tasks目录创建,通俗法度榜样并无法成功创建,以是这个操作必要由有权限的法度榜样去做。SandboxEscaper的DEMO中选择了注入代码到Notepad法度榜样中,以Notepad进程的运行情况是有权限在该目录创建硬链接的。笔者的EXP中,将注入操作顺带实现了,自己创建一个进程并注入。

远程线程要领注入一个DLL到Notepad中,创建硬链接并触发破绽函数。

上一页[1] [2] [3]下一页

上面经由过程RPC要领调用schedsvc!SchRpcSetSecurity()函数,触发破绽。此中所通报的SDDL安然描述字符串,将目标文件设置为验证用户拥有可写入权限,其款式可以自己解读,MSDN有例子

在触发破绽之后,理论上目标文件以及可以改动,上面的代码用于改动文件。从资本掏出DLL并覆盖。在DLL改动完毕之后,经由过程COM组件启动该办事进行打印。

至此破绽使用完毕。

这里贴上EXP的代码,DLL加载DllMain()函数必被调用,EXP由DLLMain()开始履行破绽使用代码。该exp经由过程本地SOCKET接管用户参数并履行,然后经由过程SOCKET把结果传回给破绽使用法度榜样展示给用户。

六、总结

到这里,破绽阐发和破绽使用都先容完了,该破绽属于逻辑破绽,而并非编码孕育发生的安然破绽。

今朝微软暂未宣布相关安然更新,建议用户不要运行滥觞不明的可履行法度榜样,避免遭受此类破绽的进击。

七、参考链接

1)SchRpcSetSecurity()函数

https://msdn.microsoft.com/en-us/library/cc248452.aspx

2)SDDL安然描述字符串

https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/sddl-for-device-objects

3)Access Control Lists

https://docs.microsoft.com/zh-cn/windows/desktop/SecAuthZ/access-control-lists

4)DACLs and ACEs

https://docs.microsoft.com/zh-cn/windows/desktop/SecAuthZ/dacls-and-aces

5)HardLink 硬链接

https://docs.microsoft.com/zh-cn/windows/desktop/FileIO/hard-links-and-junctions

上一页[1] [2] [3]

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包