在Windows 10中,微軟新增了一項名為“受控文件夾訪問”的功能,該功能可用于防止未知程序修改受保護文件夾中的文件。
而在上周舉行的DerbyCon安全會議上,一位安全研究人員則向大家展示了一種利用DLL注入來繞過受控文件夾訪問保護的方法。
使用DLL注入繞過受控文件夾訪問保護
受控文件夾訪問功能啟用后,將會監視應用程序對受保護的某些文件夾中的文件所做的任何更改行為,并且只允許被列入白名單的應用程序修改這些文件。白名單應用程序可以是你指定的應用程序,也可以是微軟默認列入白名單的應用程序。
在得知explorer.exe默認為受控文件夾訪問白名單程序后,富士通系統集成實驗室的安全研究員Soya Aoyama想出了一種,在啟動時將惡意DLL注入資源管理器的方法。由于資源管理器已列入白名單,因此在注入DLL時它將啟動并繞過勒索軟件保護功能。
當explorer.exe啟動時,它將加載HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers注冊表項下找到的DLL。‘
HKEY_CLASSES_ROOT樹是HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER中的注冊表信息的合集。執行合并時,Windows會以HKCU樹中的數據為優先級。
這意味著如果HKCU中存在密鑰,它將優先于HKLM中的相同密鑰,并且合并到HKEY_CLASSES_ROOT樹中的數據。如果這里你感到有點疑惑,那么你可以閱讀本文檔以獲取更多信息。
默認情況下,當資源管理器啟動時它會從HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{90AA3A4E-1CBA-4233-B8BB-535773D48449}\InProcServer32鍵加載Shell32.dll。要將惡意DLL加載到explorer.exe中,Aoyama只需創建一個HKCU\Software\Classes\CLSID\{90AA3A4E-1CBA-4233-B8BB-535773D48449}\InProcServer32 鍵,并將其默認值設置為惡意DLL即可。
現在,當Explorer.exe進程被殺死并重啟時,惡意DLL將被執行而不是Shell32.dll。以下是DLL注入到explorer.exe中的示例:
這不僅繞過了受控文件夾訪問保護,而且連Windows Defender也沒有檢測到該惡意行為。根據Aoyama的測試結果,不僅僅是Windows Defender,包括一些主流的防護軟件Avast,ESET,Malwarebytes Premium和McAfee都沒有檢測到該惡意行為。
有關更多詳細信息以及Aoyama在DerbyCon上的演講和演示內容,請觀看下面的視頻:
MSRC回應
Aoyama表示在他發表該演講之前,已向微軟安全應急響應中心負責任的披露了該漏洞,并包含了可用于繞過受控文件夾訪問保護的POC。
不過,遺憾的是微軟方面并不認為這是一個符合漏洞獎賞計劃或需要補丁的漏洞。
微軟在對Aoyama的回復中表示:”如果我沒理解錯的話,執行該攻擊的前提是攻擊者已經登錄到了目標賬戶,然后通過注冊表植入惡意DLL。由于你只能寫入HKCU,因此無法影響其他用戶,最重要的是執行該攻擊的前提是已經獲取目標系統的相應賬戶權限。另外,似乎也沒有權限提升方面的漏洞,因此我們并不認為這是一個實際存在的漏洞。”
但實際情況是,勒索軟件并不需要提權來加密受害者的計算機。惡意軟件開發人員可以使用其他漏洞或方法來執行vssadmin。這樣做可以在沒有管理權限的情況下安裝惡意軟件,并且仍可繞過受控文件夾訪問保護功能。
|