单个森林之PetitPotam漏洞利用

科技   2024-07-30 17:23   江苏  

点击星标,即时接收最新推文

本文选自《内网安全攻防:红队之路》

  

Petitpotam漏洞通过使用MS-EFSRPC协议触发一个认证,使得域用户可以接管域控。该漏洞是由于EFSRPC API的EfsRpcOpenFileRaw函数中的路径检查不完善,导致攻击者可以在fileName参数中传递任何值,如攻击者的IP地址,以强制目标主机发起一个认证,如下图所示。

 Petitpotam漏洞代码

为了能接管域控制器,我们需要利用这个漏洞和NTLM中间人攻击来捕获所需的哈希或证书。这种攻击的理想的目标就是配置了接受NTLM验证的服务器,比如Active Directory Certificate Services (AD CS)在安装了Web Enrollment roles角色时。   

一个典型的攻击场景是强制域控制器向配置了NTLM中继的攻击者机器进行认证。然后认证被转发到CA,请求一个证书。当CA为域控创建证书后,攻击者使用NTLM中继捕获它,并用来伪冒域控的机器帐户。

整体攻击步骤为:

•使用PetitPotam强制域控(cn-dc01)向我们的攻击主机(kali)发起一个认证。

•将认证请求转发到CA(CA01),为域控请求一个证书。

•在攻击主机(kali)上使用NTLM中继捕获创建的证书。

•使用证书请求TGT,进行权限提升。

在进行攻击前,先将kali的dns服务器设置为域控cn-DC01的IP。

首先在子域dev.ms08067.cn以dev\dave权限,使用certutil查看域环境是否存在证书服务及具体信息,如下图所示:

查看域环境证书服务器信息

可以看到当前域环境中存在证书服务,且certificate enrollment site为:

http://ca01.ms08067.cn/certsrv/certrqad.asp。

然后配置NTLM Relay,如下图所示。这里使用使用Impacket的NTLMrelayx,为了成功执行转发,需要使用证书服务器的FQDN(使用IP地址可能不会成功)。模板选择"Domain Controller"(如果模板启用,我们将能捕获创建的证书。默认是启用的):

ntlmrelayx.py -t http://ca01.ms08067.cn/certsrv/certrqad.asp -smb2support --adcs --template DomainController


配置NTLM Relay

使用PetitPotam(https://github.com/topotam/PetitPotam)

强制域控向我们的攻击主机发起一个认证请求。需要两个参数,第一个为攻击主机IP,第二个为域控IP。如果攻击成功,我们将能捕获到CA颁发给域控的证书,如下图所示:

PetitPotam强制域控发起认证

在捕获到证书后,我们可以使用Rubeus请求一个TGT,并注入到内存,如下图所示:

Rubeus.exe asktgt /user:CN-DC01$ /ptt /dc:192.168.3.10 /domain:ms08067.cn /certificate: MIIRZQIBAzCCER8GCSqGSIb3DQEHAaCCERAEghEM...


使用域控账户证书请求TGT

接下来,就可以使用Mimikatz执行dcsync,获得根域域控krbtgt账户的密码hash,如下图所示:   

执行dcsync

在有了krbtgt的hash后,我们可以制作黄金票据,执行横向移动等操作。当然也可以通过dcsync提取域管理员密码hash直接执行横向移动。


—  实验室旗下直播培训课程  —



和20000+位同学加入MS08067一起学习


             

 

 

 

    

Ms08067安全实验室
“Ms08067安全实验室”致力于网络安全的普及和培训!
 最新文章