Nazaj na blog

Zloraba Kerberosa: napadi, ki jih omogoca vasa infrastruktura Kerberos

August 05, 2024 5 min branja
Zloraba Kerberosa: napadi, ki jih omogoca vasa infrastruktura Kerberos
Nazadnje posodobljeno:

Kerberos je hrbtenica overitve Active Directory. Zasnovan je bil kot varen protokol, in teoreticno to je. Vendar v praksi nacin, kako organizacije konfigurirajo in upravljajo svojo infrastrukturo Kerberos, ustvarja priložnosti za napade, ki jih izkoriščam na skoraj vsakem projektu. Tezava ni nikoli Kerberos sam -- ampak predpostavke, ki jih administratorji delajo o tem, kako deluje, in bliznjice, ki jih uporabijo pri uvedbi storitev.

Razumevanje teh napadnih poti z obrambne perspektive je bistveno. Ce veste, kaj iscem, ko ciljam vaso infrastrukturo Kerberos, lahko ta vrata zaprete, preden pridem.

Kerberoasting: najzanesljivejsi napad na AD

Kerberoasting ostaja moja najuspesnejsa napadalna tehnika. Vsak overjen uporabnik domene lahko zahteva servisno vstopnico Kerberos (TGS) za katerikoli racun, ki ima registrirano ime storitve (SPN). Vstopnica je sifrirana z zgosceno vrednostjo gesla servisnega racuna. To vstopnico vzamem izven povezave in jo razbijem s hashcat ali John the Ripper. Brez omreznega prometa, brez alarmov, brez interakcije s ciljno storitvijo.

Razlog, da to tako zanesljivo deluje, je, da imajo servisni racuni skoraj vedno sibka, staticna gesla. Po mojih izkusnjah se vec kot 80% gesel servisnih racunov, ki jih izvlecem prek Kerberoastinga, razbije v eni uri. Mnoga se razbijejo v sekundah. Geslo "SqlService2020!" ni karikatura -- je resnicno geslo, ki sem ga razbil na vec projektih.

Kar naredi Kerberoasting unicujoc, ni samo obnovitev gesla. Ampak to, da so servisni racuni skoraj vedno prevec privilegirani. Imajo pravice Domain Admin, ker se je nekdo odlocil, da aplikacija "potrebuje" povisani dostop, ali ker je dokumentacija prodajalca rekla, da je treba podeliti polna dovoljenja. Ko razbijem eno geslo servisnega racuna, imam pogosto kljuce do celotne domene.

Obramba pred Kerberoastingom

Dokoncna resitev za Kerberoasting so Group Managed Service Accounts (gMSA). gMSA ima 240-znakovno nakljucno generirano geslo, ki se samodejno rotira vsakih 30 dni. gMSA ni mogoce kerberoastati, ker je geslo racunsko nemogoce razbiti. Vsaka storitev, ki podpira gMSA, bi morala biti takoj prenesena.

Za storitve, ki ne morejo uporabljati gMSA, uveljavite gesla z vsaj 25 znaki in visoko entropijo. Ne uporabljajte clovesko berljivih gesel za servisne racune. Generirajte nakljucne nize in jih shranjujte v trezor za upravljanje privilegiranega dostopa. Rotirajte jih vsaj vsako cetrtletje.

Na strani zaznavanja spremljajte dogodek ID 4769 na svojih krmilnikih domene. Isčite specificno zahteve za vstopnice z uporabo sifriranja RC4 (tip sifriranja 0x17). Sodobna okolja Windows bi morala uporabljati sifriranje AES. Porast zahtev za vstopnice RC4, zlasti iz enega samega vira, je mocen indikator aktivnosti Kerberoastinga. Konfigurirajte svoj SIEM za alarm na ta vzorec.

AS-REP Roasting: bratranec Kerberoastinga

AS-REP Roasting cilja racune, ki imajo onemogoceno predoveritecv Kerberos. Ko je predoveritev onemogocena, lahko zahtevam AS-REP za racun brez podajanja kakrsnihkoli poverilnic, odgovor pa vsebuje podatke, sifrirane z zgosceno vrednostjo gesla uporabnika. Razbijem jih izven povezave enako kot pri Kerberoastingu.

Ta nastavitev je vcasih onemogocena za zdruzljivost s starejsimi aplikacijami ali starejsimi odjemalci. Popravek je neposreden: revidirajte vse racune v svoji domeni za zastavico "Do not require Kerberos preauthentication" in jo odstranite, kjerkoli je mogoce. Redno poganjajte to poizvedbo PowerShell: Get-ADUser -Filter {DoesNotRequirePreAuth -eq $True}. Vsak racun na tem seznamu je ranljiv.

Napadi z delegacijo: neomejena, omejena in RBCD

