成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入分析Win32k系統調用過濾機制

安全 漏洞
許多年以來,發現的大多數漏洞都是來源于Win32k.sys驅動,它負責處理來自GDI32.DLL和user32.dll的調用。為了緩解這些漏洞,微軟在window10上實現了Win32系統調用過濾.總體思路是在進程入口處嘗試阻止大量的發往win32.sys的系統調用,以便阻止未知的漏洞利用。

[[183613]]

前言

Windows內核漏洞的利用具有高風險,經常用于瀏覽器沙箱逃逸。許多年以來,發現的大多數漏洞都是來源于Win32k.sys驅動,它負責處理來自GDI32.DLL和user32.dll的調用。為了緩解這些漏洞,微軟在window10上實現了Win32系統調用過濾.總體思路是在進程入口處嘗試阻止大量的發往win32.sys的系統調用,以便阻止未知的漏洞利用。我沒有找到實現的相關細節,也不確定效果如何。我發現的唯一資料就是由Peter Hlavaty發表在 Rainbow Over the Windows的相關文章。

系統調用101

我理解過濾技術的第一個方法就是研究系統調用是如何執行。分析是基于Windows 10周年更新的64位版本。通常,系統調用在gdi32.dll或者user32.dll的函數中被初始化,最終會在win32u.dll中調用真實的系統調用。但是,我們可以直接使用匯編來顯示系統調用,在以下的POC中,我查詢到系統調用號為0x119E的WIN32K函數是NtGdiDdDDICreateAllocation。所以我簡單地創建下面的測試應用程序:

系統調用101

下圖是NtGdiDdDDICreateAllocation的匯編代碼:

http://p2.qhimg.com/t01cd53b49ccf713ba5.png

當運行syscall指令后,將轉入內核模式執行.真實的系統調用位于NT!KiSystemStartService。但是,由于有大量的系統調用,所以我們需要在調試器中設置一個條件斷點:

調試器

運行POC并開啟斷點

運行POC并開啟斷點

首先顯示的系統調用號就是我們提供的0x119E,其實參數1,2,3,4保存在寄存器RCX,RDX,R8和R9中。在IDA中查看相關代碼:

在IDA中查看相關代碼

查閱代碼,我們發現一個有趣的問題:RBX寄存器的內容是什么,這又是從何而來。嘗試引用KiSystemServiceStart,我們發現 RBX在以下函數中被設置:

RBX在以下函數中被設置

MOV RBX GS:188將Win32SyscallFilter.exe的內核線程結構載入RBX中,驗證如下:

RBX

研究算法

接下來的問題是RBX + 0x78代表什么,事實證明,它代表一系列的標志位。下圖引用的兩個標志是GuiThread和RestrictedGuiThread,它們分別位于標志的第6位和和19位。

在我們的例子中,標志位的值如下:

兩個標志是GuiThread和RestrictedGuiThread

由于線程不是一個GUI線程,所以會重定向的將它轉換成一個GUI線程,然后返回相同的指針。繼續執行會發生:

Win32kSyscallFilter并沒有做任何事。但是接下來的檢查很有趣。RestrictedGuiThread標志指明,如果啟用系統調用過濾,會在進程級別上進行檢測:

兩個標志是GuiThread和RestrictedGuiThread

因此,對于當前的進程和線程,系統調用過濾沒有啟用。查看進一步執行,將體現出這個標志位的重要性:

兩個標志是GuiThread和RestrictedGuiThread

如果開啟了系統調用過濾功能,KeServiceDescriptorTableFilter將取代KeServiceDescriptorTableShadow,如果沒有開啟過濾,則將使用KeServiceDescriptorTableShadow。接下來要觀察系統調用表的使用,如下圖所示:

兩個標志是GuiThread和RestrictedGuiThread

在經過運算后,RDI包含系統調用數目。在WIN32K系統的情況下,它的值是0x20。所以,取決于系統調用過濾是否開啟,不同的表會被載入R10.這兩個選項是:

被載入R10.這兩個選項

然后該表將轉入真實的函數調用:

被載入R10.這兩個選項

跟隨以上的算法,我們在調試器中找到:

所以這很顯然,系統調用號通過負偏移指向W32pServiceTable結構,然后指向真實的NtGdiDdDDICreateAllocation函數。這是非常好的,但是如果開啟了系統調用過濾,會有什么區別呢,這可以使用W32pServiceTableFilter來進行驗證:

使用W32pServiceTableFilter來進行驗證

