当前位置: 首页 > article >正文

TryHackMe-AD证书模板

AD Certificate Templates

SpecterOps 完成并作为白皮书发布的研究表明,可以利用配置错误的证书模板进行权限提升和横向移动。根据错误配置的严重性,它可能允许 AD 域上的任何低特权用户只需单击几下即可将其权限提升为企业域管理员的权限!

简介

在之前,我们利用AD证书来进行权限提升和持久化

ADCS是微软的公钥基础设施(PKI)实现。由于AD在组织中提供了一定程度的信任,因此它可以用作CA来证明和委托信任。AD CS用于多种用途,例如加密文件系统,创建和验证数字签名,甚至用户身份验证,这使其成为攻击者的有前途的途径。

我们不但能利用证书的缺陷进行权限提升。就像域持久化当中所说的,我们通过伪造根证书以让我们保持域访问权限,并且不受凭据轮换影响,由于伪造的证书不由CA颁发,所以根本无法将其吊销,只能吊销其被恶意利用的证书。

摘自 SpecterOps 白皮书

组织往往太大,无法让管理员手动创建和分发每个证书。这就是证书模板的用武之地。AD CS 的管理员可以创建多个模板,这些模板可以允许具有相关权限的任何用户自行请求证书。这些模板具有指示哪个用户可以请求证书以及所需内容的参数。SpecterOps发现,这些参数的特定组合可能具有令人难以置信的毒性,并被滥用于权限提升和持久访问!

证书模板枚举

我们可以利用sysinternels工具包的certutil来获取证书模板信息

certutil -v -template

我们正在寻找的特定毒性参数集具有以下内容:

  • 我们具有请求证书的相关权限或我们拥有具有这些权限的帐户的模板
  • 允许客户端身份验证的模板,这意味着我们可以将其用于 Kerberos 身份验证
  • 允许我们更改主题备用名称 (SAN) 的模板

相关权限

我们需要具有生成证书请求的权限才能使此漏洞利用起作用。它通常以AD组为单位分配权限

在这里插入图片描述

查看所有证书权限通常是明智的,因为它可能会将指向一个可以泄露的帐户的方向。

客户端身份验证

我们应该寻找具有Client Authentication的EKU, 因为该EKU允许我们利用其进行kerberos身份验证, 还有其他方法可以利用证书,但对于这个房间,这个 EKU 将是主要关注点。

在这里插入图片描述

指定SAN

我们需要验证模板是否允许我们(证书客户端)指定主题备用名称 (SAN)。SAN 通常类似于我们要加密的网站的 URL。例如:tryhackme.com。但是,如果我们有能力控制 SAN,我们就可以利用证书为我们选择的任何 AD 帐户实际生成 kerberos 票证

获取应设置为 1 的CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 属性标志。这表明我们可以自己指定 SAN

从certutil导出的证书模板当中,我们找到这么一个模板

  Template[31]:
  TemplatePropCommonName = UserRequest
  TemplatePropFriendlyName = User Request
  TemplatePropEKUs =
3 ObjectIds:
    1.3.6.1.5.5.7.3.2 Client Authentication
    1.3.6.1.5.5.7.3.4 Secure Email
    1.3.6.1.4.1.311.10.3.4 Encrypting File System

  TemplatePropCryptoProviders =
    0: Microsoft Enhanced Cryptographic Provider v1.0

  TemplatePropMajorRevision = 64 (100)
  TemplatePropDescription = User
  TemplatePropSchemaVersion = 2
  TemplatePropMinorRevision = a (10)
  TemplatePropRASignatureCount = 0
  TemplatePropMinimumKeySize = 800 (2048)
  TemplatePropOID =
    1.3.6.1.4.1.311.21.8.13251815.15344444.12602244.3735211.11040971.202.13950390.3651808 User Request

  TemplatePropV1ApplicationPolicy =