Delegacija Kerberos je ena izmed najbolj napacno razumljenih in najnevarnejsih funkcij v Active Directory. Storitvi omogoca, da se predstavlja kot uporabnik pri dostopu do drugih storitev. Obstajajo trije tipi in vsi ustvarjajo priložnosti za napade, ko so napacno konfigurirani.

Neomejena delegacija je najnevarnejsa. Ko se uporabnik overja pri strezniku z neomejeno delegacijo, se njegova celotna vstopnica TGT shrani v pomnilnik na tem strezniku. Ce kompromitiram ta streznik, lahko izvlecem vsak TGT in se predstavljam kot vsak uporabnik, ki se je overil pri njem -- vkljucno z Domain Admini. Lahko tudi uporabim PrinterBug za prisiljevanje krmilnika domene, da se overja pri mojem kompromitiranem strezniku, pri cemer zajamem TGT racuna naprave DC-ja in izvedem napad DCSync.

Omejena delegacija omejuje, do katerih storitev je mogoce dostopati, a se vedno ima potencial za zlorabo. Ce kompromitiram racun z nastavljeno omejeno delegacijo, lahko uporabim S4U2Self in S4U2Proxy za pridobitev servisnih vstopnic za dovoljene ciljne storitve kot katerikoli uporabnik, vkljucno z Domain Admini.

Delegacija omejena na osnovi virov (RBCD) je najnovejsa oblika in tista, ki jo najpogosteje zlorabljam med napadi NTLM relay. Ce lahko spremenim atribut msDS-AllowedToActOnBehalfOfOtherIdentity na objektu racunalnika, ga lahko konfiguriram, da zaupa racunu naprave, ki ga nadziram, in se predstavljam kot katerikoli uporabnik pri tem racunalniku.

Utrjevanje delegacije Kerberos

Zacnite z revizijo vseh konfiguracij delegacije v svoji domeni. Uporabite BloodHound ali naslednje ukaze PowerShell za identifikacijo racunov z omogoceno delegacijo. Za neomejeno delegacijo: Get-ADComputer -Filter {TrustedForDelegation -eq $True}. Za omejeno delegacijo: Get-ADComputer -Filter {msDS-AllowedToDelegateTo -like '*'}. Preglejte vsak rezultat in dolocite, ali je delegacija resnicno potrebna.

Za racune, ki resnicno potrebujejo delegacijo, uporabljajte omejeno delegacijo z onemogocenim prehodom protokolov, kadarkoli je mogoce. Dodajte vse privilegirane racune v varnostno skupino Protected Users, ki preprecuje predpomnjenje njihovih TGT-jev na delegiranih streznikih. Oznacite vse obcutljive racune z zastavico "Account is sensitive and cannot be delegated".

Spremljajte dogodek ID 4768 za zahteve TGT in dogodek ID 4769 za zahteve servisnih vstopnic, povezane z delegacijo. Opazujte operacije S4U2Self in S4U2Proxy iz nepricakovanih virov. Ti dogodki se belezijo na krmilnikih domene in bi morali biti posredovani v vas SIEM za korelacijo.

Zlate in srebrne vstopnice: obstojnost po kompromitaciji

Ko ima napadalec dostop Domain Admin in izvlece zgosceno vrednost KRBTGT prek DCSync, lahko ponaredja zlate vstopnice -- TGT-je, ki so veljavni za kateregakoli uporabnika, vkljucno z neobstojecimi racuni, s katerimkoli clanstvom v skupinah. Zlata vstopnica je veljavna za celotno zivljenjsko dobo gesla KRBTGT, ki v mnogih okoljih ni bilo nikoli spremenjeno.

Obramba je dvakratna zaporedna rotacija gesla KRBTGT, ki razveljavi vse obstojece TGT-je. To bi moralo biti del vasega nacrta odziva na incidente in bi moralo biti izvedeno proaktivno po rednem urniku. Microsoft priporoca rotacijo vsakih 180 dni. Uporabite uradni skript za ponastavitev KRBTGT in najprej testirajte v laboratorijskem okolju.

Redno poganjajte PingCastle ali Purple Knight za oceno konfiguracije Kerberos. Ti orodji identificirata racune s SPN-ji, ki so ranljivi za Kerberoasting, napacne konfiguracije delegacije in zastarela gesla KRBTGT. Njune ugotovitve obravnavajte kot kontrolni seznam za utrjevanje Kerberosa in jih sistematicno obdelajte.

Vid Grosek

Vid Grosek

Etični heker & Penetracijski tester

Pomagam slovenskim podjetjem odkriti varnostne ranljivosti, preden jih odkrijejo napadalci. Vec kot 5 let izkusenj s penetracijskim testiranjem.

Vse objave

Komentarji

Ni se komentarjev. Bodite prvi!

Dodaj komentar

Vam je bil clanek vsec?

Prijavite se na newsletter za mesecne varnostne vpoglede.

Prijavite se