Windows 0day漏洞分析:從菜單UAF到系統提權

robot
摘要生成中

微軟Windows系統0day漏洞分析及利用

引言

上月微軟安全補丁中包含一個在野利用的win32k提權漏洞,僅存在於早期Windows系統。本文將分析在當前安全措施不斷改進的情況下,攻擊者如何繼續利用該漏洞。分析環境爲Windows Server 2016。

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

漏洞背景

0day漏洞指未被披露和修補的漏洞,可被惡意利用造成極大破壞。本次發現的Windows系統0day漏洞可使黑客獲取系統完全控制權,後果包括但不限於:

  • 個人信息竊取
  • 系統崩潰數據丟失
  • 財務損失
  • 惡意軟件植入
  • 加密私鑰被竊取
  • 數字資產被轉移

從更大範圍看,該漏洞可能影響基於Web2基礎設施運行的整個Web3生態。

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

補丁分析

補丁修復了一處對象引用計數的多次處理問題。分析早期源碼注釋發現,原代碼只鎖定了窗口對象,未鎖定窗口中的菜單對象,可能導致菜單對象被錯誤引用。

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

漏洞利用分析

分析發現xxxEnableMenuItem函數中,MenuItemState函數返回的菜單有兩種可能:窗口主菜單或菜單中的子菜單。

構造特殊的多層嵌套菜單結構,並設置特定屬性,可繞過函數檢測。在xxxRedrawTitle函數返回用戶層時,刪除菜單間引用關係並釋放目標菜單對象。最終在xxxEnableMenuItem函數中引用到已無效的菜單對象。

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

漏洞利用實現

整體思路

考慮兩種利用方向:

  1. 執行shellcode代碼
  2. 利用讀寫原語修改token地址

選擇第二種方案,將利用過程拆分爲兩個問題:

  • 如何利用UAF漏洞控制cbwndextra值
  • 如何實現穩定的讀寫原語

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

初始數據寫入

利用窗口類WNDClass中的窗口名稱對象佔用釋放的菜單對象。在xxxRedrawWindow函數中找到可寫入數據的時機。

最終選擇通過標志位AND 2操作寫入HWNDClass的cb-extra參數。

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

穩定內存布局

設計連續三個HWND對象,釋放中間對象並用HWNDClass對象佔用。前後HWND對象分別用於:

  • 提供標志檢驗參數
  • 提供讀寫原語媒介

通過泄露的內核句柄地址精確判斷對象排列順序。

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

讀寫原語實現

  • 任意讀:GetMenuBarInfo()
  • 任意寫:SetClassLongPtr()

除TOKEN寫入外,其他寫入操作利用第一個窗口對象的class對象。

總結

  1. win32k漏洞在新版Windows中可能被杜絕

  2. 漏洞利用過程相對簡單,主要依賴桌面堆句柄地址泄露

  3. 漏洞發現可能依賴更完善的代碼覆蓋率檢測

  4. 對異常內存讀寫的檢測有助於發現同類漏洞

Numen 獨家:微軟 0day 漏洞可系統+物理層面掀掉 Web3 牌局

TOKEN3.25%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 3
  • 轉發
  • 分享
留言
0/400
午夜交易者vip
· 08-08 20:40
又一个大洞 Windows真不行啊
回復0
TokenDustCollectorvip
· 08-08 20:37
微软这漏洞有点刑啊 私钥都能给偷了
回復0
半仓就是空仓vip
· 08-08 20:36
哎呦 又翻车啦~
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)