Útok na zranitelnosti AD CS ESC pomocí Metasploitu – 2. část
V tomto článku budeme pokračovat zneužitím nastavení certifikační autority AD CS, a to sice zranitelnostmi ESC3 a ESC4, jednoduše z pohodlí Metasploitu. Součástí bude i samotná eskalace privilegií na doménového administrátora.
ESC3
Pro využití zranitelných šablon ESC3 použijeme podobný postup jako u šablon ESC2, ale s mírně odlišnými kroky. Nejprve se vraťme k předchozímu výstupu v první části článku, kde najdeme několik šablon zranitelných vůči útokům ESC3. Musíme je však rozdělit podle vektoru útoku. Důvodem je, že první polovina tohoto útoku potřebuje použít šablony certifikátů zranitelné ESC3_TEMPLATE_1 k zápisu do šablony certifikátu, která má OID Certificate Request Agent (1.3.6.1.4.1.311.20.2.1), který umožňuje žádat o certifikáty jménem jiných zadavatelů (například uživatelů nebo počítačů).
Druhá část tohoto útoku pak bude vyžadovat, abychom spolupodepsali žádosti o další certifikát pomocí právě získaného certifikátu a následně požádali o certifikát, kterým se můžeme ověřovat jménem jiného uživatele. K tomu budeme muset v modulu ldap_esc_vulnerable_cert_finder vyhledat certifikáty, které jsou označeny jako zranitelné vůči útoku ESC3_TEMPLATE_2.
Seznam šablon zranitelných útokem ESC3_TEMPLATE_1 je poměrně krátký a skládá se z jediné šablony:
ESC3-TEMPLATE-1 - Zranitelná vůči ESC3_TEMPLATE_1 a umožňuje žádost prostřednictvím libovolného ověřeného uživatele domény.
Šablony ESC3_TEMPLATE_2 jsou však hojnější a můžeme najít několik zajímavých:
SubCA - jak již bylo zmíněno, opět mohou vystavovat pouze správci domén a podnikoví správci, takže se nejedná o použitelný vektor.
ESC3-Template2 - lze vystavit prostřednictvím libovolného ověřeného doménového uživatele.
User - Vystavitelný prostřednictvím libovolného ověřeného uživatele domény.
Administrator - Mohou jej vystavit pouze správci domény a podnikoví správci, takže není použitelným vektorem.
DomainController – Může být vystaven pouze uživateli Domain Admins a Enterprise Admins, takže to není validní vektor.
Zúžíme-li tento seznam na ty, které můžeme skutečně vystavit jako uživatelé, zbývají nám User a ESC3-Template2 jako šablony, které lze použít pro druhou část této zranitelnosti.
Nejprve získáme certifikát pomocí ipcr_cert s certifikátem ESC3-Template1.
Dále se pokusíme použít tento certifikát k vyžádání jiného certifikátu jménem jiného uživatele. Pro tuto fázi musíme zadat jiný certifikát, který je zranitelný vůči vektoru útoku ESC3_TEMPLATE_2, který jsme schopni zapsat. K tomu použijeme šablonu User:
Abych ukázal, že je to možné i s ESC3-Template2, zde je ukázka, která je také funkční:
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.
ESC4
Abychom mohli zneužít ESC4, budeme potřebovat účet s právy zápisu nad objektem šablony certifikátu ve službě Active Directory. To znamená najít objekt se slabými oprávněními definovanými v poli nTSecurityDescriptor. Pak můžeme upravit a překonfigurovat šablonu tak, aby byla zranitelná jinou technikou ESC.
Nejprve použijeme modul icpr_cert při pokusu o zneužití ESC1 (nastavením ALT_UPN). To se nepodaří, protože šablona certifikátu ESC4-Test neumožňuje v žádosti uvést jméno subjektu certifikátu (v poli msPKI-Certificate-Name-Flag není nastaven příznak CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT).
Dále použijeme modul ad_cs_cert_template k aktualizaci šablony certifikátu ESC4-Test. Tento proces nejprve vytvoří zálohu dat certifikátu, kterou lze použít později. Poté se načtou místní data šablony certifikátu a použijí se k aktualizaci objektu v Active Directory. Data místní šablony certifikátu lze upravit tak, aby byl nastaven vlastní deskriptor zabezpečení.
Nyní, když byla šablona certifikátu aktualizována tak, aby byla zranitelná vůči ESC1, můžeme se přepnout zpět do posledního modulu a znovu se pokusit vystavit certifikát. Tentokrát se operace podaří.
Nakonec se přepneme zpět na modul ad_cs_cert_template, abychom obnovili původní konfiguraci. To provedeme tak, že nastavíme místní šablonu TEMPLATE_FILE na JSON soubor, který byl vytvořen při předchozím spuštění.
V tomto okamžiku byla obnovena konfigurace šablony certifikátu a útočník má k dispozici certifikát, který lze použít k ověření ve službě Active Directory jako doménový administrátor.
Autentizace pomocí certifikátu
Metasploit podporuje ověřování pomocí certifikátů několika různými způsoby. Tyto techniky lze použít k dalším akcím po vydání certifikátu pro určitou identitu (například uživatele Domain Admin).
Vůči Kerberos
Certifikáty lze použít k ověření vůči Kerberos pomocí modulu kerberos/get_ticket zadáním volby CERT_FILE. Vezměte soubor certifikátu z poslední fáze útoku a nastavte jej jako soubor CERT_FILE. Certifikáty z Metasploitu nevyžadují heslo, ale pokud byl certifikát vygenerován ze zdroje, který heslo nastavil, lze ho zadat v parametru CERT_PASSWORD. Nastavte RHOST na řadič domény, který je distribučním centrem klíčů (KDC) pro prostředí Active Directory.
Získání NT hashe
Certifikáty lze použít k získání hashe NTLM účtu s rozšířením PKINIT. Chcete-li si vyžádat hash, nastavte akci na hodnotu GET_HASH.
Získání Kerberos ticketu
Certifikáty lze použít k vydání TGT (Kerberos ticket granting ticket), který lze následně použít k ověření ke službám, jako jsou HTTP, LDAP a SMB. Ticket granting tickets lze vystavit pomocí akce GET_TGT.
Jakmile je TGT vydán, lze jej zobrazit ve výstupu příkazu klist. Pokud je TGT uložen, bude v budoucnu automaticky použit k vyžádání ticket granting services (TGS) pro ověřování konkrétních služeb.
Vůči LDAP
Certifikáty lze také použít k přímému ověřování do LDAP pomocí schannel. Moduly Metasploitu, které používají vestavěnou knihovnu LDAP (včetně auxiliary/gather/ldap_query), toto nabízejí jako volitelné možnosti:
LDAP::Auth - musí být nastaveno na schannel
LDAP::CertFile - musí být nastaveno na soubor certifikátu PFX, pomocí kterého se má ověřování provádět.
SSL - musí být nastaveno na true (ověřování schannel je kompatibilní pouze s TLS spojeními).
Závěr
V tomto dvoudílném seriálu jsme si popsali existující zranitelnosti certifikační platformy v doméně Windows, tzv. ESC1 až ESC11. Ukázali jsme si, že nejběžnější typy ESC1 – ESC4 lze zneužít poměrně jednoduše v prostředí Metasploitu včetně praktických ukázek.
Jako administrátor domény není radno tyto typy zranitelností podceňovat, protože pro útočníky se jedná o poměrně rychlý a přímočarý způsob, jak eskalovat svá privilegia úplně nejvýš – na doménového administrátora.