當前位置:
首頁 > 新聞 > 案例分析:如何不利用驅動執行內核提權程序

案例分析:如何不利用驅動執行內核提權程序

最近,我們開始從內部沙箱的Exploit Checker插件中接收可疑事件。管理模式下在用戶地址空間中執行代碼的行為不斷觸發啟發式,並將一個可執行文件標記為進一步分析。起初,看起來好像我們發現了Windows的0 day本地特權提升漏洞,但觸發Exploit Checker事件的樣本竟然是乾淨的簽名可執行文件GundamOnline.exe,是BANDAI NAMCO Online Inc(萬代南夢宮在線)推出的多人在線遊戲Mobile Suit Gundam Online(機動戰士高達Online)的一部分。

初始樣本使用專用殼加殼,包含反分析技術使靜態分析複雜化。例如,它會嘗試執行大家熟知的VMware hypervisor檢測程序來檢測自己是否在虛擬機中啟動。首先它將hypervisor的magic值VMXh載入到EAX寄存器,ECX寄存器的值為0x0A,這是一個接收hypervisor版本的特殊命令。然後它在VMware hypervisor I O埠0x5658執行一個in命令。如果EBX寄存器由於該操作而被VMXh覆蓋,則表示程序正在VMware虛擬機中運行。

我們的沙箱執行日誌顯示用戶空間內存頁面在IOCTL請求0xAA012044發送到驅動創建的設備對象\.Htsysm7838後立刻被驅動bandainamcoonline.sys調用。在這之前驅動程序已安裝好,先被GundamOnline下載到目錄 C:WindowsSysWOW64 ,之後使用NtLoadDriver()載入,隨即刪除。

正常情況下,由於SMEP(管理模式執行保護)開啟此行為應該不被允許。SMEP是英特爾最新處理器上的一項安全功能,限制管理模式下使用用戶內存頁面。頁面類型由頁面表項中的用戶/管理員標誌決定。如果在管理模式下調用用戶內存頁面,則SMEP會發生訪問衝突異常,系統將觸發錯誤檢查並暫停,即所謂的BSOD(藍屏)。

驅動合法 使用NAMCO BANDAI Online Inc 的證書籤名

證書有效期告訴我們兩件事。首先,該證書自2012年以來一直有效,這可能意味著第一個存在漏洞的驅動版本是在同一時間發布的。但是,我們沒有找到,我們發現的最早的bandainamcoonline.sys樣本可追溯至2015年11月。其次,因為它在三年前已經過期,所以在系統中安裝使用此證書籤名的驅動程序是不可原諒的。當然,沒有任何事可以阻止你安裝和載入一個證書有效期過期的驅動程序。

為找到觸發啟發式的原因,我們需要靜態分析驅動程序。在DriverEntry函數中,它首先解碼內存中的設備對象名稱字元串,然後創建設備\. Htsysm7838。另外兩個編碼字元串——bandainamcoonline和bandainamcoonline.sys ,沒有在驅動程序中使用。

驅動程序本身非常小,只包含三個已註冊的主要函數。處理請求的函數IRP_MJ_DEVICE_CONTROL只接受兩個IOCTL:0xAA012044和0xAA013044。調用時,它會檢查輸入和輸出緩衝區的大小,並最終調用ExecuteUserspaceCode函數,將輸入緩衝區的內容傳遞給它。

ExecuteUserspaceCode函數對輸入緩衝區(包含一個指向用戶空間函數或shellcode的指針)進行一次檢查,並在禁用SMEP的同時保存原來的CR4寄存器值。然後調用該函數,並將它作為參數傳遞給MmGetSystemRoutineAddress。最後,恢復原來的寄存器狀態,重新啟用SMEP。

為直接從提供的驅動程序中調用用戶函數,首先要刪除CR4寄存器中的特定比特位以暫停SMEP,這是DisableSMEP函數的作用。之後,原始CR4值由EnableSMEP函數恢復。

此漏洞的產生是因為除了輸入緩衝區格式的基本檢查之外,沒有其餘的檢查。因此,系統中的任何用戶都可以使用該驅動程序提升許可權,並在OS的Ring 0層執行任意代碼。即使驅動程序不在系統中,攻擊者也可以通過Windows API函數進行註冊並利用該漏洞。

我們意識到此漏洞和去年在Capcom驅動程序

二進位比對發現,bandainamcoonline.sys和capcom.sys幾乎完全相同。只是編碼的字元串和數字簽名有細微的變化。由於我們能夠找到的最早存在漏洞的驅動程序樣本可追溯至2015年11月,所以可以認為這個漏洞最早出現在bandainamcoonline.sys驅動程序中,它比Capcom早一年使用類似的驅動程序。

我們相信這兩個驅動程序肯定是從相同的源代碼編譯的,作為反黑客解決方案的一部分阻止用戶在遊戲中作弊。隱蔽地禁用和重新啟用SMEP函數表明此設計是故意的。但是由於驅動程序沒有進行額外的安全檢查,因此任何用戶都可以使用Windows API(如DeviceIoControl())調用和利用存在漏洞的IO控制代碼。這本質上使驅動程序成了一個rootkit,允許任何人以最高特權與操作系統進行交互。實際上,我們已經發現多個惡意軟體樣本(已被我們的產品檢測到)使用了capcom.sys中一個之前公布的已知漏洞,將他們的許可權提升到系統許可權。

發現漏洞之後我們聯繫了BANDAI NAMCO Online Inc,供應商迅速響應,並在三天後發布了補丁。他們完全卸載了驅動,不再由遊戲執行文件載入。這與Capcom所做的非常類似,這樣做完全可以接受。

如果沒有我們的Exploit Checker技術(沙箱中的插件,KATA——卡巴斯基反目標攻擊平台中也有),就不可能發現這個漏洞。該技術旨在監視post-exploitation階段最先發生的可疑事件,並且可以檢測ROP、堆噴射、棧溢出等常見漏洞攻擊技術。這種情況下,以管理模式在用戶地址空間中執行代碼將觸發多個啟發式,並將樣本標記為進一步分析。如果採用令牌交換來提升進程許可權(LPE漏洞利用中廣泛使用的一種技術),它將被Exploit Checker啟發式檢測自動檢測到。

Kaspersky Lab將文中提及的存在漏洞的驅動程序標記為:

HEUR:HackTool.Win32.Banco.a

HEUR:HackTool.Win32.Capco.a


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

揭秘以太坊中潛伏多年的「偷渡」漏洞
SSH隧道綜合指南

TAG:嘶吼RoarTalk |