有缺陷的加密协议取代了Netlogon协议中的身份验证机制。未经验证的攻击者可以利用Zerologon漏洞将域控制器机器的计算机账户密码设置为空(null)(NT哈希 = 31d6cfe0d16ae931b73c59d7e0c089c0)。这样一来,攻击者可以使用生成的凭据访问域控制器机器,并获取其他用户的凭据。通过获取授权用户的凭据,可以在域控制器机器上以高权限建立会话。
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
python3 ADZero.py dc_ip
使用由Privia Security团队开发的ADZero工具,可以在存在Zerologon漏洞的域控制器机器上以nt authority\system权限获得命令提示符会话。
执行python3 ADZero.py dc_ip命令后,即可在IP地址为dc_ip的域控制器机器上获得命令提示符会话。
ADZero工具会发送一个凭据为空的SMB登录请求,以获取目标域控制器机器的dc_name(计算机名)和dom_name(域名)信息。从响应中,可以提取出域控制器机器的dc_name(计算机名)和dom_name(域名)。
利用dc_name(计算机名)、com_name(计算机名后添加$符号形成的计算机账户)以及dc_ip(域控制器IP地址)来触发漏洞。通过向Netlogon远程协议发送请求触发漏洞后,com_name(计算机账户)的密码被设置为空(NT哈希 = 31d6cfe0d16ae931b73c59d7e0c089c0)。
使用Impacket模块中的secretdump.py模块,利用com_name(计算机账户)、dom_name、dc_ip以及为com_name生成的空密码,从域控制器机器中转储出Administrator用户的密码信息,格式为LM:NTLM哈希。此外,转储过程中获取的LM:NTLM哈希会被写入名为out的文件中。
将获取的LM:NTLM哈希与Impacket模块中的smbexec.py模块结合使用,即可在域控制器机器上获得命令提示符会话。这种将LM:NTLM哈希作为密码使用的技术称为“传递哈希”。通过在Metasploit框架中使用exploit/windows/smb/psexec漏洞模块,利用写入out文件中的LM:NTLM哈希值,还可以在域控制器机器上获得Meterpreter会话。