我們看到在此之前并沒有什么區別,這是因為NtGdiDdDDiCreateAllocation并不是過濾的API之一,如果我們選擇其他的系統調用,比如NtGdiDdDDiCreateAllocation,它的系統調用號是0x117E。我們基于是否啟用系統調用過濾來對比以下兩個輸出。

首先是未啟用系統調用過濾的:

使用W32pServiceTableFilter來進行驗證

然后是啟用系統調用過濾:

啟用系統調用過濾

我們發現,如果開啟了系統調用過濾功能,系統調用是不允許的另一個函數被調用的。該過濾函數驗證是否啟用系統調用過濾并簡單的結束系統調用。

利用的結果

現在我們了解了系統調用過濾是如何工作的,我們需要研究它是如何防止內核漏洞利用的。首先要看看它保護的是什么進程,到目前為止,僅僅是微軟Edge可以啟用這個功能,目前第三方程序沒有可以啟用它的接口。這意味著系統調用過濾僅僅關心Microsoft Edge漏洞并且僅限于內核漏洞。下面我們可以看到MicrosoftEdgeCP.exe的進程結構,并啟用了系統調用過濾:

MicrosoftEdgeCP.exe的進程結構,并啟用了系統調用過濾

回顧我早期文章,關于重新啟用tagWND對象作為讀寫原語的用法的,我想知道是否使用這個方法的任意系統調用都會被過濾,在那個方法中使用的內核模式的函數是:

  1. NtUserCreateWindowEx 
  2. NtUserDestroyWindow 
  3. NtUserSetWindowLongPtr 
  4. NtUserDefSetText 
  5. NtUserInternalGetWindowText 
  6. NtUserMessageCall 

在win32k.sys中沒有stub_*方法的函數意味著不會被過濾。結論就是Win32K系統調用過濾不會阻止可能導致漏洞的系統調用,但是當系統調用觸發一個漏洞時,它一定會阻止,可能是write-that-wherer或者是一個緩沖區溢出。WIN32K系統調用過濾所提供的保護是巧妙的,但關鍵在于是否使用了系統調用來觸發漏洞。

責任編輯:趙寧寧 來源: 安全客
相關推薦

2015-08-03 09:54:26

Java線程Java

2010-08-11 15:47:04

Google GFS文

2010-09-07 14:21:22

PPPoE協議

2022-04-12 08:30:45

TomcatWeb 應用Servlet

2011-03-23 11:01:55

LAMP 架構

2010-03-08 14:53:48

Linux分區

2023-02-01 08:13:30

Redis內存碎片

2011-09-01 13:51:52

JavaScript

2016-11-03 09:01:36

2009-10-15 11:15:12

智能布線系統

2009-12-16 16:39:01

Visual Stud

2009-06-10 18:12:38

Equinox動態化OSGi動態化

2022-08-30 07:00:18

執行引擎Hotspot虛擬機

2009-12-14 14:50:46

Ruby傳參數

2021-10-29 16:36:53

AMSAndroidActivityMan

2010-11-25 13:32:57

MySQL系統效率

2009-08-13 09:18:43

2018-10-25 15:24:10

ThreadLocal內存泄漏Java

2018-12-18 10:11:37

軟件復雜度軟件系統軟件開發

2021-04-13 12:55:06

SpringMVC解析器接口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本三级日产三级国产三级 | 色播久久久 | 欧美日韩国产一区二区三区 | 国产精品久久久久久久久免费 | 黄视频国产 | 97色在线视频 | 97精品国产手机 | 精品国产99| 日本中文在线视频 | 在线观看亚洲专区 | 久久久免费少妇高潮毛片 | 国产成人精品午夜视频免费 | 国产精品视频综合 | 国产一级毛片视频 | 欧美 日韩 在线播放 | 亚洲三级在线观看 | 久久久久久久久中文字幕 | 欧州一区二区三区 | 91精品久久久久久久 | 欧美乱码精品一区二区三区 | 精品少妇一区二区三区在线播放 | 亚洲精品日韩欧美 | 亚洲h色| 欧美一区二区三区在线观看 | 国产亚洲欧美日韩精品一区二区三区 | 亚洲欧美一区二区三区在线 | 成年人在线视频 | 91精品国产91久久久久久密臀 | 三级视频在线观看 | 亚洲精品欧美 | 黄色毛片在线观看 | 欧美日韩国产一区二区 | 欧美a√ | www.日韩| 在线成人av | 日韩久久久久 | 国内av在线| 视频一二三区 | 欧美激情精品久久久久久变态 | 久久高清国产 | 午夜影院在线观看版 |