CVE-2019-0859:win32k.sys 0 day漏洞

ang010ela 漏洞 2019年4月17日发布
Favorite收藏

导语:​卡巴斯基研究人员又发现win32k.sys中的一个0 day漏洞——CVE-2019-0859。

卡巴斯基的automatic Exploit Prevention (EP)系统又发现Windows操作系统中的一个漏洞利用。研究人员进一步分享发现是win32k.sys中的一个0 day漏洞。这是卡巴斯基近期发现的Windows系统中的第5个本地权限提升漏洞,前4个分别是:

· CVE-2018-8453

· CVE-2018-8589

· CVE-2018-8611

· CVE-2019-0797

2019年3月17日,卡巴斯基将漏洞报告给了微软,CVE编号为CVE-2019-0859,目前微软已经发布了该漏洞的补丁。

技术细节

CVE-2019-0859是一个CreateWindowEx函数中的UAF(Use-After-Free)漏洞。CreateWindowEx在首次创建和执行过程中会发送WM_NCCREATE消息到窗口。通过使用SetWindowsHookEx函数,可能会设置一个可以在调用窗口步骤后处理WM_NCCREATE消息的定制的回调函数。

在win32k.sys中,所有的窗口都用tagWND结构呈现,结构中有一个名为fnid的域,也叫做Function ID。该域用来定义窗口的类,所有的窗口都回被分成不同的类,比如ScrollBar, Menu, Desktop等。研究人员之前就发现了Function ID相关的漏洞。

在WM_NCCREATE回调过程中,窗口的Function ID会被设置为0,这就允许在hook中为窗口设置额外的数据。然后在hook之后可以修改要执行的窗口步骤的地址。到menu窗口步骤的窗口步骤的修改会导致xxxMenuWindowProc的执行,而且因为当前消息等于WM_NCCREATE,因此函数会初始化Function ID为FNID_MENU。

最重要的是修改设置Function ID为FNID_MENU之前的数据可以迫使xxxMenuWindowProc函数停止菜单的初始化,并返回false。因此,发送NCCREATE消息会认为是一个失败的操作,CreateWindowEx也会停止执行。因为MENU-class窗口没有真正地初始化,因此就可以获取释放的内存块的地址的控制权。

 

最新Windows 7 SP1 x64上的win32k!xxxFreeWindow+0x1344

研究人员发现的漏洞利用是针对64位Windows系统的,而且使用了著名的HMValidateHandle技术来绕过ASLR。

成功利用之后,漏洞利用会执行含有Base64编码的命令的PowerShell。该命令的主要目标是从https//pastebin.com下载第二阶段的脚本,第二阶段PowerShell会执行第3阶段的PowerShell脚本。

 

第3阶段PowerShell脚本

第3阶段的脚本非常简单,功能是:

· 解压shellcode

· 分配可执行文件内存

· 复制shellcode到分配的内存

· 调用CreateThread来执行shellcode

 

PowerShell脚本中的Shellcode

Shellcode的主要目的是进行HTTP逆向shell,这可以帮助攻击者完全控制受害者系统。

本文翻译自:https://securelist.com/new-win32k-zero-day-cve-2019-0859/90435/如若转载,请注明原文地址: https://www.4hou.com/vulnerable/17436.html
点赞 10
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论