CVE-2020-1472是微軟八月修復的一個嚴重的權限提升漏洞(並於昨天2020年9月15日secura發布了相關的漏洞細節,隨后相關exp被構造發布),通過Netlogon 遠程協議 (MS-NRPC) 建立與域控制器連接安全通道時,存在特權提升的利用點,該漏洞的CVSS分高達10分,攻擊者只需要在內網中有一個立足點,就可以遠程獲取域控的管理員權限。
漏洞的原理這里不在贅述,secura的pdf分析得很好,簡單來說就是Netlogon使用的AES認證算法中的vi向量默認為0,導致攻擊者可以繞過認證,同時其設置域控密碼的遠程接口也使用了該函數,導致可以將域控中保存在AD中的管理員password設置為空,這里主要說一下整個利用的過程,主要來說為以下幾步。
- 通過漏洞腳本置空域控保存在AD中的密碼
- 通過secretsdump.py獲取域控上的用戶hash
- 通過該hash使用wmiexec.py登錄域控獲取一個shell
- 通過shell獲取本地保存的原hash key
- 通過獲取的hash key恢復置空的域控密碼
首先配置好一個測試域控,攻擊機上需要python3.7以上,同時安裝impacket,impacket需要安裝最新版(v0.0.22.dev1),該版本中更新了函數NetrServerPasswordSet2,這個函數會在利用中使用,impacket提供了利用腳本需要使用的庫,同時其中包含的secretsdump.py/wmiexec.py腳本分別用於密鑰的dump還原操作及開啟一個shell,這里主要使用以下兩個poc,其中利用置空腳本使用dirkjanm提供的(dirkjanm也提供了相關的置空還原腳本但是我沒有成功),而恢復密鑰則使用risksense提供的版本。
https://github.com/dirkjanm/CVE-2020-1472
https://github.com/risksense/zerologon
首先第一步通過利用腳本將域控保存在AD的密碼置空,注意該置空操作是對域控服務器有一定影響的,目前來看就是利用后重啟回很慢,secura提到的dns服務受影響目前沒有遇到。
用secretsdump.py通過Domain Replication Service (DRS)協議獲取域控上相關的hash,其包括administrator hashes。
通過該hash配合wmiexec.py 完成一次pass-the-hash attack,登錄該DC獲取一個shell。
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe ad.test.com/Administrator@192.168.209.129
登錄效果如下,並執行以下命令,以獲取本地保存的原置空hash。
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save
通過secretsdump解析保存在本地的nt hash,為其中解析后的$MACHINE.ACC:plain_password_hex部分。
secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
最后運行risksense的恢復腳本將$MACHINE.ACC:plain_password_hex中的原來nt hash恢復,可以看到此時再用secretsdump.py嘗試獲取域控上的用戶hash已經是失敗了。
轉載請注明出處
參考鏈接:
https://github.com/dirkjanm/CVE-2020-1472
https://github.com/risksense/zerologon
https://github.com/VoidSec/CVE-2020-1472
https://www.secura.com/blog/zero-logon