白癜风医院哪家强 https://m.39.net/cm/a_z7pa4vg.html本文约字,阅读约需12分钟。在BlackHat21中,Specterops发布了ActiveDirectoryCertificateServices利用白皮书。尽管ADCS并不是默认安装,但在大型企业域中通常被广泛部署。本文分为上下两篇,结合实战,讲述如何在域环境中利用ADCS手法拿下域控,哪些对象ACL可用于更好的权限维持,并涉及ADCS的基础架构、攻击面、后利用等。1技术背景1.证书服务首先介绍一下PKI公钥基础结构。在PKI(公钥基础结构)中,数字证书用于将公密钥对的公钥与其所有者的身份相关联。为了验证数字证书中公开的身份,所有者需要使用私钥来响应质询,只有他才能访问。Microsoft提供了一个完全集成到Windows生态系统中的公钥基础结构(PKI)解决方案,用于公钥加密、身份管理、证书分发、证书撤销和证书管理。启用后,会识别注册证书的用户,以便以后进行身份验证或撤销证书,即ActiveDirectoryCertificateServices(ADCS)。再来看一下ADCS关键术语。
根证书颁发机构(RootCertificationAuthority)证书基于信任链,安装的第一个证书颁发机构将是根CA,它是我们信任链中的起始。
从属CA(SubordinateCA)从属CA是信任链中的子节点,通常比根CA低一级。
颁发CA(IssuingCA)颁发CA属于从属CA,它向端点(例如用户、服务器和客户端)颁发证书,并非所有从属CA都需要颁发CA。
独立CA(StandaloneCA)通常定义是在未加入域的服务器上运行的CA。
企业CA(EnterpriseCA)通常定义是加入域并与ActiveDirectory域服务集成的CA。
电子证书(DigitalCertificate)用户身份的电子证明,由CertificateAuthority发放(通常遵循X.标准)。
AIA(AuthorityInformationAccess)权威信息访问(AIA)应用于CA颁发的证书,用于指向此证书颁发者所在的位置引导检查该证书的吊销情况。
CDP(CRLDistributionPoint)包含有关CRL位置的信息,例如URL(WebServer)或LDAP路径(ActiveDirectory)。
CRL(CertificateRevocationList)CRL是已被撤销的证书列表,客户端使用CRL来验证提供的证书是否有效。
接下来介绍ADCS服务架构。微软官方ADCS服务架构中的两层PKI环境部署结构示例如下:ORCA1:首先使用本地管理员部署单机离线的根CA,配置AIA及CRL,导出根CA证书和CRL文件。由于根CA需要嵌入到所有验证证书的设备中,所以出于安全考虑,根CA通常与客户端之间做网络隔离或关机且不在域内,因为一旦根CA遭到管理员误操作或黑客攻击,需要替换所有嵌入设备中的根CA证书,成本极高。为了验证由根CA颁发的证书,需要使CRL验证可用于所有端点,为此将在从属CA(APP1)上安装一个Web服务器来托管验证内容。根CA机器使用频率很低,仅当需要进行添加另一个从属/颁发CA、更新CA或更改CRL。APP1:用于端点注册的从属CA,通常完成以下关键配置:将根CA证书放入ActiveDirectory的配置容器中,这样允许域客户端计算机自动信任根CA证书,不需要在组策略中分发该证书。在离线ORCA1上申请APP1的CA证书后,利用传输设备将根CA证书和CRL文件放入APP1的本地存储中,使APP1对根CA证书和根CACRL的迅速直接信任。部署WebServer以分发证书和CRL,设置CDP及AIA。再看一下LDAP属性。ADCS在LDAP容器中进行了相关属性定义:
CN=PublicKeyServices,CN=Services,CN=Configuration,DC=,DC=,CertificatetemplatesADCS的大部分利用面集中在证书模板中,存储为:
CN=CertificateTemplates,CN=PublicKeyServices,CN=Services,CN=Configuration,DC=,DC=,其objectClass为pKICertificateTemplate,以下为证书的字段:
常规设置:证书的有效期;
请求处理:证书的目的和导出私钥要求;
加密:要使用的加密服务提供程序(CSP)和最小密钥大小;
Extensions:要包含在证书中的Xv3扩展列表;
主题名称:来自请求中用户提供的值,或来自请求证书的域主体身份;
发布要求:是否需要“CA证书管理员”批准才能通过证书申请;
安全描述符:证书模板的ACL,包括拥有注册模板所需的扩展权限。
证书模板颁发首先需要在CA的certtmpl.msc进行模板配置,随后在certsrv.msc进行证书模板的发布。在Extensions中证书模板对象的EKU(pKIExtendedKeyUsage)属性包含一个数组,其内容为模板中已启用的OID(ObjectIdentifiers)。这些自定义应用程序策略(EKUoid)会影响证书的用途,以下oid的添加才可以让证书用于Kerberos身份认证。描述OIDClientAuthentication1.3.6.1.5.5.7.3.2PKINITClientAuthentication1.3.6.1.5.2.3.4SmartCardLogon1.3.6.1.4.1..20.2.2AnyPurpose2.5.29.37.0SubCA(noEKUs)EnterpriseNTAuthstoreNtAuthCertificates包含所有CA的证书列表,不在内的CA无法处理用户身份验证证书的申请。向NTAuth发布/添加证书:certutil–dspublish–fIssuingCaFileName.cerNTAuthCA;要查看NTAuth中的所有证书:certutil–viewstore–enterpriseNTAuth;要删除NTAuth中的证书:certutil–viewdelstore–enterpriseNTAuth。域内机器在注册表中有一份缓存:
HKLM\SOFTWARE\Microsoft\EnterpriseCertificates\NTAuth\Certificates当组策略开启“自动注册证书”,等组策略更新时才会更新本地缓存。CertificationAuthoritiesAIACertificationAuthorities容器对应根CA的证书存储。当有新的颁发CA安装时,它的证书则会自动放到AIA容器中。来自他们容器的所有证书同样会作为组策略处理的一部分传播到每个网络连通的客户端,当同步出现问题的话,KDC认证会抛KDC_ERR_PADATA_TYPE_NOSUPP报错。CertificateRevocationList前面在PKI服务架构中提到了,证书吊销列表(CRL)是由颁发相应证书的CA发布的已吊销证书列表,将证书与CRL进行比较是确定证书是否有效的一种方法。CN=CAname,CN=ADCSserver,CN=CDP,CN=PublicKeyServices,CN=Services,CN=Configuration,DC=,DC=通常证书由序列号标识,CRL除了吊销证书的序列号之外,还包含每个证书的吊销原因和证书被吊销的时间。2.证书注册先来看看证书注册流程。ADCS认证体系中的证书注册流程大致如下:
客户端创建公钥/私钥对;
将公钥与其他信息(如证书的主题和证书模板名称)一起放在证书签名请求(CSR)消息中,并使用私钥签署;
CA首先判断用户是否允许进行证书申请,证书模板是否存在以及判断请求内容是否符合证书模板;
通过审核后,CA生成含有客户端公钥的证书并使用自己的私钥来签署;
签署完的证书可以进行查看并使用。
再来看看证书注册方式。首先,证书颁发机构Web注册。在部署CA时勾选证书颁发机构Web注册,即可在"