10.4 Útoky na Kerberos (AS-REP a Kerberoasting)
Tyto dva typické a velmi oblíbené typy útoků zneužívají podstatu fungování autentizace Kerberos. Spoléhají se na vyžádání platných lístků, resp. zpráv a jejich částí od řadiče domény a na jejich následné louskání hrubou silou nebo pomocí slovníku mimo doménu (offline), čímž zjišťují nešifrovaná uživatelská hesla.
1. AS-REP Roasting
Při standardním TGT požadavku (AS_REQ) v Kerberosu je aplikována takzvaná Pre-Authentication (Předověření). Ta zaručuje, že žádost je opravdu provedena ze strany uživatele, který zná své heslo (tím, že je připojeno časové razítko zašifrované hashem). Někdy jsou ovšem v doméně z legacy (zpětná kompatibilita) důvodů účty nastaveny tak, že mají toto Předověření vypnuto (Do not require Kerberos preauthentication).
- Útočník identifikuje uživatelské účty, které mají zakázanou předautentizaci.
- Pošle doménovému řadiči AS_REQ pro tyto účty. Žádné heslo znát nepotřebuje.
- Řadič mu automaticky vrátí odpověď AS_REP s obsaženým TGT.
- Součástí zprávy AS_REP je část, která je zašifrována klíčem (hashem) tohoto cílového uživatele.
- Útočník si takto vrácenou kryptogramovou zprávu uloží a následně se ji snaží prolomit v režimu offline (crackování), aby získal samotné heslo uživatele.
Nevýhody pro útočníka: Musí nejprve odhadnout či znát správná uživatelská jména. V závislosti na nastavení LDAP serveru (jestli dovolí anonymní binds a anonymní dotazování skupinou
ANONYMOUS LOGON) může nebo nemusí být schopen přečíst si seznam existujících jmen bez autentizace.2. Kerberoasting
Zatímco AS-REP se zaměřuje na prvotní tiket (TGT) a k útočení využívá účty se zakázaným předověřením, Kerberoasting funguje na principu krádeže servisních lístků u existujících servisních účtů.
- Útočník musí mít (na rozdíl od AS-REP roasting) kontrolu nad nějakým přihlášeným/autentizovaným uživatelem v doméně (byť málo privilegovaným), přes nějž má k dispozici platný TGT.
- S využitím protokolu LDAP útočník vyjmenuje doménové uživatele, kteří mají definován atribut
ServicePrincipalName(SPN). Často jde o účty na kterých běží aplikace nebo služby (tzv. service accounts). Nevyhledávají se běžné počítačové účty (s `$` na konci), neboť ty mají systémem složitě generovaná hesla, která se velmi těžko dešifrují. - Na identifikované služby podá útočník u doménového řadiče TGS_REQ, přičemž vyžaduje servisní lístky.
- Řadič požadavek schválí a útočník získá TGS_REP a servisní lístek, který obsahuje část zašifrovanou heslem samotného servisního účtu, nikoliv útočníka!
- Útočník opět tuto zašifrovanou část stáhne k sobě a provede offline cracking hrubou silou či slovníkem. Tím získá plaintextové heslo oběti. Servisní účty mají často historicky nastavená slabá nebo nezměnitelná hesla.