threatBook匿名用户
IOC 1

threatBookthreatBook

CVE-2019-1132定向攻击
CVE-2019-1132漏洞被用于定向攻击
匿名用户
2019-07-11 10:54:46ThreatBook388

TLP:White

Ref:https://www.welivesecurity.com/2019/07/10/windows-zero-day-cve-2019-1132-exploit/

Anton Cherepanov 10 Jul 2019 - 11:30AM(时区以当地时间为准)

GITSEC CSIRT DFIR & Threezero

Tweet:@thr33z3r0

2019年6月,ESET研究人员发现零日攻击被用于针对东欧的高度定向攻击。

Exploit滥用Microsoft Windows本地权限提升漏洞,特别是win32k.sys组件中的NULL指针解引用。Exploit已被发现并分析,并向Microsoft安全响应中心报告,该中心及时修复了漏洞并发布了补丁。

该漏洞会影响以下Windows版本:

Windows 7 for 32-bit Systems Service Pack 1

Windows 7 for x64-based Systems Service Pack 1

Windows Server 2008 for 32-bit Systems Service Pack 2

Windows Server 2008 for Itanium-Based Systems Service Pack 2

Windows Server 2008 for x64-based Systems Service Pack 2

Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1

Windows Server 2008 R2 for x64-based Systems Service Pack 1

本文重点介绍漏洞及其利用的技术细节。 明天的另一篇文章将会深入研究恶意软件样本及其更广泛的影响。

漏洞利用

与近年来披露的许多其他Microsoft Windows win32k.sys漏洞一样,该漏洞利用了弹出菜单对象。例如,我们在2017年分析的Sednit组织的本地特权提升漏洞利用中所用到的菜单对象技术与当前漏洞非常相似。

该漏洞创建了两个窗口; 一个用于第一阶段,另一个用于第二阶段的漏洞利用。

对于第一个窗口,其创建弹出菜单对象并使用CreatePopupMenuAppendMenu函数追加菜单项。 另外,该漏洞利用设置了对WH_CALLWNDPROCEVENT_SYSTEM_MENUPOPUPSTART的挂钩。

然后漏洞利用通过TrackPopupMenu函数显示菜单。 此时,hook到EVENT_SYSTEM_MENUPOPUPSTART的代码就会被执行。

下一步对于触发该漏洞非常重要。 Exploit必须捕获已创建初始菜单的瞬间,但只关注子菜单的创建。为此,该漏洞利用代码处理了WH_CALLWNDPROC钩子中的WM_NCCREATE消息。当漏洞利用代码检测到系统处于该状态时,Exploit就会向第一个菜单发送MN_CANCELMENUS(0x1E6)消息,取消该菜单。但是,它的子菜单仍然会被创建。

现在,如果我们在内核模式下检查这个子菜单对象,我们会看到tagPOPUPMENU-> ppopupmenuRoot等于0。这个状态允许攻击者在这个内核结构中使用该元素作为NULL指针解引用。该漏洞利用在地址0x0处分配了一个新页,该地址会被内核视为tagPOPUPMENU对象(见图1)。

20190711103608.jpg

图1  tagPOPUPMENU内核结构

此时,攻击者使用第二个窗口。漏洞利用的主要目的是翻转第二个窗口中tagWND结构的bServerSideWindowProc位。这会导致在内核模式下WndProc过程的执行。

为了执行该操作,攻击者通过调用user32.dll库中未导出的HMValidateHandle函数来泄漏第二个窗口中tagWND结构的内核内存地址。然后,漏洞利用程序在NULL页面构造一个假的tagPOPUPMENU对象,并将MN_BUTTONDOWN消息发送到子菜单。

之后,内核最终会执行win32k!xxxMNOpenHierarchy函数。

20190711104204.jpg

图2 win32k!xxxMNOpenHierarchy函数的反汇编代码

该函数会将NULL页面上精心设计的对象传递给win32k!HMAssignmentLockbServerSideWindowProc位在win32k!HMDestroyUnlockedObject函数内设置,该函数位于win32k!HMAssignmentLock内部的几个调用中。

20190711104548.jpg

图3  win32k!HMDestroyUnlockedObject函数的反汇编代码

一切准备就绪! 现在,漏洞可以将特定消息发送到第二个窗口,以便在内核模式下执行WndProc。

作为最后一步,该漏洞利用系统令牌替换当前进程的令牌。


在已发布的补丁程序中,在win32k!xxxMNOpenHierarchy函数处添加了对NULL指针的检查。

20190711104849.jpg

图4  两个win32k.sys版本之间的代码比对 - 原始文件(左)和补丁文件(右)

总结

该漏洞仅适用于旧版本的Windows,因为从Windows 8开始,不允许用户进程映射NULL页面。 Microsoft将此缓解措施向后移植到基于x64的系统的Windows 7。

仍然使用Windows 7  x32位系统Service Pack 1的人需要考虑更新到较新的操作系统,因为Windows 7 Service Pack 1的扩展支持会在2020年1月14日结束。这意味着Windows 7用户将无法获得关键安全性更新。 因此,像这样的漏洞会永远保持未修补状态。

展开全部ThreatBook

威胁指标(IOC)

Hash检测结果样本标签
cbc93a9dd769dee98ffe1f43a4f5cadaf568e3210/000
0

评论

ThreatBook
已经到底了,没有更多内容了