
CVE-2020-1472
CVE-2020-1472 - Zero Logon 漏洞 Python 实现
描述
- 一个使用 Impacket 库测试 CVE-2020-1472 - Zerologon 漏洞的 Python 脚本(感谢 Secura 研究)。
- 该缺陷源于 Windows 域控制器上使用的 Netlogon 远程协议,该协议用于与用户和机器认证相关的各种任务。
- 具体来说,问题存在于 Netlogon 会话中 AES-CFB8 加密的使用。AES-CFB8 标准要求明文的每个“字节”都有随机化的初始化向量 (IV),以防止攻击者猜测密码。然而,Netlogon 的 ComputeNetlogonCredential 函数将 IV 设置为固定的 16 位 – 而非随机化 – 这意味着攻击者可以控制解密后的文本。
- "由于错误使用 AES 操作模式,可能冒充任何计算机帐户(包括[域控制器]本身)的身份,并在域中为该帐户设置空密码,”根据 Secura 研究人员的说法。

- 该脚本尝试执行 Netlogon 认证绕过。成功执行绕过时脚本将终止。
- 当域控制器已修补时,脚本将在发送 2000 对 RPC 调用后停止(目标不易受攻击,误报概率为 0.04%)。
- 请注意,默认情况下这会更改域控制器帐户的密码。这允许进行 DCSync,但也会中断与其他 DC 的通信。
- 更多信息和原始研究请参见此处
前提条件
或从此处下载 impacket 版本。解压后,在放置文件的目录中运行:
用法
给定名为 DC-NAME、IP 地址为 X.X.X.X 的域控制器,按如下方式运行脚本:
python cve-2020-1472.py DC-NAME X.X.X.X
DC 名称是 NetBIOS 计算机名。如果此名称不正确,脚本将失败并显示 STATUS_INVALID_COMPUTER_NAME 错误。