Kerberoasting is een aanvalstechniek die het Kerberos-authenticatieprotocol in Active Directory gebruikt om wachtwoorden van serviceaccounts in Active Directory (AD)-omgevingen te stelen. Het Kerberos-authenticatieprotocol wordt in veel organisaties gebruikt. Aanvallers kunnen hiermee, zelfs met reguliere gebruikersrechten, toegang krijgen tot hoog geprivilegieerde accounts. Dit is een serieus risico voor organisaties. In dit artikel lees je hoe je het Kerberoasting effectief kunt detecteren en voorkomen.
Kerberos gebruikt Service Principal Names (SPN’s) om serviceaccounts te identificeren die op servers draaien (zoals SQL-services, webservices, enz.). Elke SPN is gekoppeld aan een specifiek serviceaccount en kan door elke gebruiker binnen het domein worden opgevraagd.
Aanvallers die toegang hebben tot het domein (zelfs met reguliere gebruikersrechten) kunnen een Ticket Granting Service (TGS)-ticket aanvragen voor elke service via de bijbehorende SPN. Dit ticket is versleuteld met de wachtwoordhash van het serviceaccount.
Zodra de aanvaller het versleutelde TGS-ticket ontvangt, kan deze het uit het geheugen of uit de Kerberos ticketcache halen. Omdat het ticket is versleuteld met de wachtwoordhash van het serviceaccount, beschikt de aanvaller op dat moment nog niet over het daadwerkelijke wachtwoord.
De aanvaller voert vervolgens een offline brute-force- of dictionary-aanval uit op het versleutelde ticket om het wachtwoord in platte tekst van het serviceaccount te achterhalen. Deze stap is afhankelijk van de sterkte van het wachtwoord van het serviceaccount en de gebruikte encryptiemethode. Offline kraken zorgt ervoor dat het aantal mislukte inlogpogingen beperkt blijft, waardoor de aanval moeilijker te detecteren is. Dit kan bijvoorbeeld worden gedaan met tools zoals: John the Ripper, Hashcat, tgsrepcrack.py, enzovoort.
Zodra het wachtwoord is gekraakt, kan de aanvaller de inloggegevens van het serviceaccount gebruiken om toegang te krijgen tot het netwerk met dezelfde rechten als dat account. Omdat serviceaccounts vaak verhoogde rechten hebben, kan dit leiden tot laterale beweging en verdere compromittering van de omgeving.
Bij het monitoren van indicatoren van kwaadaardige activiteit is het belangrijk om te beseffen dat het aanvragen van een serviceticket een legitieme activiteit is. Geen van de onderstaande indicatoren is op zichzelf kwaadaardig; ze moeten worden beschouwd als verdachte signalen die nader onderzocht moeten worden om de activiteit te bevestigen.
In de Windows Security event logs (C:\Windows\System32\winevt\Logs\Security.evtx) genereert een Kerberos serviceticketaanvraag een event met Event ID 4769 op een Domain Controller.
Event ID 4769 wordt doorgaans zeer frequent gelogd binnen een domein. Na een initiële login (en het aanvragen van een Kerberos TGT-ticket) heeft een gebruiker een Kerberos TGS-serviceticket nodig om toegang te krijgen tot netwerkdiensten (zoals file shares, SQL, SharePoint, enz.).
Over het algemeen zijn er ongeveer 10 tot 20 Kerberos TGS-aanvragen per gebruiker per dag. Event ID 4769 op Domain Controllers wordt vaak als “ruisachtig” beschouwd vanwege het grote aantal logs en wordt daarom niet altijd standaard gelogd.
Wanneer de events worden gefilterd op aantallen, kunnen ze worden geanalyseerd om aanwijzingen voor kwaadaardige activiteit te identificeren, zoals:
Een ander event dat gebruikt kan worden voor het opsporen van deze aanvallen is Security Event ID 4768 (A Kerberos authentication ticket (TGT) was requested). Dit event wordt gegenereerd op Domain Controllers wanneer een ticket wordt aangevraagd. Veel van de informatie in dit event komt overeen met de informatie in Event ID 4769.
Het is essentieel om te onthouden dat Security Event IDs 4768 en 4769 niet standaard zijn ingeschakeld in Windows auditing.
Kerberoasting is afhankelijk van het offline kraken van wachtwoorden. In dit geval is de hash niet bruikbaar zonder deze te ontsleutelen. De meest effectieve maatregel om deze aanvallen te voorkomen is daarom het implementeren van een sterk bedrijfsbreed wachtwoordbeleid. Daarnaast helpen de volgende aanbevelingen bij het voorkomen en beperken van Kerberoasting:
Deze accounts moeten alleen de rechten hebben die noodzakelijk zijn om hun taken uit te voeren. Vermijd het toekennen van overmatige rechten, zoals Domain Admin of andere hooggeprivilegieerde rechten.
Wachtwoorden moeten lang en complex zijn (minimaal 25 tekens). Dit maakt het brute-forcen van de wachtwoordhash bij een Kerberoasting-aanval aanzienlijk moeilijker. Roteer wachtwoorden regelmatig om de blootstellingsduur te beperken, met name voor gevoelige accounts. Overweeg waar mogelijk het gebruik van Group Managed Service Accounts (gMSA’s).
Alleen accounts die Kerberos-authenticatie vereisen, mogen SPN’s geregistreerd hebben.
Configureer Kerberos om sterkere encryptiemethoden zoals AES256 te gebruiken in plaats van het zwakkere RC4, dat gevoeliger is voor offline aanvallen. Zorg ervoor dat zowel serviceaccounts als domain controllers AES ondersteunen en gebruiken. Dit kan worden ingesteld via Group Policy.
Deze beveiligingsgroep voorkomt dat accounts zwakke encryptie gebruiken voor Kerberos-authenticatie en schakelt NTLM-authenticatie uit. Voeg accounts met hoge waarde toe aan deze groep om het risico op Kerberoasting en andere credential-based aanvallen te beperken.
Kerberoasting-aanvallen worden vaak gebruikt om rechten te escaleren door serviceaccounts met delegatierechten te compromitteren. Beperk delegatie tot het strikt noodzakelijke. Gebruik waar mogelijk “Constrained Delegation” of “Resource-based Constrained Delegation” in plaats van unconstrained delegation, omdat deze laatste gevoeliger is voor misbruik.
E: contactus@kembit.nl
T: +31 (0)88 5700 500
