揭秘域管理员提权路径:使用ESC5从DA到EA

admin 2024年10月18日23:20:27评论23 views字数 3512阅读11分42秒阅读模式
揭秘域管理员提权路径:使用ESC5从DA到EA

一种从域管理员提权到企业管理员的

全新攻击路径

1
 ESC5
ESC5被称为“易受攻击的PKI对象访问控制”。Will Schroeder和Lee Christensen编写的《Certified Pre-Owned》白皮书在讨论ESC5时提到了三类对象:

CA服务器的AD计算机对象(即通过S4U2Self或S4U2Proxy进行攻击)

CA服务器的RPC/DCOM 服务

容器中的子对象或子容器(例如证书模板容器、证书颁发机构容器、NTAuthCertificates 对象、注册服务容器等)

本文主要讨论第三项的工作原理,并演示如何使用它通过域信任提升到企业管理员
2
 ADCS LDAP 层次结构
ADCS在LDAP中存储有关CA和证书模板的信息,可以通过打开ADSI并连接到配置命名上下文(Configuration NC)来查看这些对象。然后向下检索
揭秘域管理员提权路径:使用ESC5从DA到EA

Configuration > Services > Public Key Services

下面是该层次结构的图表,包括将要滥用的对象:

揭秘域管理员提权路径:使用ESC5从DA到EA
"Certificate Templates"容器存储着可以发布到ADCS CA的模板。查看下述对话框,它能够帮助列出该容器中的所有模板对象:
揭秘域管理员提权路径:使用ESC5从DA到EA
"Enrollment Services"容器为每个CA存储一个pKIEnrollmentService对象。这些对象在其"Certificate Templates"属性上列出了已“发布”到CA的模板:
揭秘域管理员提权路径:使用ESC5从DA到EA
这是需要控制来执行ESC5 的两个LDAP对象,包括个证书模板和 pKIEnrollmentService对象。假设pKIEnrollmentService对象与受信任执行域身份验证的CA相关联,并且它要么作为根CA受信任,要么链接到根CA。
3
 Configuration NC的特殊现象
在展示如何进行攻击之前,需要了解一些基础知识。
配置命名上下文(Configuration NC)是Active Directory中存储着整个林范围配置数据的位置,子域在复制配置数据时必须从这里复制。Configuration NCDistinguished NameCN=Configuration,DC=example,DC=local,其中 DC=example,DC=local林根域的DN。
正如所预想的那样,如果配置中的某个对象在林根域处发生更改,则该更改会向下复制到林中的所有域。但您可能不知道的是,反之亦然:如果配置中的对象在子域中发生更改,则该更改会复制到林根。这是因为林中的每个可写域控制器都有一个林配置命名上下文(Configuration NC)的可写副本。
Jonas Bülow KnudsenMartin Sohn Christensen和 Tobias Thorbjørn Munch Torp 撰写了一篇博客文章https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research),文章提到他们滥用此机制,通过滥用指向站点的GPO链接,从子域中的域管理员升级到林根中的企业管理员。
里是一个实验环境,域管理员有一个名为ForestRoot.local的林根域和一个名为ChildDomain.ForestRoot.Local的子域:
揭秘域管理员提权路径:使用ESC5从DA到EA
连接到子域的配置命名上下文(Configuration NC)时,查看公钥服务容器的DN,然后查看配置命名上下文(Configuration NC)的域名:
揭秘域管理员提权路径:使用ESC5从DA到EA
这里查看的其实是林根对象的域本地副本。
现在看一下此对象的安全描述符:
揭秘域管理员提权路径:使用ESC5从DA到EA
作为子域中的域管理员无法控制此对象。您可以看到此处添加ACE的按钮变灰,但需要注意到SYSTEM主体对此对象具有完全控制权。
关闭MMC并重新打开它,但这次使用PsExec以SYSTEM用户身份启动MMC:
揭秘域管理员提权路径:使用ESC5从DA到EA

再次连接到域本地配置命名上下文(Configuration NC),导航到Public Key Services容器,并显示其安全描述符:

揭秘域管理员提权路径:使用ESC5从DA到EA

现在可以添加ACE。向该对象添加一个ACE,以便Bob - 子域中的用户 -完全控制该容器:

揭秘域管理员提权路径:使用ESC5从DA到EA

现在看一下Public Key Services容器,但这次是在林根域控制器上的配置命名上下文(Configuration NC)中

揭秘域管理员提权路径:使用ESC5从DA到EA

可以看到ACE已经从子域复制到林根

4
 整合

当想滥用LDAPPKI对象的控制时,至少需要以下能力来执行 ESC5:

能够将新模板添加到证书模板容器。

对与林根CA关联的pKIEnrollmentService对象的写入访问权限,以及与NT身份验证可信的CA关联或链接到的pKIEnrollmentService 对象。

接下来将向您展示如何将子域中的域管理员转换为林根目录中的企业管理员。通过之前的知识您可以看到,作为子域中的域管理员,可以完全控制Public Key Services容器。

虽然无法完全控制 pKIEnrollmentService 对象,但可以授予自己其控制权,因为该对象启用了权限继承:

揭秘域管理员提权路径:使用ESC5从DA到EA

但是默认模板禁用了权限继承,作为子域中的域管理员无法控制它们:

揭秘域管理员提权路径:使用ESC5从DA到EA

接下来看一下Certificate Templates容器本身的安全描述符:

揭秘域管理员提权路径:使用ESC5从DA到EA

使用PsExec以SYSTEM用户身份在子DC上启动MMC:

揭秘域管理员提权路径:使用ESC5从DA到EA

然后,将连接到域本地配置命名上下文(Configuration NC)并导航到Certificate Templates容器。现在可以完全控制该对象,其中包括添加子对象的能力。

可以用SYSTEM用户身份打开certsrv.msc,然后复制现有模板:

揭秘域管理员提权路径:使用ESC5从DA到EA

打开新模板的属性,通过在模板配置以下选项来执行ESC1:

1.向在子域中控制的主体授予注册权限。

2.将客户端身份验证包含在应用程序策略中。

3.允许证书请求中的 SAN。

4.未启用管理员批准或授权签名。

新模板写入企业配置命名上下文(Configuration NC)子域副本,然后它将自行复制到林根域控制器的配置命名上下文(Configuration NC)中
揭秘域管理员提权路径:使用ESC5从DA到EA

现在,需要将模板发布到CA可以通过滥用对该对象的完全控制,以子DC上的SYSTEM用户身份执行此操作:

揭秘域管理员提权路径:使用ESC5从DA到EA

当证书在此对象的certificateTemplates属性上列出时,证书就会“发布”到CA所以说,想模板“发布”到CA,要做的就是将模板添加到该列表中:

揭秘域管理员提权路径:使用ESC5从DA到EA

如果在林根域控制器上启动certsrv.ms 并检查CA的“证书模板”确实可以看到这个新的恶意模板现在已“发布”并可供使用:

揭秘域管理员提权路径:使用ESC5从DA到EA

现在准备工作已经完成可以执行 ESC1 将子域中的 DA 转换为林根域的 EA。

使用 Certify 来获取证书,指定恶意模板和想要模拟的企业管理员

揭秘域管理员提权路径:使用ESC5从DA到EA

揭秘域管理员提权路径:使用ESC5从DA到EA

使用openssl将证书转换为PFX:

揭秘域管理员提权路径:使用ESC5从DA到EA

通过 RDP 连接将 PFX 放到子域DC上,使用Rubeus为企业管理员用户获取 TGT:

揭秘域管理员提权路径:使用ESC5从DA到EA

可以通过wmic证明TGT是有效的:

揭秘域管理员提权路径:使用ESC5从DA到EA
5
 基于图表思考

用图表来描述这个攻击路径将有助于理解所有的横向移动关键点。

从林根域及其配置命名上下文(Configuration NC)中的相关对象开始,青色节点是根域,橙色节点是容器,紫色节点是C 对象:

揭秘域管理员提权路径:使用ESC5从DA到EA

现在添加与林根域具有双向信任的子域:

揭秘域管理员提权路径:使用ESC5从DA到EA

子域具有林根域的配置命名上下文(Configuration NC)域本地副本:

揭秘域管理员提权路径:使用ESC5从DA到EA

对子域中的域本地对象所做的更改将复制到林根域中的相应对象:

揭秘域管理员提权路径:使用ESC5从DA到EA

子域的域控制器上的SYSTEM用户可以完全控制从林根域的配置命名上下文(Configuration NC)复制到本地子域的某些对象:

揭秘域管理员提权路径:使用ESC5从DA到EA

"Certificate Templates"容器的完全控制意味着能够向该容器添加新对象。此处添加的任何新模板也会复制到林根域:

揭秘域管理员提权路径:使用ESC5从DA到EA

CA是林根域的根CA,林根域有着自己的用户,如ForestRootDA用户:

揭秘域管理员提权路径:使用ESC5从DA到EA

红色边缘显示从子域的域控制器到林根域管理员整个攻击路径:

揭秘域管理员提权路径:使用ESC5从DA到EA
6
 结语
这篇文章展示了攻击者如何使用ESC5,然后使用ESC1将子域中的DA转换为林根域处的EA。
还有一些问题需要花时间去思考:如果 ADCS 尚未部署怎么办?例如,如果完全控制"Public Key Services"容器但没有CA,是否可以引导必要的LDAP对象并颁发CA将DA转变为EA?

*本文部分节选自SpecterOps公司发表的《From DA to EA with ESC5》一文。

原文链接:

https://specterops.io/blog/2023/05/16/from-da-to-ea-with-esc5/

揭秘域管理员提权路径:使用ESC5从DA到EA
揭秘域管理员提权路径:使用ESC5从DA到EA
揭秘域管理员提权路径:使用ESC5从DA到EA

原文始发于微信公众号(中安网星):揭秘域管理员提权路径:使用ESC5从DA到EA

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月18日23:20:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   揭秘域管理员提权路径:使用ESC5从DA到EAhttps://cn-sec.com/archives/1877213.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息