matt graeber (@mattifestation) 和我最近在研究windows 10,我們發現了乙個相當有趣的方法來繞過使用者賬戶控制(user account control, uac,詳細內容可以參考這裡)。現在已經存在幾種公開的uac繞過技術 ,其中大多數需要乙個許可權檔案副本,使用ifileoperation com物件或者wusa提取來進行dll攔截。你可以從這裡(作者@hfiref0x)參考一些公開的繞過方法來深入研究一下。我們這次所使用的技術和以往的方法不同,我們提供了乙個有效的替代方案,它並不依賴於許可權檔案副本或任何**注入。
在windows上調查載入的情況的乙個常用技術是使用sysinternals process monitor來分析乙個正在執行的程序的具體行為。理解了windows 10上存在的一些預設任務排程程式和它們之間的通訊行為之後,我們發現有乙個名為「silentcleanup」的任務排程程式被配置為對無許可權使用者可優先執行,但是是在高完整性級別下執行。為了弄清楚,我們簡單把任務逐個檢視了一遍,發現「在最高許可權下執行」這一安全選項是在低等級使用者賬戶(比如「users」)中檢查的。
仔細檢視procmon,我們發現實際的程序是由計畫任務cleanmgr.exe啟動的,自動提權是由於任務配置設定成了「在最高許可權下執行」。
讓我們更進一步**。當程式cleanmgr.exe執行時,它會在位址「c:\users\\appdata\local\temp」下建立乙個使用guid數值進行命名的新資料夾。
cleanmgr.exe建立了臨時資料夾之後,它會複製多個dll並連同「dismhost.exe」
一起放到新資料夾中:
在複製dismhost.exe和它的dll檔案到目錄「c:\users\\appdata\temp\」後,cleanmgr.exe從最新建立的路徑下啟動dismhost.exe作為乙個高完整性級別的程序:
dismhost.exe從「c:\users\\appdata\local\temp\」中啟動後,它開始以特定順序從同一資料夾中載入dll:
因為目前完整性級別為中等的使用者有user的%temp%目錄的寫許可權,通過dismhost.exe劫持dll並在乙個高完整級別程序中執行**已經可以實現。這就是大家所熟知的「bypassuac」uac繞過攻擊。
因為現在的情況是一種競爭的狀態,我們需要在dismhost.exe載入目標dll之前把它替換掉。我們更加仔細地測試了整個過程,並發現「logprovider.dll」是dismhost.exe載入的最後乙個dll,這給了我們乙個劫持的最佳時機。有了這個資訊,我們可以使用乙個wmi(windows management instrumentation)事件來監視「c:\users\\appdata\local\temp\」是否被建立,然後分配給wmi事件乙個動作,通過複製我們的「惡意」dll到 「c:\users\\appdata\local\temp\」 中並將其命名為「logprovider.dll」,從而劫持 「logprovider.dll」 。因為這一動作在dismhost.exe載入dll之前發生,dismhost.exe就會載入我們的dll而不是原來的那個。
一旦dismhost.exe載入了我們的dll,它就會以高完整性級別載入,從而允許我們繞過uac並獲取高完整性級別程序的**執行許可權。
在隨後的測試中我們發現,此方法不適用於標準user賬戶,因為cleanmgr.exe不會從%temp%中提取任何檔案。當該程式在標準使用者的低完整性或中等完整性級別下執行時,任務會在中等完整性級別執行,無法通過這個進行提權。
matt graeber (@mattifestation)寫了乙個很棒的 powershell驗證指令碼,用來註冊乙個wmi事件監視cleanmgr.exe是否建立guid資料夾,一旦檢測到,該指令碼會複製特定dll到guid資料夾並名為「logprovider.dll」。只要dismhost.exe載入了「logprovider.dll」,我們就能保證它載入的是我們的惡意dll而不是原來那個合法的,這樣就實現了uac的繞過並且給我們在高完整性許可權下執行**的許可權。你可以通過以下鏈結檢視指令碼碼
如果你想檢驗一下這個方法,你只需要這個驗證指令碼和乙個擁有dllmain標準輸出的dll即可。你可以自己建立乙個dll,或者使用乙個簡單的messagebox
:這個方法不同於其他公開的方法,它有以下幾個優點:
1. 該方法不需要任何注入過程,這意味著攻擊的特定行為不會被安全監測工具標記。
2. 不需要任何許可權檔案副本。大多數uac繞過都需要許可權檔案副本以便在安全的位置獲取惡意dll來建立dll劫持。因為任務排程程式複製了我們需要的東西到%temp%中,我們就不需要任何許可權檔案副本了。
3. 此方法在執行後會自動清理。在任務排程完成後(這時我們的惡意dll已經載入完畢),任務會自動刪除建立在%temp%的guid資料夾(和其中的檔案)。
4. 此方法在uac級別設定為最高(「總是提醒」)的情況下適用,因為任務被設定成在「最高許可權」下執行。大多數已有的uac繞過方法依賴於ifileoperation com物件來複製許可權檔案。ifileoperation使得uac設定成「總是提醒」且即刻執行,這導致了提權檔案副本失效:
該問題已經於2023年7月20日反映給微軟安全響應中心(msrc)。如我們所料,他們回應uac不屬於安全檢測界限之一,如這裡所述,這並不能被認定為安全漏洞。雖然這不算漏洞,但它確實能讓攻擊者使用各種不同於以前的繞過方式進行提權,並且指出了多個位置或者檢查點需要被監控來觀察攻擊者的行為。
此問題可以通過使任務失效或者移除最高許可權執行程式的請求來解決。另外,如果你想要檢測這種攻擊,你可以利用方法/簽名來尋找新的wmi,這是用來監控攻擊成功過程中新資料夾的建立這個步驟,因為肯定會有這一步。結合app/dll白名單監控反常模組的載入(例如sysmon event id 7)也會限制這種攻擊的成功。
Win10磁碟整理在哪裡?Win10磁碟整理怎麼用
首先,請大家在win10系統桌面上對著 站擊右鍵,在彈出的選單中點選選擇 屬性 按鈕,開啟 站屬性頁面。開啟 站屬性設定頁面之後,請確保沒有關閉 站功能,即選擇檔案刪除操作之後是將檔案放入 站而非直接刪除,如果開啟直接刪除檔案功能的話,win10系統中的磁碟清理功能將預設處於關閉狀態。接下來,請大家...
Win10整理磁碟碎片和優化SSD硬碟方法
現在,使用win10的使用者越來越多了。不少人都在問,win10怎麼整理磁碟碎片和優化ssd硬碟?磁碟碎片整理程式一直以來都是windows系統元件之一,這個程式能夠優化磁碟檔案,讓硬碟更加快速有序執行。進入win10時代,ssd硬碟大行其道,如何才能優化固態硬碟,讓系統執行快到飛起來呢?一起來看看...
win10讓人憤怒的磁碟占用100 問題
公升級win10以後其他還好。但是系統經常響應非常非常慢,後來觀察發現每次非常卡的時候我的磁碟占用就是100 的。我是技嘉的b85主機板。1盤是128g的東芝ssd gpt 2盤是wd的3tb hdd。ssd從來不會,hdd經常100 占用。卡的簡直不能操作了。完全重灌系統後現象依舊。掃瞄磁碟一切都...