ADCS攻击指北-权限提升
字数 2068 2025-08-29 08:30:12

ADCS攻击指北:权限提升技术详解

背景知识

Active Directory证书服务(AD CS)是Windows Server提供的公钥基础设施(PKI)功能,支持域内身份验证和其他安全功能(如文件加密、电子邮件加密和网络流量加密)。AD CS可以创建、验证和撤销公钥证书。

证书申请流程:

  1. 客户端生成密钥对
  2. 客户端发送证书签名请求(CSR)给企业CA服务器
  3. CA检查CSR内容,决定是否颁发证书
  4. CA批准后,使用CA私钥签名并颁发证书

关键术语:

  • PKI:公钥基础设施,实现证书的产生、管理、存储、分发和撤销
  • PKINIT:初始认证的公钥加密技术,可在Kerberos认证的初始阶段使用

ESC1攻击

配置要求

  1. 有权限获取证书
  2. 能够登记为客户端身份验证或智能卡登录
  3. CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT开启

配置步骤

  1. 打开证书颁发机构
  2. 在证书模板中右键选择"管理"
  3. 复制现有模板并修改:
    • 常规:修改模板名称
    • 使用者名称:选择"在请求中提供"
    • 扩展的应用策略:包含客户端身份验证/智能卡验证
    • 安全:添加Authenticated Users或Domain Users组的注册权限
  4. 在证书颁发机构中发布模板

利用方法

使用Certipy工具:

certipy find -u user@domain -p password -dc-ip DC_IP
certipy req -u user@domain -p password -dc-ip DC_IP -ca CA_NAME -template VULN_TEMPLATE -upn administrator@domain
certipy auth -pfx administrator.pfx -dc-ip DC_IP

ESC2攻击

配置要求

与ESC1相同,但扩展中设置"Any Purpose"类型的EKU

利用方法

  1. 申请Any Purpose证书
  2. 使用该证书申请高权限证书
  3. 获取高权限账户的NTLM hash

ESC3攻击

配置1

  • 扩展中设置"证书申请代理"的EKU

配置2

  • 修改发布要求

利用方法

配置1与ESC2类似,配置2需要使用certify.exe工具

ESC4攻击

配置要求

  • 安全组默认完全控制,拥有写入权限
  • 工作站身份认证模板

利用方法

  1. 使用Certipy修改模板权限
  2. 申请修改后的模板
  3. 使用证书进行权限提升
  4. 恢复原始模板权限

ESC5攻击

前提条件

  • 域之间存在信任关系
  • 各域都搭建了AD CS服务器

利用方法

  1. 使用LOCAL SYSTEM权限添加ESC1脆弱证书模板
  2. 利用活动目录同步特性将模板发布到林根域
  3. 使用脆弱模板申请企业管理员证书

ESC6攻击

配置要求

  1. 企业CA授予低权限用户请求权限(默认)
  2. 模板中CA管理员审批未启用(默认)
  3. 模板中不需要授权的签名(默认)
  4. CA设置了EDITF_ATTRIBUTESUBJECTALTNAME2标志

利用方法

与ESC1相同,但可以选择任意带有客户端身份认证的模板

关闭EDITF_ATTRIBUTESUBJECTALTNAME2:

certipy ca -u user@domain -p password -dc-ip DC_IP -ca CA_NAME -disable-editf-attributesubjectaltname2

ESC7攻击

配置要求

用户或所属组拥有管理CA权限(如Domain Users、Authenticated Users)

利用方法

  1. 给用户添加管理证书权限
  2. 查看并启动SubCA模板(如未启动)
  3. 请求SubCA模板(记录请求ID)
  4. 使用issue-request发出证书请求
  5. 检索已颁发的证书

ESC8攻击

利用方法

  1. 发现ADCS网页认证地址
  2. 使用ntlmrelayx.py将CA设置为中继目标
  3. 使用printerbug、PetitPotam或DFSCoerce强制认证
  4. 获取base64格式证书
  5. 使用gettgtpkinit.py申请票据

ESC9攻击

配置要求

  1. 证书模板使用者名称选择UPN
  2. 设置msPKI-Enrollment-Flag为524288
  3. 设置用户ACL

利用方法

  1. 设置影子账户获取hash
  2. 修改test账户UPN为administrator
  3. 申请证书
  4. 恢复test账户UPN
  5. 使用证书进行认证

ESC10攻击

场景1

  • StrongCertificateBindingEnforcement设置为0
  • 利用方法与ESC9相同,但可随意选择支持客户端身份验证的模板

场景2

  1. 设置注册表CertificateMappingMethods值为4(UPN)
  2. 修改用户UPN
  3. 申请证书
  4. 恢复UPN
  5. 使用证书请求LDAP并设置RBCD

ESC11攻击

配置要求

域控上关闭强制加密

利用方法

使用ntlmrelay进行中继利用,配合打印机或PetitPotam触发

ESC13攻击

配置要求

  1. 创建通用组(组内无成员)
  2. 创建普通用户
  3. 配置证书模板:
    • 使用者名称选择UPN
    • 添加新颁发策略
    • 设置组权限
  4. 设置msDS-OIDToGroupLink属性

利用方法

  1. 申请证书
  2. 获取票据
  3. 导入票据导出hash

ESC15攻击

