首页 科技内容详情
【平安研究】Active Directory 证书服务(一)

【平安研究】Active Directory 证书服务(一)

分类:科技

网址:

反馈错误: 联络客服

点击直达

足球免费贴士网

www.zq68.vip)是国内最权威的足球赛事报道、预测平台。免费提供赛事直播,免费足球贴士,免费足球推介,免费专家贴士,免费足球推荐,最专业的足球心水网。

,

作者: daiker@Amulab

0x00 前言

specterops宣布了一篇关于Active Directory 证书服务相关破绽的白皮书

https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf,关于Active Directory 证书服务的攻击第一次系统的进入我们的视野。

我在白皮书的基础上学习了Active Directory 证书服务相关的破绽,作为学习功效,用两篇文章来先容Active Directory 证书服务相关的基础以及相关的破绽行使。停止这篇文章宣布为止,有些破绽行使相关的工具并没有宣布出来,在文章内里我会用其他的方式来演示。

白皮书内里,最焦点的点在于证书服务宣布的部门证书可用于kerberos认证,而且在返回的PAC内里能拿到NTLM hash。这就是可以做许多事了,好比

1、拿到用户的凭证,能不能用用户的凭证来申请一个证书,这个证书用于kerberos认证,后面就算用户的密码改了,只要证书在手,就能用证书随时拿回NTLM。

2、能不能在用户的电脑上找到证书,以后拿着这个证书去做认证。

3、什么样的证书能用于kerberos认证。

4、拿到CA服务器证书之后,能不能给任何用户揭晓证书,再用这个证书做认证,跟黄金票据一样。

5、CA服务器上有没有一些设置,能让一个用户申请别人的证书,然后拿到这个证书做认证。

6、CA证书申请有个界面是http的,http默认不开署名,我们能不能通过Ntlm_Relay将请求relay到这里,申请用以举行kerberos认证的证书。

关于这些,都市在这两篇文章内里讨论。在写完之后,由于内容过长,我将文章拆分为两篇,第一篇是先容一些基础部门,以及三个相关的行使

1、窃取证书

2、通过凭证申请可用以Kerberos认证的证书

3、通过证书窃取用户凭证

在第二篇主要先容一些其他的行使,包罗

1、证书服务中的Ntlm_Relay

2、证书模板设置错误

3、黄金证书

3、PKI 设计缺陷

4、防御指南

整体的思绪如下图

0x01 Active Directory 证书服务安装

在最先解说证书服务之前,我们先装个证书服务,利便起见,直接在域控上安装就行。

下一步下一步对照简朴。

 0x02 Active Directory 证书服务概述

0x0201 企业 PKI

PKI是一个术语,有些地方会接纳中文的表述——公钥基本结构,用来实现证书的发生、治理、存储、分发和取消等功效。我们可以把他明白成是一套解决方案,这套解决方案内里需要有证书揭晓机构,有证书宣布,证书撤掉等功效。

微软的Active Directory 证书服务(我们可以简称AD CS)就是对这套解决方案的实现。ADCS能够跟现有的ADDS服务举行连系,可以用以加密文件系统,数字署名,以及身份验证。下面详细先容下AD CS中对照主要的的证书揭晓机构以及证书模板。

0x0202 证书揭晓机构

证书揭晓机构 (CA) 接受证书申请,凭证 CA 的战略验证申请者的信息,然后使用其私钥将其数字署名应用于证书。然后 CA 将证书揭晓给证书的使用者。此外,CA 还认真吊销证书和宣布证书吊销列表 (CRL)。

ADCS内里的CA分为企业CA和自力CA,最主要的区别在于企业CA与ADDS服务连系,他的信息存储在ADDS数据库内里(就是LDAP上)。企业CA也支持基于证书模板和自动注册证书,这也是我们对照体贴的器械,若是没有特指,文章内里提到的CA默认就是企业CA。

举个例子,我们有个有个域名daiker.com,若是要做https,我们就需要找证书揭晓机构申请证书,好比说沃通CA。

我们也可以自己搭建一个证书揭晓机构。

然则使用自建的证书宣布服务之后,浏览器照样不信托我们证书,我们经常可以看到

自行署名的根证书。之以是泛起这个是由于电脑自己并不信托我们的CA证书。以下证书是windows内置的CA证书。若是我们能够把我们的CA证书放在这个列内外面,我们的证书就能获得信托。

