借助 SetWindowsHookEx 函数 , 可在窗口调用过程之前 , 设置处理 WM_NCCREATE 消息的自定义回调 。然而在 win32k.sys 中 , 所有窗口都由 tagWND 结构呈现 , 其具有“fnid”字段(亦称 Function ID) 。该字段用于定义窗口的类 , 所有窗口分为 ScrollBar、Menu、Desktop 等部分 , 此前卡巴斯基已经分享过与我们已经写过与 Function ID 相关的 bug。
在 WM_NCCREATE 回调期间 , 窗口的 Function ID 被设置为 0 , 使得我们能够钩子内部为窗口设置额外数据 , 更重要的是 Hook 后立即执行的窗口过程的地址 。将窗口过程更改为菜单窗口过程 , 会导致执行 xxxMenuWindowProc , 且该函数会将 Function ID 启动到 FNID_MENU(因为当前消息等于 WM_NCCREATE) 。
在将 Function ID 设置为 FNID_MENU 之前操作额外数据的能力 , 可强制 xxxMenuWindowProc 函数停止菜单的初始化、并返回 FALSE。因此发送 NCCREATE 消息将被视为失败的操作 , CreateWindowEx 函数将通过调用 FreeWindow 来停止执行 。
卡巴斯基实验室发现 , 野外已经有针对 64-bit 版本的 Windows 操作系统的攻击(从 Windows 7 到 Windows 10) , 其利用了众所周知的 HMValidateHandle 漏洞来绕过 ASLR。成功利用后 , 漏洞会借助 Base64 编码命令来执行 PowerShell , 主要目的是从 https // pastebin.com 下载执行二、三阶段的脚本 。
其中三阶段脚本的内容很是简洁明了 —— 捷豹 shellcode、分配可执行内存、将 shellcode 复制到已分配的内存、以及调用 CreateThread 来执行 shellcode。shellcode 的主要目标 , 是制作一个简单的 HTTP 反向 shell , 以便攻击者完全控制受害者的系统 。
推荐阅读
- 零基础编程入门教程,程序员入门教程
- Java面试篇基础部分,上下文切换
- 英魂诸葛怎么打时空,零氪玩家怎么玩
- 女装新零售怎么做,服装新零售怎么玩
- 怎么加盟天猫零售同,天猫成立新公司
- 非内侧beta版成功刷入
- 带小孩怎么赚钱,在家里带孩子怎么赚零花钱
- 零食店要怎么做,开店怎么做自己的品牌
- 为什么知网查重率低,知网查重为什么是百分之零
- 苏宁数据云公司怎么样,零售云到底是啥