该漏洞是一个释放后使用漏洞,存在于处理会话窗口或者更具体地说是会话窗口的其它样式的系统函数中。该利用模式已被用于攻击64位系统版本,影响 Windows 7 至Windows 10 版本。利用该漏洞可导致恶意软件下载并执行攻击者编写的脚本,在最糟糕的场景中可导致受感染个人电脑遭完全控制。 或者,至少这是身份仍未明确的 APT 组织的目的。他们可利用该漏洞获得通过 Windows PowerShell 创建的后门的充分权限。从理论上来讲,这么做应该能够导致网络犯罪分子仍然不被发现。通过该后门加载 payload,从而获取对整个受感染计算机的完全访问权限。 技术细节 CVE-2019-0859是一个释放后使用漏洞,存在于 CreateWindowEx 函数中。在执行过程中,CreateWindowEx 将信息 WM_NXXREATE 发送至首次创建时的窗口。通过使用 SetWindowHookEx 函数,很有可能设置一个自定义回调函数,在调用窗口程序之前正确处理 WM_NCCREATE 信息。 在win32.sys 中,所有的窗口都是由 tagWND 结构展现的,该结构中含有一个“fnid”字段,也被称为 Function ID(函数 ID)。该字段用于定义窗口的类;所有窗口都被分为多个类,如 ScrollBar、Menu、Desktop 等。 在WM_NCCREATE 回调过程中,窗口的 Function ID 被设置为0,从而能够从钩子中为窗口设置额外数据。更重要的是,我们能够更改我们钩子后立即执行的该窗口程序的地址。将窗口程序更改为目录窗口程序导致 xxxMenuWindowProc 执行,而初始化 Function ID 为 FNID_MENU,原因是当前信息等同于 WM_NCCREATE。但最重要的地方在于,在将 Function ID 设置为 FNID_MENU之前能够操纵额外数据,从而强制 xxxMenuWindowProc 函数停止对目录进行初始化且返回 FALSE。因此,发送 NCCREATE 信息将被认为操作失败而 CreateWindowEx 函数将通过调用 FreeWindow 停止执行。由于 MENU 类窗口并未真正被初始化,因此导致我们能够获得对所释放的内存块地址的控制权限。 研究人员所发现的漏洞利用通过为人熟知的 HMValidateHandle 技术绕过 ASLR。 第三阶段的脚本非常简单,主要作如下操作: 该 shellcode 的目标是制造一个普通的 HTTP 反向 shell,从而帮助攻击者获取对受害者系统的完全控制权限。 该攻击和相关攻击中所使用的部件如下: HEUR:Exploit.Win32.Generic HEUR:Trojan.Win32.Generic PDM:Exploit.Win32.Generic 如何防范 如下防范方法之前都有提到过: 首先,安装微软发布的更新。 例行更新企业所使用的所有软件,尤其是操作系统,将它们更新至最新版本。 使用能够通过行为分析技术检测出甚至尚不知晓的威胁的安全解决方案。 |