对于企业来说,若是使用ADCS服务,想让员工的盘算机信托我们企业自己的CA证书,有以下几种方式

1、安装企业根CA时,它使用组战略将其证书流传到域中所有用户和盘算机的“受信托的根证书揭晓机构”证书存储

2、若是盘算机不在域内,可以手动导入CA证书

另外AD CS支持可缩放的分层 CA 模子,在此模子中,子隶属 CA 由其父 CA 揭晓的证书认证。条理结构顶部的 CA 称为根 CA。根 CA 的子 CA 称为隶属 CA。

以上图为例子,每个企业仅有一个根CA,他由自己揭晓,在大多数组织中,它们只用于揭晓隶属 CA,不直接揭晓证书。而详细的证书由隶属CA揭晓,好比网站的证书,LDAPS的证书,这样做利便治理,在机械对照多的域内还能起到负载平衡的作用。固然,AD CS支持分层的CA模子不代表一定要分层,对于对照小的公司,一样平常都只有一个根CA,所有的证书由这个根CA举行揭晓。

0x0203 证书模板

证书模板是证书战略的主要元素,是用于证书注册、使用和治理的一组规则和花样。这些规则是指谁可以注册证书。证书的主题名是什么。好比要注册一个web证书,那可以在Web服务器这个默认的证书模板内里界说谁可以注册证书,证书的有用时间是多久,证书用于干啥,证书的主题名是什么,是由申请者提交,照样由证书模板指定。

我们可以使用certtmlp.msc打开证书模板控制台

这些都是系统默认的证书模板。

若是需要宣布一个新的模板的话,可以右键复制模板,然后自己界说这些规则。

我们体贴以下规则

  • 通例设置:交付证书的有用期,默认是一年

  • 请求处置:证书的目的和导出私钥的能力(虽然设置了证书不能被导出,然则mimikatz依旧能导出,我们后面会详细说)

  • 加密:要使用的加密服务提供程序 (CSP) 和最小密钥巨细

  • Subject name,它指示若何构建证书的专著名称:来自请求中用户提供的值,或来自请求证书的域主体的身份。这个需要注重的是,默认勾选了在使用者名称中说谁人电子邮件名,当用户去申请的时刻,若是用户的LDAP属性没有mail就会申请失败。

  • 揭晓要求:CA证书司理程序批准

这个值得注重,就算用户有注册权限(在ACL内里体现),然则证书模板勾选了这个,也得获得证书治理的批准才气申请证书,若是没有勾选这个,那有权限就可以直接申请证书了。


  • 平安形貌符:证书模板的 ACL,包罗具有注册到模板所需的扩展权限的主体的身份。关于这个的内容看证书注册那节的证书注册权限内里。

  • 扩展:要包罗在证书中的 X509v3 扩展列表及其主要性(包罗KeyUsage和ExtendedKeyUsages)

这里我们要稀奇注重的是扩展权限内里的应用程序模板,

这个扩展决议了这个模板的用途,好比说文档加密,文档署名,智能卡上岸等等。

经由测试与研究,spectorops的工程师发现包罗以下扩展的证书可以使用证书举行kerberos认证。

1、客户端认证

2、PKINIT 客户端身份验证

3、智能卡登录

4、任何目的

5、子CA

其中PKINIT不是默认存在的,需要我们手动确立,点击新建,名称自界说,工具标识符为1.3.6.1.5.2.3.4

0x03 证书注册

0x00301 证书注册流程


1、客户端天生一个证书申请文件,这一步可以使用openssl天生,好比

openssl req -new -SHA256 -newkey rsa:4096 -nodes -keyout www.netstarsec.com.key -out www.netstarsec.com.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=netstarsec/OU=sec/CN=www.netstarsec.com"

或者直接找个在线的网站https://myssl.com/csr_create.html天生

2、客户端把证书申请文件发送给CA,然后选择一个证书模板。

这一步可以申请的方式对照多,上面这种是通过接见证书注册界面举行注册的。ADCS请求注册证书的方式在下一小节详细说明。

3、CA证书会判断模板是否存在,凭证模板的信息判断请求的用户是否有权限申请证书。证书模板会决议证书的主题名是什么,证书的有用时间是多久,证书用于干啥。是不是需要证书治理员批准。

4、CA会使用自己的私钥来签署证书。签署完的证书可以在揭晓列内外面看到。

0x00302 证书注册接口

1、接见证书注册网页界面

