一个用于测试 ZeroLogon 漏洞(CVE-2020-1472)的实验环境。 它包含一个使用 Impacket 库测试漏洞的 Python 脚本,以及一台配置为域控制器(DC)的虚拟机(VM),运行 Windows Server 2019。
该脚本尝试执行 Netlogon 身份验证绕过。 成功执行绕过后脚本将立即终止,不进行任何 Netlogon 操作。 当 DC 已修补时,检测脚本会在发送多对 RPC 调用后放弃,并得出目标不脆弱(假阴性概率为 0.04%)的结论。
可选
只需输入 vagrant up 即可加载一个脆弱的 Windows Server 2019 版本作为虚拟机。
然后,按照此教程将虚拟机配置为域控制器。
最后,针对 DC 发起攻击(zerologon_tester.py)。
建议使用 Docker 化版本或在虚拟环境中运行此攻击。
Docker 选项。 运行:
# 注意:在 Windows 上,你可能需要启用 `Hyper-V` Windows 功能。
# 注意2:在 Windows 上,你可能需要切换到 `Linux 容器`。
$ docker build -f Dockerfile . -t zerologon
# 此命令在地址 192.168.33.10 的域 VAGRANT 的 DC 上运行 zerologon 测试
$ docker run zerologon VAGRANT 192.168.33.10
VirtualEnv 选项。 运行:
$ python3 -m virtualenv zerologon
$ zerologon/Scripts/Activate.ps1
# 注意:这可能会给你的防火墙带来一些问题!!
$ pip install git+https://github.com/SecureAuthCorp/impacket
$ pip install -r requirements.txt
$ python zerologon_tester.py VAGRANT 192.168.33.10
此攻击的输出应类似如下:

此脚本仅用于测试攻击的可行性,不会以任何其他方式利用服务器。 脚本不会对 DC 进行任何更改。 如果你对如何实现 PoC 攻击感到好奇,请查看此文档或类似文章。
脚本目标可用于针对 DC 或备份 DC。它很可能也适用于只读 DC,但尚未测试。DC 名称应为其 NetBIOS 计算机名。如果此名称不正确,脚本可能会失败并出现 STATUS_INVALID_COMPUTER_NAME 错误。关于此漏洞的白皮书将发布在此处。
注意: 如果出现问题并收到
STATUS_INVALID_COMPUTER_NAME错误,请运行nbtstat -A 192.168.33.10,这将让你了解该地址的情况。否则,你始终可以通过 ping 命令(ping 192.168.33.10)测试主机是否可达该机器。注意2: 如果攻击失败,可能是机器已安装了安全更新。检查更新并移除从 2020 年开始看起来像
安全补丁的任何内容。