Skip to main content

ADCS

ADCS 的利用,是这几年里较新的利用手段。因此,我们也需要对 ADCS 进行枚举。ADCS(Active Directory 证书服务)是 Microsoft 的 PKI 实现,可与现有的 Active Directory 森林集成,从而实现数字证书的创建和管理。这些证书具有多种功能,如对用户进行身份验证,对文件和通信进行加密,提供数字签名以及验证电子文档。ADCS 使管理员能够建立并监督他们的证书颁发机构(CA),以向组织内的用户、计算机和其他资源颁发数字证书。与使用外部证书提供商相比,这种方法被认为更安全、更高效。

然而,同其他技术一样,不当的配置会引入可被利用的风险因素。在 ADCS 的上下文中,可以导致特权提升 (普通域用户甚至可以提升至域管理员) 以及持久化。我们可以使用工具 Certify (https://github.com/GhostPack/Certify) 来枚举域内的ADCS。


枚举CA

我们可以用 certify.exe 以及 cas 选项来枚举域内的 CA。

certify.exe cas

而在 Linux 操作系统中,我们可以通过 pip3 install certipy-ad 命令来安装 Certify Linux 版 Certipy。

image.png

不过,white-bird 域中并没有 ADCS 服务,因此也没有 CA 的存在。

image.png

对于 PROD 以及 RAVEN-MED 也一样。

image.png

实际上,med-factory 域中存在 ADCS 服务。我们发现,172.16.1.32 这台内部主机,即 Cert01 开放了 80 端口,是个 HTTP 服务。

image.png

当我们访问终端 certsrv,发现需要验证,虽然我们还没有有效的凭证,但是这证明了 Med-factory 确实存在着 ADCS 服务,而 Cert01 提供了 ADCS 的 Web 终端。

image.png

RAVEN-MED 森林被 Med-factory 信任,因此我们需要一个有效的 RAVEN-MED 森林中的帐号来跨域枚举 Med-factory 的 ADCS 信息,PROD 域中的 Alice 的凭证可以被我们所用。

我们以 LinuxAlice 操作系统身份跨域对 med-factory.local 域的 CA 进行枚举

beacon> execute-assembly certify.exe cas /domain:med-factory.local
[*] Tasked beacon to run .NET program: certify.exe cas /domain:med-factory.local
[+] host called home, sent: 279141 bytes
[+] received output:

   _____          _   _  __              
  / ____|        | | (_)/ _|             
 | |     ___ _ __| |_ _| |_ _   _        
 | |    / _ \ '__| __| |  _| | | |      
 | |___|  __/ |  | |_| | | | |_| |       
  \_____\___|_|   \__|_|_|  \__, |   
                             __/ |       
                            |___./        
  v1.0.0                               


[+] received output:
[*] Action: Find certificate authorities
[*] Using the search base 'CN=Configuration,DC=med-factory,DC=local'


[*] Root CAs


[+] received output:
    Cert SubjectName              : CN=med-factory-CERT01-CA, DC=med-factory, DC=local
    Cert Thumbprint               : E68CB2ADB9E53C169D1D6740D3F96E064AD62B0E
    Cert Serial                   : 41D46C07284C818C44EDFA659A7148BD
    Cert Start Date               : 1/20/2023 8:45:25 PM
    Cert End Date                 : 1/20/2028 8:55:25 PM
    Cert Chain                    : CN=med-factory-CERT01-CA,DC=med-factory,DC=local



[*] NTAuthCertificates - Certificates that enable authentication:

    Cert SubjectName              : CN=med-factory-CERT01-CA, DC=med-factory, DC=local
    Cert Thumbprint               : E68CB2ADB9E53C169D1D6740D3F96E064AD62B0E
    Cert Serial                   : 41D46C07284C818C44EDFA659A7148BD
    Cert Start Date               : 1/20/2023 8:45:25 PM
    Cert End Date                 : 1/20/2028 8:55:25 PM
    Cert Chain                    : CN=med-factory-CERT01-CA,DC=med-factory,DC=local


[*] Enterprise/Enrollment CAs:

    Enterprise CA Name            : med-factory-CERT01-CA
    DNS Hostname                  : cert01.med-factory.local
    FullName                      : cert01.med-factory.local\med-factory-CERT01-CA
    Flags                         : SUPPORTS_NT_AUTHENTICATION, CA_SERVERTYPE_ADVANCED
    Cert SubjectName              : CN=med-factory-CERT01-CA, DC=med-factory, DC=local
    Cert Thumbprint               : E68CB2ADB9E53C169D1D6740D3F96E064AD62B0E
    Cert Serial                   : 41D46C07284C818C44EDFA659A7148BD
    Cert Start Date               : 1/20/2023 8:45:25 PM
    Cert End Date                 : 1/20/2028 8:55:25 PM
    Cert Chain                    : CN=med-factory-CERT01-CA,DC=med-factory,DC=local
    UserSpecifiedSAN              : Could not connect to the HKLM hive - The network path was not found.

    CA Permissions                :
[X] Could not connect to the HKLM hive - The network path was not found.



[+] received output:
    Enabled Certificate Templates:
        ClientAuth
        DirectoryEmailReplication
        DomainControllerAuthentication
        KerberosAuthentication
        EFSRecovery
        EFS
        DomainController
        WebServer
        Machine
        User
        SubCA
        Administrator

image.png

image.png

从输出中,我们可以通过看到 pip3CA install certipy-ad 命令来安装 Certify Linux 版 Certipy。信息以及可用的证书模板。

image.png


枚举脆弱的证书模板

证书模板是预定义格式的证书,可用于创建具有指定属性的新证书。配置不当的证书模板可被用于域内提权,我们可以让 certify 帮我们自动寻找配置不当的证书,但 Certify 只会寻找全局脆弱的证书模版,即所有域用户都能利用的证书模板,而可能忽视特定用户可以利用的脆弱证书模板。

certify.exe find /vulnerable

实际上,Vuln1 与 Vuln2 都是可被利用的脆弱证书模板,但 Certify 并没有发现。

beacon> execute-assembly certify.exe find /vulnerable /domain:med-factory.local
[*] Tasked beacon to run .NET program: certify.exe find /vulnerable /domain:med-factory.local
[+] host called home, sent: 279167 bytes
[+] received output:

   _____          _   _  __              
  / ____|        | | (_)/ _|             
 | |     ___ _ __| |_ _| |_ _   _        
 | |    / _ \ '__| __| |  _| | | |      
 | |___|  __/ |  | |_| | | | |_| |       
  \_____\___|_|   \__|_|_|  \__, |   
                             __/ |       
                            |___./        
  v1.0.0                               

[*] Action: Find certificate templates
[*] Using the search base 'CN=Configuration,DC=med-factory,DC=local'

[*] Listing info about the Enterprise CA 'med-factory-CERT01-CA'

    Enterprise CA Name            : med-factory-CERT01-CA
    DNS Hostname                  : cert01.med-factory.local
    FullName                      : cert01.med-factory.local\med-factory-CERT01-CA
    Flags                         : SUPPORTS_NT_AUTHENTICATION, CA_SERVERTYPE_ADVANCED
    Cert SubjectName              : CN=med-factory-CERT01-CA, DC=med-factory, DC=local
    Cert Thumbprint               : E68CB2ADB9E53C169D1D6740D3F96E064AD62B0E
    Cert Serial                   : 41D46C07284C818C44EDFA659A7148BD
    Cert Start Date               : 1/20/2023 8:45:25 PM
    Cert End Date                 : 1/20/2028 8:55:25 PM
    Cert Chain                    : CN=med-factory-CERT01-CA,DC=med-factory,DC=local

[+] received output:
    UserSpecifiedSAN              : Disabled
    CA Permissions                :
      Owner: BUILTIN\Administrators        S-1-5-32-544

      Access Rights                                     Principal

      Allow  Enroll                                     NT AUTHORITY\Authenticated UsersS-1-5-11
      Allow  ManageCA, ManageCertificates               BUILTIN\Administrators        S-1-5-32-544
      Allow  ManageCA, ManageCertificates               <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
      Allow  ManageCA, ManageCertificates               <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
    Enrollment Agent Restrictions : None

[+] received output:

[!] Vulnerable certificate templates that exist but an Enterprise CA does not publish:

    Vuln1


[+] No Vulnerable Certificates Templates found!

image.png


image.png

对于读不懂的 SID 值,我们可以将其转换为名称

Convert-sidtoName <SID>

image.png

 

枚举允许客户认证的模板

我们可以寻找允许客户认证的模板,即申请了证书之后可以用于提供身份认证,就像有了凭证一样。不仅可以用于模仿其他用户,还可以实现持久化。

certify.exe find /clientauth /ca: [ca] 

有多个证书模板允许客户认证,但列举的依旧并不完整。

beacon> execute-assembly certify.exe find /clientauth /domain:med-factory.local
[*] Tasked beacon to run .NET program: certify.exe find /clientauth /domain:med-factory.local
[+] host called home, sent: 279167 bytes
[+] received output:

   _____          _   _  __              
  / ____|        | | (_)/ _|             
 | |     ___ _ __| |_ _| |_ _   _        
 | |    / _ \ '__| __| |  _| | | |      
 | |___|  __/ |  | |_| | | | |_| |       
  \_____\___|_|   \__|_|_|  \__, |   
                             __/ |       
                            |___./        
  v1.0.0                               

[*] Action: Find certificate templates
[*] Using the search base 'CN=Configuration,DC=med-factory,DC=local'

[*] Listing info about the Enterprise CA 'med-factory-CERT01-CA'

    Enterprise CA Name            : med-factory-CERT01-CA
    DNS Hostname                  : cert01.med-factory.local
    FullName                      : cert01.med-factory.local\med-factory-CERT01-CA
    Flags                         : SUPPORTS_NT_AUTHENTICATION, CA_SERVERTYPE_ADVANCED
    Cert SubjectName              : CN=med-factory-CERT01-CA, DC=med-factory, DC=local
    Cert Thumbprint               : E68CB2ADB9E53C169D1D6740D3F96E064AD62B0E
    Cert Serial                   : 41D46C07284C818C44EDFA659A7148BD
    Cert Start Date               : 1/20/2023 8:45:25 PM
    Cert End Date                 : 1/20/2028 8:55:25 PM
    Cert Chain                    : CN=med-factory-CERT01-CA,DC=med-factory,DC=local
    UserSpecifiedSAN              : Disabled
    CA Permissions                :
      Owner: BUILTIN\Administrators        S-1-5-32-544

      Access Rights                                     Principal

      Allow  Enroll                                     NT AUTHORITY\Authenticated UsersS-1-5-11
      Allow  ManageCA, ManageCertificates               BUILTIN\Administrators        S-1-5-32-544
      Allow  ManageCA, ManageCertificates               <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
      Allow  ManageCA, ManageCertificates               <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
    Enrollment Agent Restrictions : None
Enabled certificate templates capable of client authentication:

............

    CA Name                               : cert01.med-factory.local\med-factory-CERT01-CA
    Template Name                         : DomainControllerAuthentication
    Schema Version                        : 2
    Validity Period                       : 1 year
    Renewal Period                        : 6 weeks
    msPKI-Certificate-Name-Flag          : SUBJECT_ALT_REQUIRE_DNS
    mspki-enrollment-flag                 : AUTO_ENROLLMENT
    Authorized Signatures Required        : 0
    pkiextendedkeyusage                   : Client Authentication, Server Authentication, Smart Card Logon
    mspki-certificate-application-policy  : Client Authentication, Server Authentication, Smart Card Logon
    Permissions
      Enrollment Permissions
        Enrollment Rights           : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-498
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-516
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
                                      NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERSS-1-5-9
        AutoEnrollment Rights       : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-498
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-516
                                      NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERSS-1-5-9
      Object Control Permissions
        Owner                       : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
        WriteOwner Principals       : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
        WriteDacl Principals        : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
        WriteProperty Principals    : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519

    CA Name                               : cert01.med-factory.local\med-factory-CERT01-CA
    Template Name                         : KerberosAuthentication
    Schema Version                        : 2
    Validity Period                       : 1 year
    Renewal Period                        : 6 weeks
    msPKI-Certificate-Name-Flag          : SUBJECT_ALT_REQUIRE_DOMAIN_DNS, SUBJECT_ALT_REQUIRE_DNS
    mspki-enrollment-flag                 : AUTO_ENROLLMENT
    Authorized Signatures Required        : 0
    pkiextendedkeyusage                   : Client Authentication, KDC Authentication, Server Authentication, Smart Card Logon
    mspki-certificate-application-policy  : Client Authentication, KDC Authentication, Server Authentication, Smart Card Logon
    Permissions
      Enrollment Permissions
        Enrollment Rights           : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-498
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-516
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
                                      NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERSS-1-5-9
        AutoEnrollment Rights       : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-498
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-516
                                      NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERSS-1-5-9
      Object Control Permissions
        Owner                       : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
        WriteOwner Principals       : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
        WriteDacl Principals        : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519
        WriteProperty Principals    : <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-512
                                      <UNKNOWN>                     S-1-5-21-2207869169-3133627043-1838267575-519



Certify completed in 00:00:00.8096505

image.png


image.png

 

枚举ADCS网页终端

对于开放了网页证书签发终端的 CA 服务器来说,其访问地址为 http(s)://[主机名]<CA>/certsrv

image.png