配置要求

  1. 用户注册权限
  2. schema版本为1(默认)
  3. subjectName为请求中提供(默认)

利用方法

  1. 修改Web Server模板添加注册权限
  2. 添加客户端认证
  3. 使用LDAP方式认证(不支持Kerberos)

防御建议

  1. 限制证书模板权限
  2. 监控证书申请活动
  3. 及时安装安全补丁
  4. 限制CA管理权限
  5. 启用强证书绑定
  6. 定期审计AD CS配置

以上攻击技术展示了AD CS环境中多种权限提升路径,管理员应全面评估证书模板配置和权限分配,以降低安全风险。

ADCS攻击指北:权限提升技术详解 背景知识 Active Directory证书服务(AD CS)是Windows Server提供的公钥基础设施(PKI)功能,支持域内身份验证和其他安全功能(如文件加密、电子邮件加密和网络流量加密)。AD CS可以创建、验证和撤销公钥证书。 证书申请流程: 客户端生成密钥对 客户端发送证书签名请求(CSR)给企业CA服务器 CA检查CSR内容,决定是否颁发证书 CA批准后,使用CA私钥签名并颁发证书 关键术语: PKI:公钥基础设施,实现证书的产生、管理、存储、分发和撤销 PKINIT:初始认证的公钥加密技术,可在Kerberos认证的初始阶段使用 ESC1攻击 配置要求 有权限获取证书 能够登记为客户端身份验证或智能卡登录 CT_ FLAG_ ENROLLEE_ SUPPLIES_ SUBJECT开启 配置步骤 打开证书颁发机构 在证书模板中右键选择"管理" 复制现有模板并修改: 常规:修改模板名称 使用者名称:选择"在请求中提供" 扩展的应用策略:包含客户端身份验证/智能卡验证 安全:添加Authenticated Users或Domain Users组的注册权限 在证书颁发机构中发布模板 利用方法 使用Certipy工具: ESC2攻击 配置要求 与ESC1相同,但扩展中设置"Any Purpose"类型的EKU 利用方法 申请Any Purpose证书 使用该证书申请高权限证书 获取高权限账户的NTLM hash ESC3攻击 配置1 扩展中设置"证书申请代理"的EKU 配置2 修改发布要求 利用方法 配置1与ESC2类似,配置2需要使用certify.exe工具 ESC4攻击 配置要求 安全组默认完全控制,拥有写入权限 工作站身份认证模板 利用方法 使用Certipy修改模板权限 申请修改后的模板 使用证书进行权限提升 恢复原始模板权限 ESC5攻击 前提条件 域之间存在信任关系 各域都搭建了AD CS服务器 利用方法 使用LOCAL SYSTEM权限添加ESC1脆弱证书模板 利用活动目录同步特性将模板发布到林根域 使用脆弱模板申请企业管理员证书 ESC6攻击 配置要求 企业CA授予低权限用户请求权限(默认) 模板中CA管理员审批未启用(默认) 模板中不需要授权的签名(默认) CA设置了EDITF_ ATTRIBUTESUBJECTALTNAME2标志 利用方法 与ESC1相同,但可以选择任意带有客户端身份认证的模板 关闭EDITF_ ATTRIBUTESUBJECTALTNAME2: ESC7攻击 配置要求 用户或所属组拥有管理CA权限(如Domain Users、Authenticated Users) 利用方法 给用户添加管理证书权限 查看并启动SubCA模板(如未启动) 请求SubCA模板(记录请求ID) 使用issue-request发出证书请求 检索已颁发的证书 ESC8攻击 利用方法 发现ADCS网页认证地址 使用ntlmrelayx.py将CA设置为中继目标 使用printerbug、PetitPotam或DFSCoerce强制认证 获取base64格式证书 使用gettgtpkinit.py申请票据 ESC9攻击 配置要求 证书模板使用者名称选择UPN 设置msPKI-Enrollment-Flag为524288 设置用户ACL 利用方法 设置影子账户获取hash 修改test账户UPN为administrator 申请证书 恢复test账户UPN 使用证书进行认证 ESC10攻击 场景1 StrongCertificateBindingEnforcement设置为0 利用方法与ESC9相同,但可随意选择支持客户端身份验证的模板 场景2 设置注册表CertificateMappingMethods值为4(UPN) 修改用户UPN 申请证书 恢复UPN 使用证书请求LDAP并设置RBCD ESC11攻击 配置要求 域控上关闭强制加密 利用方法 使用ntlmrelay进行中继利用,配合打印机或PetitPotam触发 ESC13攻击 配置要求 创建通用组(组内无成员) 创建普通用户 配置证书模板: 使用者名称选择UPN 添加新颁发策略 设置组权限 设置msDS-OIDToGroupLink属性 利用方法 申请证书 获取票据 导入票据导出hash ESC15攻击 配置要求 用户注册权限 schema版本为1(默认) subjectName为请求中提供(默认) 利用方法 修改Web Server模板添加注册权限 添加客户端认证 使用LDAP方式认证(不支持Kerberos) 防御建议 限制证书模板权限 监控证书申请活动 及时安装安全补丁 限制CA管理权限 启用强证书绑定 定期审计AD CS配置 以上攻击技术展示了AD CS环境中多种权限提升路径,管理员应全面评估证书模板配置和权限分配,以降低安全风险。