NetLogon服务攻击技术

NetLogon 服务攻击

概念&原理

背景

CVE-2020-1472 (NetLogon) 权限提升漏洞。通过该漏洞,未经身份验证的攻击者只需要能访问域控的 135 端口即可通过 NetLogon 远程协议连接域控并重置域控机器的 Hash,从而导致攻击者可以利用域控的机器账户导出域内所有用户的 Hash(域控的机器账户默认具有 DCSync 权限),进而接管整个域。该漏洞存在的原因是 Netlogon 协议认证的加密模块存在缺陷,导致攻击者可以在没有凭据的情况下通过认证。通过认证后,调用 NetLogon 协议中 RPC 函数 NetrServerPasswordSet2
来重置域控机器账户的 Hash,从而接管全域。

Tips:由于这个漏洞的广泛存在,所以如果在域内且拥有域内用户,直接使用 zerologon 利用脚本直接可以拿下域内所有账户凭据。

原理

NetLogon 服务

NetLogon 服务为域内的身份验证提供一个安全通道,在被用于执行与域用户和机器身份验证相关的各种任务,最常见的是让用户使用 NTLM 协议登陆服务器。默认情况下,Netlogon 服务在域内所有机器后台运行,该服务的可执行文件路径为 C:\Windows\system32\lsass.exe, 如图所示:

在这里插入图片描述

Netlogon 认证流程

Netlogon 客户端和服务端之间通过 Microsoft Netlogon Remote Protocol(MS-NRPC)来进行通信。MS-NRPC 并没有使用与他 RPC 相同的解决方案。在进行正式通信之前,客户端和服务端之间需要进行身份认证并协商出一个 Session Key,该值用于保护双方的后续的 RPC 通信流量。

简要的 NetLogon 认证流程如图所示:

在这里插入图片描述

漏洞根本原因

在 Credential 的生成中使用了 AES-CFB8,但其中 固定初始化向量(IV)ComputeNetLogonCredential 加密函数中使用时:

  1. 微软在实现 AES-CFB8 加密算法时,将 IV 硬编码为全零(0x00000000000000000000000000000000)而不是随机生成。
  2. 当 Session Key 加密全零 IV 时,有 1/256 的概率 使输出的第一个字节为 0x00
  3. 若第一个字节为 0x00,会导致后续加密过程产生 链式归零效应,最终输出全零凭证(Client/Server Credential = 0x0000000000000000)。

漏洞触发流程

  1. 攻击者伪造客户端
    向域控制器(服务端)发送认证请求,并 主动控制 Client Challenge = 0x0000000000000000
  2. 利用固定 IV 的缺陷
    服务端计算 Server Credential 时,使用全零 IV 进行 AES-CFB8 加密:
    • 若 Session Key 加密全零 IV 后的第一个字节为 0x00(概率 1/256),则 Server Credential 输出全零。
  3. 绕过凭证验证
    攻击者向服务端发送 全零的 Client Credential0x0000000000000000):
    • 服务端用本地计算的 Client Credential(可能因 IV 缺陷也为全零)与攻击者发送的值比较。
    • 若两者均为全零,则认证通过
  4. 暴力破解
    因协议未限制认证尝试次数,攻击者可 重复发送请求(平均 256 次) 直至匹配到全零凭证。

绕过签名校验

在认证通过后,后续客户端和服务端通信的流量都是通过 Session Key 进行加密的,但由于是利用的置零来绕过认证,所以攻击者并不知道 Session Key 的值,自然也就无法对后续的通信流量进行加密,而根据官方文档认证通过后,攻击者通过设置 RPC 调用的 Flags=0x212fffff 禁用通信签名,可以避免因无法加密后续流量而暴露。

漏洞影响的版本

  • Windows Server 2008 R2 for x64-based Systems Service Pack 1
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
  • Windows Server 2012
  • Windows Server 2012 (Server Core installation)
  • Windows Server 2012 R2
  • Windows Server 2012 R2 (Server Core installation)
  • Windows Server 2016
  • Windows Server 2016 (Server Core installation)
  • Windows Server 2019
  • Windows Server 2019 (Server Core installation)
  • Windows Server, version 1903 (Server Core installation)
  • Windows Server, version 1909 (Server Core installation)
  • Windows Server, version 2004 (Server Core installation)

攻击手法&操作

可以通过自动化脚本 zerologon-Shot 直接执行拿到目标域的所有凭据:

python3 zerologon-Shot.py DC_ip
#or
python3 zerologon-Shot.py domain/'dc_name$'@ip_addr

image

image

示例

参见:靶场-项目二

posted @ 2025-12-03 09:45  shinianyunyan  阅读(22)  评论(0)    收藏  举报