要使用此功效,ADCS 服务器需要安装证书揭晓机构 Web 注册角色。我们可以在添加角色和功效向导>AD证书揭晓机构Web注册服务内里开启。

开启完就接见https://CA/certsrv 接见证书注册网页界面

2、域内机械可以通过启动 certmgr.msc (用于用户证书)或 certlm.msc (用于盘算机证书)来使用 GUI 请求证书

3、域内机械可以通过下令行certreq.exe和PowershellGet-Certificate来申请证书

4、使用MS-WCCE,MS-ICPR这俩RPC,详细交互流程得去看文档

5、使用CES,需要安装证书注册WEB服务,soap的花样,详细的交互流程得看MS-WS-TEP和MS-XCEP

6、使用网络装备注册服务,得安装网络装备注册服务


0x0303 证书注册权限

知道了证书注册的流程,注册的接口,接下来我们关注的就是证书注册的权限。跟证书注册相关的权限主要有两块,一块体现在CA证书上,一块体现在证书模板上。

我们可以运行certsrv.msc之后右键证书揭晓机构,右键属性,平安查看权限。

对于CA证书的权限,我们对照关注的是请求证书的权限。默认情形下,所有认证用户都有请求权限。若是有请求的权限,CA就去判断请求的模板是否存在,若是存在,就交给证书模板去治理权限。

证书模板的权限,可以运行certtmpl.msc之后选择特定的证书模板,右键属性,平安查看权限

我们对照关注以下权限

  • 注册权限(Enroll)

拥有这个权限的用户拥有注册权限

  • 自动注册的权限(AutoEnrollment)在设置证书自动注册的时刻需要证书模板开启这个权限,关于证书自动注册的更多细节,在下一小节会详细说明。

  • AllExtendedRights/Full ControlAllExtendedRights 包罗所有的扩展权限,就包罗了注册权限和自动注册权限。Full Control包罗所有权限,也包罗有的扩展权限

我们体贴完CA的权限以及证书模板的权限之外,还得注重一个设置CA证书治理程序批准

若是证书模板没有勾选这个,那么有ca的证书请求权限,证书模板的注册权限,就可以申请下证书。然则若是勾选了这个选项,那么就算有注册权限,那也得获得证书治理员的批准才气注册证书。

0x0304 证书自动化注册

相较于注册,自动化注册顾名思义就是自动化,不需要用户手动注册。有些软件需要用户证书去接见,让每个用户自己手动申请证书又不太现实,这个时刻自动化注册证书的优势就体现出来了。

接下来演示下怎么设置证书自动化注册。

1、设置一个证书模板

选择一个已有的模板,右键复制模板

名字改成用户自动化注册

欧博Allbet

欢迎进入欧博Allbet官网(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。


去掉以下两个勾,由于有些用户可能没有设置邮箱,自动化申请证书的时刻就会失败。

给这个证书模板赋予任何Domain Users有注册和自动化注册的权限

然后下发一个组战略

新建一个组战略,命名为自动注册证书

然后打开用户设置>战略>平安设置>公钥战略,设置下图圈出来的三个

然后等组计营生效,域内的每个用户登录的时刻都市自动申请一个证书,不用人为申请证书。

0x04 Active Directory 证书服务在LDAP中的体现

ADCS的信息同样也存储在LDAP上,我们可以在设置分区底下的Service底下的Public Key Services看到证书相关的信息

,好比在我们的环境就位于CN=Public Key Services,CN=Services,CN=Configuration,DC=test16,DC=local。

每一块的工具的用途都纷歧样,接下来我们详细先容我们对照关注的几个工具

  • Certification Authorities

这个工具是证书揭晓机构,界说了受信托的根证书。

每个 CA 都示意为容器内的一个 AD 工具,objectClass为certificationAuthority。

CA证书的内容以二进制的内容放在cACertificate底下。

  • Enrollment Services这个工具界说了每个企业 CA。每个企业CA 都示意为容器内的一个 AD 工具,objectClass为pKIEnrollmentServiceCA证书的内容以二进制的内容放在cACertificate底下。dNSHostName界说了CA的DNS主机

  • certificateTemplates这个工具界说了所有证书模板

  • NTAuthCertificates此条目用于存储有资格揭晓智能卡登录证书并在 CA 数据库中执行客户端私钥存档的 CA 的证书。关于智能卡,后面会单独写一篇文章详细论述智能卡,在这篇文章内里,默认提及的证书都是软件层面的,不涉及到硬件的。

  • CDP这个容器存储了被吊销的证书列表

0x05 窃取证书

在我们控的盘算机上可能会存在一些证书,这些证书有可能是用客户端身份验证,有可能是CA证书,用以信托其他证书的。我们可以将这些证书导出来,这里我们分为两种情形导出来。

0x0501 从系统存储导出证书

这种情形我们使用windows自带的下令certutil来导出

certutil默认查看的是盘算机证书,可以通过指定-user参数来查看用户证书

(图形化查看用户证书是下令是certmgr.msc,图形化查看盘算机证书的下令是certlm.msc)

certutil还可以通过-store来查看存储分区,参数有CA,root,My划分对应中央证书机构,小我私人证书,受信托的根证书揭晓机构。

有些证书在导入的时刻需要密码或者勾选证书不能导出

这个时刻就需要使用mimikatz来导出证书了。下面我们举两个导出的案例。

1、导出用户证书

打开certmgr.msc


若是我们想查看小我私人证书可以用

certutil -user -store My

找到我们想导出的证书的hash

若是仅仅是只是导出证书,不导出私钥

certutil -user -store My f95e6b5dbafac54963c450052848745a54ec7bd9 c:\Users\test1\Desktop]test1.cer


