hacktricks/windows-hardening/active-directory-methodology/ad-certificates.md

143 lines
8.4 KiB
Markdown
Raw Normal View History

# AD 证书
2022-08-31 17:18:31 +00:00
<details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary>
2022-08-31 17:18:31 +00:00
支持 HackTricks 的其他方式:
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) 上 **关注**我们。
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
2022-08-31 17:18:31 +00:00
</details>
## 简介
2022-08-31 20:58:00 +00:00
2023-08-03 19:12:22 +00:00
### 证书的组成部分
2022-08-31 17:18:31 +00:00
- 证书的**主体**表示其所有者。
- 与私钥配对的**公钥**将证书与其合法所有者关联起来。
- 由**NotBefore**和**NotAfter**日期定义的**有效期**标志着证书的有效持续时间。
- 由证书颁发机构CA提供的唯一**序列号**标识每个证书。
- **颁发者**指的是颁发证书的 CA。
- **SubjectAlternativeName** 允许为主体添加其他名称,增强识别灵活性。
- **基本约束**标识证书是用于 CA 还是终端实体,并定义使用限制。
- **扩展密钥用途EKUs**通过对象标识符OIDs详细说明证书的具体用途如代码签名或电子邮件加密。
- **签名算法**指定签署证书的方法。
- 由颁发者的私钥创建的**签名**保证了证书的真实性。
2022-08-31 17:18:31 +00:00
### 特殊考虑事项
2022-08-31 20:58:00 +00:00
- **主体替代名称SANs**扩展了证书适用于多个身份,对于具有多个域的服务器至关重要。安全的颁发流程对于避免攻击者操纵 SAN 规范而造成的冒充风险至关重要。
2022-08-31 20:58:00 +00:00
### Active DirectoryAD中的证书颁发机构CAs
2022-08-31 20:58:00 +00:00
AD CS 通过指定的容器承认 AD 森林中的 CA 证书,每个容器提供独特的角色:
2022-08-31 17:18:31 +00:00
- **Certification Authorities** 容器保存受信任的根 CA 证书。
- **Enrolment Services** 容器详细说明企业 CA 及其证书模板。
- **NTAuthCertificates** 对象包括授权用于 AD 认证的 CA 证书。
- **AIAAuthority Information Access** 容器通过中间和跨 CA 证书促进证书链验证。
2022-08-31 17:18:31 +00:00
### 证书获取:客户端证书请求流程
2022-08-31 17:18:31 +00:00
1. 请求过程始于客户端查找企业 CA。
2. 创建 CSR包含公钥和其他详细信息生成公私钥对后。
3. CA 根据可用的证书模板评估 CSR根据模板的权限颁发证书。
4. 获得批准后CA 使用其私钥签署证书并将其返回给客户端。
2022-08-31 17:18:31 +00:00
2023-08-03 19:12:22 +00:00
### 证书模板
2022-08-31 17:18:31 +00:00
在 AD 中定义的这些模板概述了用于颁发证书的设置和权限,包括允许的 EKUs 和注册或修改权限,对于管理证书服务的关键。
2022-08-31 17:18:31 +00:00
2023-08-03 19:12:22 +00:00
## 证书注册
2022-08-31 17:18:31 +00:00
证书的注册过程由管理员发起,管理员**创建证书模板**然后由企业证书颁发机构CA**发布**。这使得模板可供客户端注册,通过将模板名称添加到 Active Directory 对象的 `certificatetemplates` 字段来实现。
2022-08-31 17:18:31 +00:00
要求客户端请求证书,必须授予**注册权限**。这些权限由证书模板和企业 CA 本身上的安全描述符定义。必须在两个位置授予权限才能成功请求。
2022-08-31 17:18:31 +00:00
### 模板注册权限
2022-08-31 17:18:31 +00:00
这些权限通过访问控制条目ACEs指定详细说明权限
- **Certificate-Enrollment** 和 **Certificate-AutoEnrollment** 权限,每个与特定 GUID 关联。
- **ExtendedRights**,允许所有扩展权限。
- **FullControl/GenericAll**,提供对模板的完全控制。
2022-08-31 17:18:31 +00:00
### 企业 CA 注册权限
2022-08-31 17:18:31 +00:00
CA 的权限在其安全描述符中概述,可通过证书颁发机构管理控制台访问。某些设置甚至允许低特权用户远程访问,这可能是一个安全问题。
2022-08-31 17:18:31 +00:00
### 附加颁发控制
2022-08-31 17:18:31 +00:00
可能适用某些控制,如:
- **管理者批准**:将请求置于待定状态,直到由证书管理员批准。
- **注册代理和授权签名**:指定 CSR 上所需签名的数量以及必要的应用程序策略 OID。
2022-08-31 17:18:31 +00:00
### 请求证书的方法
2022-08-31 17:18:31 +00:00
可以通过以下方式请求证书:
1. **Windows 客户端证书注册协议**MS-WCCE使用 DCOM 接口。
2. **ICertPassage 远程协议**MS-ICPR通过命名管道或 TCP/IP。
3. **证书注册 Web 界面**,安装了证书颁发机构 Web 注册角色。
4. **证书注册服务**CES与证书注册策略CEP服务一起使用。
5. **网络设备注册服务**NDES用于网络设备使用简单证书注册协议SCEP
2022-08-31 17:18:31 +00:00
Windows 用户还可以通过 GUI`certmgr.msc` 或 `certlm.msc`)或命令行工具(`certreq.exe` 或 PowerShell 的 `Get-Certificate` 命令)请求证书。
```powershell
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
```
## 证书认证
Active DirectoryAD支持证书认证主要利用 **Kerberos****Secure Channel (Schannel)** 协议。
2022-08-31 17:18:31 +00:00
### Kerberos 认证过程
2022-08-31 17:18:31 +00:00
在 Kerberos 认证过程中用户请求获取票据授予票据TGT使用用户证书的 **私钥** 进行签名。该请求经过域控制器进行多项验证,包括证书的 **有效性**、**路径** 和 **吊销状态**。验证还包括验证证书来自受信任的来源,并确认发行者在 **NTAUTH 证书存储** 中的存在。成功的验证会导致 TGT 的颁发。在 AD 中的 **`NTAuthCertificates`** 对象,位于:
```bash
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
```
### 安全信道Schannel认证
2022-08-31 17:18:31 +00:00
Schannel促进了安全的TLS/SSL连接在握手过程中客户端提供一个证书如果成功验证就会授权访问。证书与AD帐户的映射可能涉及Kerberos的**S4U2Self**功能或证书的**主体替代名称SAN**,以及其他方法。
2022-08-31 17:18:31 +00:00
### AD证书服务枚举
2022-08-31 17:18:31 +00:00
可以通过LDAP查询枚举AD的证书服务揭示有关**企业证书颁发机构CAs**及其配置的信息。这可被任何具有域身份验证的用户访问,无需特殊权限。工具如**[Certify](https://github.com/GhostPack/Certify)**和**[Certipy](https://github.com/ly4k/Certipy)**用于在AD CS环境中进行枚举和漏洞评估。
2022-08-31 17:18:31 +00:00
使用这些工具的命令包括:
2022-08-31 17:18:31 +00:00
```bash
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
Certify.exe cas
# Identify vulnerable certificate templates with Certify
Certify.exe find /vulnerable
2022-09-02 13:32:02 +00:00
# Use Certipy for enumeration and identifying vulnerable templates
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
2022-08-31 17:18:31 +00:00
# Enumerate Enterprise CAs and certificate templates with certutil
certutil.exe -TCAInfo
certutil -v -dstemplate
2022-08-31 17:18:31 +00:00
```
2023-08-03 19:12:22 +00:00
## 参考资料
2022-08-31 17:18:31 +00:00
* [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf)
* [https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html](https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html)
<details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-08-31 17:18:31 +00:00
支持HackTricks的其他方式
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
2022-08-31 17:18:31 +00:00
</details>