玄-去除Defender令牌權限


本文展示了Windows存在的一個小bug,該問題允許攻擊者繞過保護反惡意軟件(AV/EDR)免受各種形式攻擊的Windows安全機制(Windows Protected Process Light)。

Protected Anti-Malware Services

Windows 8.1 引入了受保護的反惡意軟件服務的概念。這使經過特殊簽名的程序在windows上安全運行,免受篡改和惡意終止,即使是管理員用戶也不可以。Microsoft 文檔(已存檔)將其描述為:

In Windows 8.1, a new concept of protected service has been introduced to allow anti-malware user-mode services to be launched as a protected service. After the service is launched as protected, Windows uses code integrity to only allow trusted code to load into the protected service. Windows also protects these processes from code injection and other attacks from admin processes.

目的是防止惡意程序禁用用戶機器上的防病毒軟件然后肆無忌憚地運行。在下文中,我們將它們稱為 Protected Process Light(PPL)。為了更深入地了解,Alex IonescuNoSuchCon 2014的演講中詳細介紹了受保護的進程。

為了能夠作為 PPL 運行,殺毒廠商必須向微軟申請、證明其身份、簽署具有效力的法律文件、加載Early Launch Anti-Malware (ELAM)驅動程序、通過測試套件運行並提交給微軟,從而獲得一個特殊的身份驗證簽名,這不是一個簡簡單單的過程。當以上操作完成后,反惡意程序廠商就可以使用ELAM 驅動程序令 Windows 將其軟件產品作為 PPL 運行,達到保護其進程服務的目的。

在 Windows 10 上以SYSTEM權限啟動的CMD窗口中,運行以下命令來查看 PPL 的運行情況:

# Protected Process Light in Action
C:\WINDOWS\system32>whoami
nt authority\system

C:\WINDOWS\system32>whoami /priv | findstr "Debug"
SeDebugPrivilege                Debug programs                    Enabled

C:\WINDOWS\system32>taskkill /f /im MsMpEng.exe
ERROR: The process "MsMpEng.exe" with PID 2236 could not be terminated.
Reason: Access is denied.

可以看到,即使用SYSTEM 權限 SeDebugPrivilege 運行也無法終止 PPL Windows Defender 反惡意程序服務 (MsMpEng.exe)。這是因為非PPL進程(如 taskkill.exe)無法使用OpenProcess等API獲取對PPL進程的PROCESS_TERMINATE訪問權限的句柄。

總之,Windows 保護 PPL 進程免受非 PPL 進程的影響,即使是那些具有管理權限的進程。這是微軟目前(截至本文發表時間2022年3月8日)依然施行的有效的安全策略。

Windows令牌

通常,當用戶運行一個進程時,該進程會以當前用戶的令牌運行,並且可以執行當前用戶權限可執行的任何操作。可以將 Windows 令牌(Token)視作一種安全憑證,它規定了用戶當前權限及可訪問的內容。令牌中一些最重要的數據包括:

  • User identity
  • Group membership (如 Administrators)
  • Privileges (如 SeDebugPrivilege)
  • Integrity level

令牌(Token)是 Windows 授權的關鍵,每當Windows線程訪問某個安全對象時,操作系統都會執行安全檢查。它將線程的有效令牌與正在訪問的對象的安全描述符(Security Identifier,SID)進行比對。有關令牌知識詳情可見 Elastic 博客文章Microsoft 訪問令牌文檔介紹 Windows 令牌

令牌沙箱化

某些應用程序(例如 Web 瀏覽器)已多次成為攻擊目標。由於瀏覽器進程共享瀏覽器的令牌,一旦攻擊者成功對瀏覽器進行漏洞攻擊,攻擊載荷就可以執行瀏覽器進程可以執行的任何操作。

為了減輕此類攻擊造成的危害,Web瀏覽器通過創建一個受限的安全執行環境,將其大部分程序代碼移至較低權限的進程中執行。當運行在沙箱中的程序需要在系統上執行特殊操作時,例如下載文件,它可以請求非沙箱的代理進程替其執行操作,這樣即使一個沙箱化進程被利用,則只會對沙盒可訪問的資源進行攻擊利用。

雖然現在的沙箱技術涉及操作系統中多個安全機制,但最重要的機制之一是低權限或受限令牌,使用 CreateRestrictedToken 等API即可創建新的低權限沙箱令牌。有時,某些沙箱化進程需要在執行一些初始化后將自己鎖定,但是AdjustTokenPrivilegesAdjustTokenGroups API允許這種調整。這些系統API能夠使現有進程“喪失”令牌中privilegesGroups的訪問權限,這樣就無法恢復令牌中的原有權限,除非創建新令牌。

常提到的沙箱是 Google 的Chromium,而如今一些安全產品也開始涉足沙箱技術。

獲取令牌

Windows提供 OpenProcessToken API 來啟用與進程令牌的交互,但是MSDN中聲明必須擁有 PROCESS_QUERY_INFORMATION 權限才能使用 OpenProcessToken。上文提到過,非PPL進程無法調用系統API獲取到訪問PROCESS_TERMINATE權限句柄,只能獲得對 PPL 進程的 PROCESS_QUERY_LIMITED_INFORMATION 訪問權(注意是 LIMITED),所以從開發文檔上看並不能獲得訪問 PPL 進程令牌的句柄。但是,國外大佬通過底層反編譯內核代碼已經解釋過實際與文檔介紹不符,僅使用 PROCESS_QUERY_LIMITED_INFORMATION,我們就可以成功打開受保護進程的令牌。

令牌(Token)本身也是安全對象,需要定期訪問檢查。對照正在被請求訪問的令牌安全描述符(Security Identifier,SID),檢查嘗試訪問令牌的線程的有效令牌(TOKEN_QUERYTOKEN_WRITETOKEN_IMPERSONATE 等)。有關訪問檢查的更多詳細信息,請參閱Microsoft文章“How Access Checks Work”

利用思路

Process Hacker 提供了可視化的令牌安全描述符。查看 Windows Defender (MsMpEng.exe) 的令牌,我們看到以下自由訪問控制列表(Discretionary Access Control List):

請注意,只有 SYSTEM 用戶可以完全控制令牌。這意味着,除非有其他機制保護令牌,否則以 SYSTEM 身份運行的線程就可以修改令牌。如果可以進行此類修改,則違背了“PPL is protected from administrators”的設計初衷。

實現

具體代碼已經托管在Github上,歡迎star

可以看到,左側是默認情況下Windows Defender所擁有的權限,右側是執行POC后的權限情況,並且右下方的 Integrity 已經被成功置為 Untrusted,此時Defender已形同虛設,我們可以大膽的執行mimikatz等后滲透操作了。

注意,這項技術不局限於Defender,其他反惡意軟件產品同樣可以使用此方法繞過,實戰中針對不同EDR產品做不用場景分析,靈活應對,才是真正的紅隊思想。

最后,我想說的是,沒有一直免殺的惡意程序,只有不會免殺的偽開發者。

Reference
https://blog.51cto.com/281816327/1409081
https://blog.csdn.net/wzsy/article/details/50923549
https://www.sohu.com/a/112545600_457968
https://www.tiraniddo.dev/2017/05/reading-your-way-around-uac-part-2.html
https://elastic.github.io/security-research/whitepapers/2022/02/02.sandboxing-antimalware-products-for-fun-and-profit/article/#
https://blog.csdn.net/weixin_39614546/article/details/111016652


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM