SandboxEscaper披露漏洞POC研究報告

2019-06-12 118009人圍觀 ,發現 3 個不明物體 漏洞

*本文中涉及到的相關漏洞已報送廠商并得到修復,本文僅限技術研究與討論,嚴禁用于非法用途,否則產生的一切后果自行承擔。

事件概述

近日,安全研究人員SandboxEscaper在GitHub上發布了針對Windows 10的5個零日漏洞的演示利用代碼。

代碼分別是:

Windows錯誤報告

Windows任務計劃

Windows安裝程序

IE11沙箱逃離

Windows AppX部署服務

其中除一、五倆個零日漏洞外,其他三個都是在2018年就已爆出。

漏洞詳情

Windows錯誤報告零日

1.      利用條件:

可以通過精心放置的DACL(自主訪問控制列表)操作來利用:

當我們觸發報告隊列任務時,WER服務將嘗試刪除兩個文件。它會為這兩個文件寫一個DACL,以確保SYSTEM對它們進行“刪除”。這種方式的工作方式分為兩步:

a. 調用GetFileSecurity并獲取安全描述

b. 向安全描述符添加了一些內容,因此具有SYSTEM刪除權限,然后使用SetFileSecurity將其寫回文件

它還關閉兩個函數調用之間的文件句柄,這意味著如果在兩個函數調用之間我們生成一個硬鏈接,它將首先從正常文件獲取安全描述符,用戶可以寫入該文件。

然后,它將復制這些權限,并將此安全描述符應用于指向完全不同文件的硬鏈接。

成功的運行將如下所示:

SandboxEscaper披露漏洞POC研究報告

您可以在QuerySecurityFile之后和SetSecurityFile之前看到正在創建的硬鏈接。可以使用IDA查看(wer.dll)并確認。很明顯遭受攻擊的功能是:UtilAddAccessToPath

 2.      重現步驟:

a. 將AngryPolarBearBug.exe和report.wer復制到同一文件夾中

b. 運行AngryPolarBearBug.exe 

此漏洞由于觸發條件難以把控導致成功幾率較低(觸發錯誤可能需要15分鐘,如果花了太長時間,需要關閉程序,清理緩存數據文件夾),并且早些時候已被修復。

Windows任務計劃零日

1.    利用條件

Windows10有兩個tasks文件夾:

a.    C:\ Windows\tasks

b.    C:\Windows\SYSTEM32\tasks

第一個是由于歷史遺留問題保留使用。第二個被win10任務調度程序使用。在過去(即windows xp),任務 “.job”文件格式將放在”c:\ windows \tasks”中。

如果在Windows 10上要將.job文件導入任務計劃程序,則必須將舊的“.job“文件先復制到”c:\ windows\tasks”中,并使用從舊系統復制的schtasks.exe和schedsvc.dll運行以下命令:

schtasks /change /TN”taskname” /RU username /RP password”

這將導致調用RPC“_SchRpcRegisterTask”,它由任務調度程序服務公開。觸發這個錯誤,可以直接調用這個函數,而不是必須要從windows xp復制schtasks.exe。

它首先在當前用戶權限下運行,但是當它遇到以下功能時:

int __stdcalltsched :: SetJobFileSecurityByName(LPCWSTRStringSecurityDescriptor,const unsigned __int16 *,int,const unsigned __int16 *)

它開始在NT AUTHORITY\ SYSTEM權限下運行

然后在c:\ windows\system32\tasks中創建的任務上調用SetSecurityInfo:

SandboxEscaper披露漏洞POC研究報告2.    重現步驟

a.    將polarbear.exe,bear.job,schtasks.exe,schtasks.dll從“poc files”文件夾復制到測試VM

b.    運行polarbear.exe,傳遞本地非管理員帳戶的用戶名和密碼。

要觸發此漏洞首先需要擁有正確的用戶名及密碼。但是,這并非什么難事,有很多黑客工具可以做到這點.

Windows安裝程序零日

1.    利用條件

在修復安裝Windows程序時,如果可以劫持該進程以將文件寫入Windows操作系統的未授權區域,則會有很短的時間間隔(競爭條件)。

這個msiexec / fa(修復安裝)操作的漏洞可用于植入惡意軟件并接管黑客最初只能訪問低權限帳戶的計算機。

2.    重現步驟

a.    運行polarbear.exe (確保 test.rbf 和 test.rbs 在同一目錄下)

b.    打開命令行安裝.MSI安裝程序 必須是 c:\windows\insatller 目錄下的,例如命令:”msiexec/fa c:\windows\installer\123123213.msi”

此漏洞復現也存在運氣成分,需要安裝時競爭條件恰到好處的觸發,同時快速點擊返回按鈕。

IE11沙盒逃離零日

1.    利用條件

整個執行流程較為簡單,通過com組件與ie通信執行硬編碼“<html><body><script>alert(‘wtf’);</script></body></html>”, 執行在此之前需要將target.link寫入到windows自帶的“%USERPROFILE%\Favorites“目錄下

2.    重現步驟

a.    InjectDll.exe PID TestDll.dll

此漏洞關鍵首先得成功獲取IE11進程句柄并成功注入目標模塊,從而執行惡意代碼。顯然這個零日不可被遠程利用,應被視為影響較小的問題。

Windows AppX部署服務零日

1.    利用條件

這是Windows AppX部署服務(AppXSVC)不正確處理硬鏈接的方式中的一個錯誤。來自于CVE-2019-0841,

利用漏洞首先檢查目標文件是否存在,如果存在,它將檢查其權限。由于我們使用Microsoft Edge進行此攻擊,因此它將終止Microsoft Edge以訪問settings.dat文件。

