U ovom radu istražen je Kerberos autentifikacijski protokol, njegove ranjivosti i napadi. Kerberos je protokol za autentifikaciju zahtjeva između vjerovanih pružatelja usluga preko nepovjerljive mreže. Radi na klijent-server modelu, koristi secret-key kriptografiju, te zahtjeva autorizaciju od third-party entiteta za verifikaciju identiteta korisnika. Radi na principu zahtijevanja i dodjeljivanja ulaznica (ticket) raznim entitetima (nodes) povezanim u mrežu kako bi ih identificirao i dao im privremenu autorizaciju. Obrađeni si brojni poznati napadi na Kerberos autentifikaciju poput Pass-The-Ticket, Golden Ticket, Silver Ticket, DCShadow, Kerberoasting, Encryption downgrade.
Pristupanje mrežnim resursima predstavlja razne izazove. Jedan od tih izazova je i autorizacija, tko koji resurs smije koristiti. Problem autorizacije se rješava dodjeljivanjem raznih uloga koje su povezane s pojedinim identitetom. No tu dolazimo do novog problema, sigurnosti. Repetitivno dokazivanje identiteta preko mreže ne samo oduzima mnogo vremena nego uključuje i stalne razmjene korisničkih imena i lozinki putem ne uvijek sigurnih kanala. Taj problem pokušava riješiti Kerberos autentifikacijski protokol koji na siguran način svojim korisnicima pruža pristup određenim resursima unutar ograničenog vremenskog perioda izdavanjem posebnih ulaznica (ticket). Nažalost, kao i sve, on ima svoje mane, ranjivosti i poznate napade te se u ovom radu njima bavimo.
Kerberos autentifikacija je protokol za autentifikaciju zahtjeva između vjerovanih pružatelja usluga preko nepovjerljive mreže[1]. Kerberos je mrežni protokol koji radi na klijent-server modelu, koristi tajni ključ kriptografiju, te zahtjeva autorizaciju od vjerovane treće stranke (third-party) za verifikaciju identiteta korisnika. Radi na principu zahtijevanja i dodjeljivanja ulaznica (ticket) raznim entitetima (nodes) povezanim u mrežu kako bi ih identificirao[8].
Kerberos zahtjeva tri entiteta za autentifikaciju, te je iz tog razloga i dobio ime. Tri “glave” Kerberosa su[3]:
Kerberos protokol koristi ulaznice za sigurnu autentifikaciju korisnika i uređaja bez slanja 'plaintext' lozinki preko mreže. Te ulaznice su enkriptirane uporabom tajnog ključa između korisnika i autentifikacijskog servera[1]. Korisnici, sustavi i usluge koji koriste Kerberos protokol moraju samo vjerovati KDC-u[5].
KDC se sastoji od tri elementa[4]:
Tijekom autentifikacije, Kerberos sprema specifične ulaznice za svaku sesiju na uređaju krajnjeg korisnika. Umjesto lozinke, usluga koja koristi Kerberos protocol traži ulaznicu[4]. Razlikujemo dvije vrste ulaznica[8]:
Kerberos autentifikacija se odvija u dvije autentifikacijske faze koje su vidljive na slici [16], a ovdje će biti okvirno opisane[8]:
Inicijalna autentifikacija
Korisnik se prijavljuje u aplikaciju za uslugu kojoj želi pristupiti. Aplikacija enkriptira vremensku oznaku uz pomoć tajnog ključa (korisnikove lozinke) te ju šalje
autentifikacijskom serveru skupa s UID-om. Autentifikacijski server traži lozinku u svojoj bazi podataka sa istim UID-om te dekriptira primljenu vremensku oznaku uz
pomoć lozinke. Zatim generira Ticket Granting Ticket(TGT) i enkriptira ga uz pomoć tajnog ključa, te ga šalje nazad korisniku. Enkriptirani TGT se sastoji od pravog TGT-a i ključa sesije.
Nakon što primi taj paket, aplikacija ga dekriptira uz pomoć tajnog ključa, to jest lozinke korisnika. Korisnik sada ima TGT.
Sekundarna autentifikacija
Nakon primanja TGT-a, aplikacija šalje TGT Ticket Granting Serviceu(TGS) skupa s Service Principal Name(SPN) od usluge kojoj korisnik želi pristupiti, kako bi dobila Service
Granting Ticket(ST). TGS verificira TGT sa autentifikacijskim serverom za aktivnu sesiju i nakon verifikacije šalje ST nazad serveru aplikacije. Zatim autentifikacijski
server generira TGT koji sadrži korisnikov ID, adresu njegove mreže, vremensku oznaku, trajanje ulaznice i SK1. Nakon toga se ST šalje aplikaciji usluge kojoj korisnik
želi pristupiti, server provjerava ST s TGS-om te nakon verifikacije daje korisniku pristup željenoj usluzi.
Rad na Kerberosu je započeo u kasnim '80-ima na MIT-u. Trenutna verzija 5 je prvi put objavljena 1993. godine. U rujnu 2007. osnovan je MIT Kerberos konzorcij za daljnji razvoj i održavanje tehnologije protokola, te je 2013 proširen i preimenovan u MIT Kerberos and Internet Trust Consortium. Od Windowsa 2000, Microsoft koristi Kerberos protokol kao defaultnu metodu autentifikacije na Windowsima, te je integralni dio Windows Active Directory (AD) usluge. Implementacije Kerberosa se koriste i na Apple OS, FreeBSD, UNIX, Linux i drugim distribucijama[5]. Također je postao standard za web stranice i Single-Sign-On implementacije[2]. Projekt se održava kao open-source projekt te se službena dokumentacija može pronaći na [15].
Primarna prednost Kerberos protokola je uporaba jakih enkripcijskih algoritama za zaštitu lozinki i autentifikaciju ulaznica, te činjenica da korisnici ne moraju stalno unositi svoja korisnička imena i lozinke i ne moraju se direktno uslugama koje žele koristiti autentificirati[3].
Kerberos je dizajniran da bude siguran i efikasan, ali se oslanja na tajnost tajnih ključeva koji se koriste za enkripciju i dekripciju ulaznica u autentifikacijskom procesu. Ako napadač komprimira te tajne ključeve, može ih koristiti za ekstrakciju i dekripciju ulaznica koje može koristiti za pristup povjerljivim informacijama i resursima mreže. To je iznimno velika briga pogotovo zato što se Kerberos protokol često koristi u mrežama velikih kompanija. To ih čini pogotovo primamljivim napadačima jer napad na pojedinca može ugroziti cijelu mrežu kompanije[1]. Poput većine stvari na internetu, Kerberos protokol je sklon napadima. To ne znači da je on sam po sebi nesiguran, no neke miskonfiguracije u nekim verzijama i zlostavljanje pravih funkcionalnosti u protokolu čine ga metom napadača[8]. Budući da je jedan od najčešće korištenih autentifikacijskih protokola, hakeri su razvili nekolicinu načina za probijanje Kerbera. Većina tih napada iskorištava neku ranjivost, slabu lozinku ili malware, a nekada sve tri[2]. U ovom seminaru ćemo obraditi samo neke od mnogih napada.
Pass-The-Ticket napad je napad u kojem napadač ukrade Kerberos Ticket Granting Ticket(TGT) od korisnika te ga koristi za impersonaciju tog korisnika na mreži, zaobilazeći autentifikacijske mehanizme te time dobiva pristup resursima za koje nema autorizaciju. Napadač krade TGT-a s korisnikovog uređaja ili kompromizacijom servera koji provodi autentifikaciju za korisnika. Jednom kada napadač ima pristup jednom od tih ulaznica, mogu ju koristiti za zahtijevanje dodatnih autoriteta ili krađu podataka[9].
Golden Ticket napad je napad u kojem napadač pokuša dobiti najveći mogući stupanj autorizacije u domeni organizacije time što pristupa podacima korisnika spremljenih u Microsoft Active Directory (AD). Ovaj napad iskorištava slabost u Kerberos autentifikaciji identiteta, s kojom pristupa AD-u, čime dozvoljava napadaču da zaobiđe uobičajeni proces autentifikacije[10]. Napadači iskorištavaju krbtgt račun, ključan račun u Kerberos protokolu odgovoran za enkripciju i potpisivanje svih domenskih ulaznica. Napadači prvo prodru u sustav, povećaju si privilegije na razinu administratora domene, što im dozvoljava da izvade NTHash krbtgt računa i identificiraju domenin sigurnosni identifikator (SID). S tim informacijama, napadači sami sebi stvaraju “Zlatnu ulaznicu”, repliciranu ulaznicu koja funkcionira kao pravi TGT koja ima proizvoljni autoritet[11].
Silver Ticket napad je sličan Golden Ticket napadu, no u njemu napadač krivotvori Ticket Granting Service (TGS) za specifične usluge. TGS ulaznice su enkriptirane s hash lozinkom usluge, stoga ako napadač ukrade hash usluge, mogu stvarati TGS za tu uslugu. Iako je domet Silver Ticket napada manji nego Golden Ticket napada, još uvijek je moćan alat koji dozvoljava trajne i teško primijetiv pristup raznim resursima. Budući da je potreban samo hash usluge, znatno je lakši nego Golden Ticket napad[12].
DCShadow je kasno fazni ubilački lanac napada koji dozvoljava napadaču s komprimiranom autorizacijom da registrira svoj Active Directory domain controller (ADDC) te sam replicira maliciozne modifikacije u sustavu. Ovaj napad je težak za spriječiti jer ne iskorištava ranjivosti protokola nego iskorištava prave i potrebne funkcije protokola koje su esencijalne za pravilan rad protokola. Također ih je teško otkriti jer su promjene s lažnog ADDC registrirane, procesirane i primijenjene kao da su izdane s pravog ADDC[13].
U Kerberoasting napadu napadač koristi posebne alate za ekstrakciju enkriptiranih Kerberos ulaznica iz mreže, te ih onda sam pokuša dekriptirati[1]. Dekripcijom pokušava dobiti hash lozinku AD računa koji ima Service Principal Name(SPN). Napadač onda pokušava offline razbiti hash lozinku, često upotrebljavajući brute force metode. Jednom kada se dođe do 'plaintext' kredencijala računa usluge, napadač može glumiti vlasnika usluge te su time ugroženi svi resursi te usluge[1].
U ovom napadu, napadač iskorištava ranjivost u nekim verzijama protokola te na silu mijenja enkripciju s AES na neke slabije enkripcije poput MD4-RC4. Nakon toga može uz pomoć brute-force metoda naći željene informacije[5].
Kerberos autentifikacijski protokol pruža sigurno i efikasno rješenje problemu autentifikacije zahtjeve između vjerovanih pružatelja usluga preko nepovjerljive mreže. Unatoč tome poznate su neke ranjivosti i napadi nad njime. Mnogi tradicionalni alati za sigurnost nisu dizajnirani za nadgledanje aktivnosti već postojećih korisnika. Česti nedostatak malware programa u ovim napadima ostavlja brojne uobičajene mjere sigurnosti poput antivirusa bespomoćnima. Stoga bi se za pravilnu sigurnost trebala primjenjivat stroga pravila oko šifra, multi-faktorska autentifikacija, alati za nadgledanje aktivnosti i prodora mreže kako bi se svi resursi zaštitili[1].
[1] What Is Kerberoasting Attack? https://www.sentinelone.com/cybersecurity-101/what-is-kerberoasting-attack/
[2] Kerberos Authentication Explained https://www.varonis.com/blog/kerberos-authentication-explained
[3] Kerberos authentication: How it works — and how to maximize its security https://blog.quest.com/kerberos-authentication-how-it-works-and-how-to-maximize-its-security/
[4] Kerberos Authentication Definition https://www.fortinet.com/resources/cyberglossary/kerberos-authentication
[5] What is Kerberos? https://www.techtarget.com/searchsecurity/definition/Kerberos
[6] Technical Analysis of CVE-2022-33679 and CVE-2022-33647 Kerberos Vulnerabilities https://www.silverfort.com/blog/technical-analysis-of-cve-2022-33679-and-cve-2022-33647-kerberos-vulnerabilities/
[7] Kerberos Attacks https://www.prosec-networks.com/en/blog/kerberos-attacks/
[8] Kerberos Authentication: Basics to Kerberos attacks https://thecyphere.com/blog/kerberos-authentication-attacks/
[9] Pass-the-Ticket Attacks https://www.beyondtrust.com/resources/glossary/what-are-pass-the-ticket-attacks
[10] What is a Golden Ticket Attack? https://www.crowdstrike.com/cybersecurity-101/golden-ticket-attack/
[11] Golden Ticket Attack Explained - MITRE ATT&CK T1558.001 https://www.picussecurity.com/resource/blog/golden-ticket-attack-mitre-t1558.001
[12] Silver Ticket Attack https://www.netwrix.com/silver_ticket_attack_forged_service_tickets.html
[13] What a DCShadow Attack Is and How to Defend Against It https://blog.netwrix.com/2022/09/28/dcshadow_attack/
[14] Kerberoasting Attacks https://www.crowdstrike.com/cybersecurity-101/kerberoasting/
[15] MIT Kerberos Documentation https://web.mit.edu/kerberos/krb5-latest/doc/#
[16] The Kerberos authentication process https://cdn.ttgtmedia.com/rms/onlineimages/kerberos_authentication_process_diagram-f.png