若是要导出证书包罗私钥

certutil -user -exportPFX f95e6b5dbafac54963c450052848745a54ec7bd9 c:\Users\test1\Desktop]test1.pfx

这一步若是我们需要输入一个密码,这个密码是待会儿这个导出的证书 导入到咱们的电脑的时刻要用的

2、查看盘算机证书

打开certlm.msc

若是我们想查看盘算机证书可以用

certutil -store My


找到我们想导出的证书的hash

certutil -store My 888d67d9ef30adc94adf3336462b96b5add84af4 c:\Users\test1\Desktop\win10.cer

在我们要导出pfx文件的时刻

这种是勾选了证书不允许被导出的,certutil就导出不了,回已往看我们刚刚查看证书的hash的时刻

就可以看到,内里标志着私钥不能被导出,这个时刻我们就需要用到mimikatz了,mimikatz的crypto::certificates默认也是不支持导出私钥不能被导出类型的证书的私钥】

这个时刻可以使用crypto::capi修改lsass

然后就可以导出了

0x0502 从文件系统搜索证书

我们经常可以在邮件,磁盘内里看到证书,我们一样平常根据后缀来搜索证书的,我们一样平常关注以下后缀

1、key后缀的,只包罗私钥

2、crt/cer 后缀的,只包罗公钥

3、csr后缀的,证书申请文件,不包罗公钥,也不包罗私钥。没啥用

4、pfx,pem,p12后缀的,包罗公私钥,我们最喜欢的。

搜索文件后缀的每小我私人使用的工具纷歧样,我小我私人对照喜欢的是SharpSearch,.Net的项目,支持内存加载,可以写成CNA插件。

0x06 通过用户凭证申请可用于kerberos认证的证书

在所有默认的证书模板内里,我们最关注的模板默认有用户模板和盘算机模板。

前面我们说过,使用认证举行kerberos认证的需要扩展权限内里包罗以下其中一个

1、客户端身份认证

2、PKINIT 客户端身份验证

3、智能卡登录

4、任何目的

5、子CA

若是用户若是想要注册证书,需要经由两个权限的磨练。

1、在CA上具有请求证书的权限,这个默认所有认证的用户都有请求证书的权限。

2、在模板上具有注册证书的权限。

用户/盘算机模板,他恰好知足这些条件。

1、他们的扩展属性都有客户端身份认证

2、用户证书默认所有的域用户都有注册权限

3、盘算机默认所有的域内盘算机都有注册权限

4、用户/盘算机模板不需要企业治理员批准

这两个默认的证书模板,让我们不需要有域管的凭证,只需要一个域内用户的凭证,就可以注册证书,这个证书还可用于举行kerberos认证。因此我们这里注册的时刻选择的模板是用户/盘算机模板(详细哪个模板看我们拥有的凭证是用户照样盘算机)。

当我们拿到用户的凭证,想使用这个凭证去申请用户证书,我们可以

1、接见证书注册网页界面

这个咱们之前说过,需要安装证书揭晓机构 Web 注册角色。我们可以实验接见下,接见的路径是https://CA/certsrv,会弹401认证,我们输入用户的凭证就行。

