转载

Windows Zero-Day漏洞(CVE-2016-0167):攻击支付卡数据

2016 年3月,出现了一批包含经济动机的以零售、餐饮和酒店业为目标的攻击,这些攻击邮件中包含大量带有嵌入式宏的Microsoft Word文档,一旦下载就会执行一个名为PUNCHBUGGY的下载器。

PUNCHBUGGY 是一个动态链接库下载器,包含32位和64位版本,并且可以通过HTTPS获取额外的代码。在此次攻击中,攻击中使用该下载器与受控的系统进行交互,并在受害者环境中进行移动。

FireEye 确定了超过100个南美的组织受到此次攻击的波及。FireEye调查了其中的一部分,发现攻击中使用了一个相对成熟的工具,其中包含一个以前未知的提权漏洞(EoP)利用和一个名为PUNCHTRACK的POS内存抓取工具

CNNVD-201604-244(CVE-2016-0167)-WindowsZero-Day本地提权漏洞

在一些受害者环境中,攻击中使用一个Microsoft Windows上的以前未知的EoP,选择性地获取有限数量的受损机器中的系统权限:

Windows Zero-Day漏洞(CVE-2016-0167):攻击支付卡数据

微软在2016年4月12号发布了该漏洞的 补丁 。调查发现,对该漏洞有目的的利用可以追溯到2016年3月8日。

攻击事件

研究人员将此次攻击事件定性为包含经济动机的行动。去年,安全人员不仅检测到该组织使用了相似的基础设施和TTP(技术、战术和程序),而且它是唯一一个使用PUNCHBUGGY下载器和POS恶意软件PUNCHTRACK的组织。用于收集Track 1和Track 2支付卡数据的PUNCHTRACK借助高度混淆的启动器进行加载和执行,并且不会存储在磁盘上。

此次攻击的大规模性和高频率性显示出了运营意识和能力的较高水平,而有目的的EoP的利用和有针对性的钓鱼邮件则说明攻击者具有很高的运营成熟度和复杂性。

利用详情

Win32k!xxxMNDestroyHandler 释放后重用

CVE-2016-0167 是win32k Windows Graphics子系统中的本地提权漏洞。已经获取远程代码执行权限的攻击者可利用该漏洞提升权限。在此次攻击中,攻击者首先借助附加到钓鱼邮件的文档中恶意的宏利用该漏洞获取远程代码执行权限,然后下载并运行CVE-2016-0167利用来以系统权限执行后续代码。

微软在2016年4月12日发布了CVE-2016-0167的补丁,这就意味着攻击者在升级的系统中对该漏洞的利用将不再起作用。另外,微软在2015年5月10日发布了另一个 公告 (MS16-062),改进了Windows抵御此类事件的能力。

漏洞机制

首先,该利用会调用CreateWindowEx()函数创建一个主窗口。它将WNDCLASSEX.lpfnWndProc字段传递到名为WndProc的函数中,然后分别使用SetWindowsHookEx()和SetWinEventHook()函数安装一个应用程序定义的挂钩(命名为MessageHandler)和事件挂钩(命名为EventHandler)。

接下来,使用SetTimer()中的IDEvent 0×5678创建一个计时器。时间耗尽,WndProc会接收到WM_TIMER消息,并调用TrackPopupMenuEx()显示快捷菜单。EventHandler会从xxxTrackPopupMenuEx()函数中捕获EVENT_SYSTEM_MENUPOPUPSTART事件并向内核发送消息。在处理消息时,内核会使用存在漏洞的函数xxxMNDestroyHandler(),使用户模式回调MessageHandler。MessageHandler通过调用DestroyWindow()引起释放后重用。

堆控制

该利用使用SetSysColors()执行堆风水(通过特制堆分配来操纵堆布局)。在下图的代码片段中,其中一个很重要的是地址fffff900`c1aaac40,代表着fffff900`c06a0422是window内核对象(tagWND)的基址加0×22:

Windows Zero-Day漏洞(CVE-2016-0167):攻击支付卡数据

内存损坏

USE 操作发生在下图中的HMAssignmentUnlock()+0×14:

Windows Zero-Day漏洞(CVE-2016-0167):攻击支付卡数据

RDX 中包含tagWND的基址加0×22,该指令将0xffffffff添加到win32k!tagWND.state字段,将其值从0×07004000更改为0x07003fff。0×07004000表示bServerSideWindowProc标志未设置。当发生改变时,它如下图设置bServerSideWindowProc:

Windows Zero-Day漏洞(CVE-2016-0167):攻击支付卡数据

代码执行

如果一个窗口标记了服务器端(设置bServerSideWindowPro),lpfnWndProc函数指针默认可信,并且是用户模式的shellcode。以下回溯显示内核调用该利用的shellcode的过程:

Windows Zero-Day漏洞(CVE-2016-0167):攻击支付卡数据

该shellcode窃取了System进程令牌用于提权cmd.exe子进程。

缓解

FireEye 的产品和服务将此次攻击标识为Exploit.doc.MVX、Malware.Binary.Doc、PUNCHBUGGY、Malware.Binary.exe和PUNCHTRACK。

最新的Windows更新解决了CVE-2016-0167,全面保护针对CVE-2016-0167的攻击。

另外,阻止利用Office宏的社会工程攻击也可以有效缓解该漏洞。个人用户可以在设置中禁用Office宏,企业管理员可以强制执行Group Policy策略来控制所有Office 2016用户的宏的执行。想要了解更多Office宏攻击及缓解 请点击 。

* 原文地址: fireeye ,vul_wish编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文  http://www.freebuf.com/vuls/104323.html
正文到此结束
Loading...