在Microsoft Edge被殺后,它將檢查“setting.dat”文件并將其刪除,以便創建指向所請求的目標文件的硬鏈接。一旦創建了硬鏈接,Microsoft Edge再次啟動以觸發漏洞。最后檢查是否確實為當前用戶設置了“完全控制”權限。

2019.4月份微軟推送補丁修復,但是仍可被利用。

2.    重現步驟

a.    運行polarbear.exe

b.    運行windowsappslpe.exe

此漏洞繞過微軟修復的CVE-2019-0841補丁。通過提前創建硬鏈接而后執行漏洞補丁之前EXP進行攻擊。

Windows AppX漏洞復現及詳細原理剖析

我們現在直接運行可執行文件polarbear.exe并對其利用原理進行剖析:

a.    目的是在系統數據目錄“%LOCALAPPDATA%”創建指定子目錄\\Packages\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\\Microsoft.MicrosoftEdge_44.17763.1.0_neutral__8wekyb3d8bbwe

以供攻擊利用

SandboxEscaper披露漏洞POC研究報告

成功執行:

SandboxEscaper披露漏洞POC研究報告

b.    使用NtOpenFile以對象屬性為OBJ_CASE_INSENSITIVE打開文件

SandboxEscaper披露漏洞POC研究報告

c.     使用ZwSetInformationFile設置文件屬性需要將FILE_LINK_INFORMATION結構體ReplaceIfExists字段設置為TRUE并將 FILE_INFORMATION_CLASS傳遞值為FileLinkInformation

SandboxEscaper披露漏洞POC研究報告

d.    最終調用已封裝好的函數CreateNativeHardlink好的傳遞需要創建的硬鏈接文件 L”\\Packages\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\\Microsoft.MicrosoftEdge_44.17763.1.0_neutral__8wekyb3d8bbwe\\bear3.txt”以及

需要修改權限的文件“C:\\Windows\\win.ini”

SandboxEscaper披露漏洞POC研究報告

此時我們便可以看到創建硬鏈接成功:

SandboxEscaper披露漏洞POC研究報告

至此,整個繞過補丁的利用環境已構建完畢。 但我們仍需使用CVE-2019-0841來達到本地提權的攻擊效果。

此漏洞主要圍繞著DCAL引發的事件,簡單地來說,如果Windows對象沒有自主訪問控制列表(DACL),則系統允許每個人完全訪問它。如果對象具有DACL,則系統僅允許DACL中的訪問控制條目(ACE)明確允許的訪問。

讓我們關注“settings.dat” 這是Microsoft Edge 的文件,也是此漏洞利用過程起到關鍵作用的文件,所有WindowsApps用戶配置文件都存儲在當前用戶的AppData文件夾下:

SandboxEscaper披露漏洞POC研究報告

Windows 10已經安裝了許多默認應用程序,每個包都有一個settings.dat文件,如前所述。

NT AUTHORITY\SYSTEM使用此文件來寫入任何配置更改。啟動Windows應用程序后,系統會使用OpLock操作(獨占鎖定)來阻止其他進程在應用程序運行時使用/訪問該文件。

在我們啟動Microsoft Edge的情況下,settings.dat文件會被進程以NT AUTHORITY\SYSTEM打開,可以在下面的屏幕截圖中看到:

SandboxEscaper披露漏洞POC研究報告SandboxEscaper披露漏洞POC研究報告

打開后,將按以下方式執行一些基本完整性檢查:

a.    檢查文件權限,如果文件權限不正確,使用正確的文件權限更正

b.    讀取文件內容,如果內容已損壞,則刪除該文件

c.     通過從“C\Windows\System32\settings.dat”復制設置模板文件來重新配置

d.    繼續啟動Windows相關應用程序

所以執行POC的程序至少會做到以下三點:

(1)    利用漏洞首先檢查目標文件是否存在,如果存在,它將檢查其權限。由于我們使用Microsoft Edge進行此攻擊,因此它將終止Microsoft Edge以訪問該settings.dat文件。

(2)    在Microsoft Edge被殺之后,它將檢查“setting.dat”文件并將其刪除,以便創建到所請求的目標文件的硬鏈接(win.ini)

(3)    一旦創建了硬鏈接,Microsoft Edge再次啟動以觸發漏洞。最后檢查是否確實為當前用戶設置了“完全控制”權限。

以下為執行結果示意圖:

執行前:

SandboxEscaper披露漏洞POC研究報告

執行后:

SandboxEscaper披露漏洞POC研究報告

漏洞總結及安全建議

通過上述分析我們可以知道,以下是觸發漏洞的最基本先決條件:

NT AUTHORITY\SYSTEM應對目標文件具有“完全控制權”

低權限用戶或Users組應具有“讀取/執行”權限

安全建議:

下載并更新Windows系統補丁修復漏洞

不隨意運行來歷不明的程序

安裝知名殺毒軟件并保持最新版

*本文作者:木星安全實驗室,轉載請注明來自FreeBuf.COM

更多精彩
相關推薦
發表評論

已有 3 條評論

取消
Loading...
木星安全實驗室

這家伙太懶,還未填寫個人描述!

3 文章數 0 評論數 1 關注者

特別推薦

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 重庆百变王牌走势图 乒乓球世界杯 下载qq麻将手机版 广东南粤36选7历 全国十大最安全的理财平台 大跌的股票有大涨的 韩国快乐8开奖结果 闲来麻将官网下载 河北20选5开奖查询 金篮子配资 浙江6十1开奖号码查询 精准平特一肖免费资料大全 经典单机麻将免费下 甘肃新11选5任五开奖 吉林快三开奖的走势 什么股票论坛好 河南快赢481开奖公告