这个浏览器建议用IE

2、使用certmgr.msc申请

若是我们在域内,直接打开certmgr.msc申请就行


0x07 通过证书窃取用户凭证

0x0701 请求kerberos证书

在传统的kerberos认证的时刻,是使用用户密码举行认证的。回首下申请TGT的历程。

用用户hash加密时间戳作为value,type为PA-ENC-TIMESTAMP, 放在PA_DATA上。KDC收到请求,使用用户hash解密value的值获得时间戳跟当前时间做比对,若是在合理的局限(正常五分钟),就认证通过。

事实上也可以使用证书作为认证,这也是这次spectorops关于ADCS研究的最大亮点,后面破绽牢牢围绕这点。

RFC4556引入了对 Kerberos 预身份验证的公钥加密支持。这个RFC 的title是Public Key Cryptography for Initial Authentication in Kerberos,后面我们使用简称PKINIT来先容使用证书举行kerberos身份认证这种方式。

PKINIT同样也使用时间戳,但不是使用用户密码派生密钥加密新闻,而是使用属于证书的私钥对新闻举行署名。

我们可以使用rubeus 举行验证。

我们首先为用户Administrator注册一个证书,使用certmgr.msc举行注册


然后导出来,记得跟私钥一起导出来

接下来我们拿着这个证书去请求kerberos认证

Rubeus4.0.exe asktgt /user:Administrator /certificate:administrator.pfx /domain:test16.local /dc:dc-05.test16.local

0x0703 请求NTLM 凭证

在微软的文档https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-pkca/4e5fb325-eabc-4fac-a0da-af2b6b4430cb内里有一段话

也就是当使用证书举行kerberos认证的时刻,返回的票据的PAC包内里另有NTLM票据。

这个器械Benjamin(mimikatz,kekeo作者)在17年已经研究并举行武器化

详情见https://twitter.com/gentilkiwi/status/826932815518371841


下面我们用一个案例来说明。

当我们控制了一台主机,内里有个用户的证书


我们使用certutil来导出证书(若是导出不了的话,就用mimikatz来导出证书)


然后把pfx文件拷贝到我们自己的盘算机,双击导入,输入刚刚我们输的密码。

我们内陆的盘算机做个署理进内网,而且把dns也署理进去(dns设置为内网的域控)

使用kekeo获取用户的NTLM

我们再做个测试,把用户的密码改了

这个时刻用之前获取的证书继续提议请求,照样能获取到NTLM Hash。

 0x08 引用

  • https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf

  • https://forsenergy.com/zh-cn/certsvr/html/c8955f83-fed9-4a18-80ea-31e865435f73.htm

  • https://docs.microsoft.com/zh-cn/learn/modules/implement-manage-active-directory-certificate-services/

  • https://forsenergy.com/zh-cn/certtmpl/html/85e1436e-4c52-489a-93a2-6603f1abadf7.htm

  • https://www.riskinsight-wavestone.com/en/2021/06/microsoft-adcs-abusing-pki-in-active-directory-environment/


  • 皇冠APP下载 @回复Ta

    2021-08-24 00:13:30 

    王毅示意,在巴以问题上,最基本的是还巴勒斯坦人民一个迟迟没有到来的合理正义。没有正义的基本,就难以修建持久的和平。“两国方案”是国际社会的共识,也是合理正义的体现,只有在“两国方案”基础上尽快重启和谈,巴勒斯坦问题才气获得公正的解决,中东区域才气实现持久的和平。消遣必备~

  • 皇冠登1登2登3 @回复Ta

    2021-09-03 00:08:19 

    usdt第三方支付平台www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

    喜欢作者的扣1

  • 皇冠会员登录线路(www.22223388.com) @回复Ta

    2021-09-15 00:04:48 

    USDT场外交易网www.Uotc.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U担保开放usdt otc API接口、支付回调等接口。

    对得起我时间

  • ug环球开户(www.ugbet.us) @回复Ta

    2021-09-19 00:00:28 

    新2平台出租rent.22223388.com

    皇冠运营平台(rent.22223388.com)是皇冠(正网)接入菜宝钱包的TRC20-USDT支付系统,为皇冠代理提供专业的网上运营管理系统。系统实现注册、充值、提现、客服等全自动化功能。采用的USDT匿名支付、阅后即焚的IM客服系统,让皇冠代理的运营更轻松更安全。

    这类型很少见啊

发布评论