3 ObjectIds:
    1.3.6.1.5.5.7.3.2 Client Authentication
    1.3.6.1.5.5.7.3.4 Secure Email
    1.3.6.1.4.1.311.10.3.4 Encrypting File System

  TemplatePropEnrollmentFlags = 19 (25)
    CT_FLAG_INCLUDE_SYMMETRIC_ALGORITHMS -- 1
    CT_FLAG_PUBLISH_TO_DS -- 8
    CT_FLAG_AUTO_ENROLLMENT_CHECK_USER_DS_CERTIFICATE -- 10 (16)

  TemplatePropSubjectNameFlags = 1
    CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT -- 1

  TemplatePropPrivateKeyFlags = 1010010 (16842768)
    CTPRIVATEKEY_FLAG_EXPORTABLE_KEY -- 10 (16)
    CTPRIVATEKEY_FLAG_ATTEST_NONE -- 0
    TEMPLATE_SERVER_VER_2003<<CTPRIVATEKEY_FLAG_SERVERVERSION_SHIFT -- 10000 (65536)
    TEMPLATE_CLIENT_VER_XP<<CTPRIVATEKEY_FLAG_CLIENTVERSION_SHIFT -- 1000000 (16777216)

  TemplatePropGeneralFlags = 2023a (131642)
    CT_FLAG_ADD_EMAIL -- 2
    CT_FLAG_PUBLISH_TO_DS -- 8
    CT_FLAG_EXPORTABLE_KEY -- 10 (16)
    CT_FLAG_AUTO_ENROLLMENT -- 20 (32)
    CT_FLAG_ADD_TEMPLATE_NAME -- 200 (512)
    CT_FLAG_IS_MODIFIED -- 20000 (131072)

  TemplatePropSecurityDescriptor = O:LAG:S-1-5-21-3330634377-1326264276-632209373-519D:PAI(OA;;RPWPCR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;DA)(OA;;RPWPCR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;DU)(OA;;RPWPCR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;S-1-5-21-3330634377-1326264276-632209373-519)(OA;;CR;0e10c968-78fb-11d2-90d4-00c04f79dc55;;AU)(OA;;CR;a05b8cc2-17bc-4802-a710-e7c15ab866a2;;AU)(A;;CCDCLCSWRPWPDTLOSDRCWDWO;;;DA)(A;;CCDCLCSWRPWPDTLOSDRCWDWO;;;S-1-5-21-3330634377-1326264276-632209373-519)(A;;CCDCLCSWRPWPDTLOSDRCWDWO;;;LA)(A;;LCRPLORC;;;AU)

    Allow Enroll	LUNAR\Domain Admins
    Allow Enroll	LUNAR\Domain Users
    Allow Enroll	LUNAR\Enterprise Admins
    Allow Enroll	NT AUTHORITY\Authenticated Users
    Allow Auto-Enroll	NT AUTHORITY\Authenticated Users
    Allow Full Control	LUNAR\Domain Admins
    Allow Full Control	LUNAR\Enterprise Admins
    Allow Full Control	LUNAR\Administrator
    Allow Read	NT AUTHORITY\Authenticated Users

EKU中允许利用进行身份验证,同时还设置了CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,并且允许了domain users组进行注册

组合在一起,该模板允许我们可以控制SAN,为任何用户请求证书,并且进行身份验证

生成恶意证书

我们确定了可以利用的证书模板,是时候生成证书请求了。如果您愿意,您可以从命令行执行此步骤

通过mmc进行请求证书和导出证书都相当简单,这里我就不再记录

通过证书进行用户模拟

现在我们使用Rubeus来利用证书请求TGT

在这里插入图片描述

有了tgt,我们能做很多事情,我们可以通过各种工具来利用tgt,比如mimikatz

这里我们使用Rubeus修改账户密码

在这里插入图片描述

然后使用runas注入凭据,值得注意的是这里不要加/netonly参数,因为我们要进行本地访问而不仅仅只是网络通信需要使用注入的凭据

在这里插入图片描述


http://www.kler.cn/a/17685.html

相关文章:

  • 算法——长度最小的子数组(leetcode209)
  • 【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组
  • opencv常用api
  • 机器学习总结
  • 【设计模式】行为型模式(二):策略模式、命令模式
  • 除了 Mock.js,前端还有更方便的 Mock 数据工具吗?
  • 测试2:基础
  • MYSQL数据库
  • 《程序员面试金典(第6版)》面试题 16.11. 跳水板
  • Android多模块开发
  • Probabilistic and Geometric Depth: Detecting Objects in Perspective 论文学习
  • 配置KylinV10
  • Java中的互斥锁介绍
  • 如何挖到人生中第一个漏洞?保姆级漏洞挖掘教学
  • Docker
  • vim操作笔记
  • QT Graphics View坐标系转换
  • 一分钟快速实现Flask框架与SQLAlchemy框架的整合
  • 解释器模式
  • Unity 过场工具(Cutscene)设计(三)
  • 2023.5.7 第五十二次周报
  • B019_子查询篇
  • 从五一的旅游热潮看,该如何实现数字文旅的转型升级?
  • 浅聊一下cmake
  • 降维算法详解:理论及示例代码实现
  • 自学SQL入门(2)