微软Windows早期版本0day漏洞分析:从提权到利用全流程

robot
摘要生成中

微软Windows系统0day漏洞分析及利用

近期,微软发布的安全补丁中修复了一个正在被利用的win32k提权漏洞。该漏洞仅存在于早期Windows系统版本中,无法在Windows 11上触发。本文将分析在当前安全防护不断完善的背景下,攻击者如何继续利用此类漏洞。

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

漏洞背景

0day漏洞指尚未公开且未被修复的安全漏洞,类似于金融市场的T+0交易概念。此类漏洞一旦被发现可能会在未被察觉的情况下被恶意利用,造成巨大危害。

本次发现的Windows系统0day漏洞可使攻击者获取系统完全控制权。这可能导致个人信息泄露、系统崩溃、数据丢失、财产损失等严重后果。从Web3角度看,可能造成私钥被盗、数字资产被转移,甚至影响整个基于Web2基础设施的Web3生态。

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

补丁分析

分析补丁代码发现,问题出在对象引用计数的多次处理。通过查看早期源码注释可知,以前的代码只锁定了窗口对象,而未锁定窗口中的菜单对象,可能导致菜单对象被错误引用。

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

漏洞复现

通过分析漏洞函数上下文,发现传入xxxEnableMenuItem()的菜单通常已在上层函数被锁定。进一步分析发现,MenuItemState函数返回的菜单可能是窗口主菜单,也可能是子菜单或子子菜单。

为触发漏洞,构造了一个特殊的四层菜单结构,并设置了以下特征:

  1. 最底层菜单D的ID必须为系统菜单类型
  2. 顶层菜单A也必须是系统菜单,但需删除对应系统菜单类型
  3. 删除菜单C在菜单B中的引用
  4. 菜单B的存在似乎有助于菜单C的释放

在xxxRedrawTitle返回用户层时,删除菜单C和B的引用关系并释放菜单C。这样在xxxEnableMenuItem函数返回点时,即将引用的菜单C对象已失效。

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

漏洞利用

漏洞利用主要考虑两个方向:

  1. 执行shellcode代码:参考早期CVE-2017-0263等漏洞,但在高版本Windows中可能面临入口点和SMEP等安全机制问题。

  2. 利用读写原语修改token地址:近年来有多个公开exp可参考,对桌面堆内存布局和读写原语具有通用性。关键是分析如何在UAF内存重用时首次控制cbwndextra为特大值。

本次利用采用第二种方案,将整个过程分为两步:

  1. 利用UAF漏洞控制cbwndextra值
  2. 控制cbwndextra后实现稳定的读写原语

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

首次数据写入

漏洞触发后,系统可能在MNGetPopupFromMenu()和xxxMNUpdateShownMenu()中错误使用被控制的窗口对象数据。我们使用窗口类WNDClass中的窗口名称对象占用释放的菜单对象。

关键是找到一个可由我们构建的地址结构中能任意写入数据的位置,哪怕只有一个字节。最终选择了xxxRedrawWindow函数中的方案,通过布局内存控制前一个对象的内存数据来通过函数中的对象标志判断。

稳定的内存布局

设计至少三个连续的0x250字节HWND对象,释放中间一个并用HWNDClass对象占用。前一个HWND对象尾部数据用于通过xxxRedrawWindow中的标志检验,后一个HWND对象的菜单对象和HWNDClass对象用作最终读写原语媒介。

通过堆内存中泄露的内核句柄地址来精确判断申请的窗口对象是否按预期顺序排列。

读写原语

任意读原语使用GetMenuBarInfo(),任意写原语使用SetClassLongPtr()。除替换TOKEN的写入外,其他写入都利用第一个窗口对象的class对象使用偏移来写入。

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

总结

  1. win32k漏洞历史悠久,但微软正在尝试用Rust重构相关代码,未来新系统中此类漏洞可能被杜绝。

  2. 该漏洞利用过程相对简单,主要难点在于如何控制首次写入。严重依赖桌面堆句柄地址泄露,这仍是老旧系统的安全隐患。

  3. 该漏洞的发现可能得益于更完善的代码覆盖率检测。

  4. 对于漏洞利用检测,除关注触发函数关键点外,还应关注异常的内存布局和窗口数据偏移读写。

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

Numen 独家:微软 0day 漏洞可系统+物理层面掀掉 Web3 牌局

TOKEN2.63%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
链上酱油师vip
· 22小时前
老win又咋啦?每天都有漏洞
回复0
地板价观察员vip
· 22小时前
win11逃过一劫啦
回复0
MEV三明治受害者vip
· 23小时前
漏洞包丝戏多 谁炒谁割
回复0
币圈疯批女友vip
· 23小时前
11已经不香了嘛
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)