Active Directory - Wat is kerberoasting?

Geschreven door Kasper de Waard op 18 november 2021 Leestijd : 3 minuten

Bij Kerberoasting maken we misbruik van de eigenschappen van het Kerberos-protocol om wachtwoord hashes te verzamelen van Active Directory gebruikers met servicePrincipalName (SPN) waarden (d.w.z. serviceaccounts).  

Bij kerberoasting komt het erop neer dat alle domein gebruikers een lijst van alle serviceaccounts kan opvragen met bijbehorende wachtwoord hashes. We maken hierbij dus misbruik van de legacy Active Directory-ondersteuning voor oudere Windows-clients en het type codering dat wordt gebruikt om Kerberos-tickets te coderen en te ondertekenen.

Wanneer bijvoorbeeld een domeinaccount is geconfigureerd om als serviceaccount te dienen voor bijvoorbeeld MS SQL, wordt in wezen de Service Principal Name (SPN) in het domein gebruikt om de service te koppelen aan het account. Wanneer een gebruiker de specifieke resource wil gebruiken, ontvangt hij een Kerberos-ticket ondertekend met NTLM-hash van het account waarmee de service wordt uitgevoerd.

Waarom is dit gevaarlijk?

In active directory vereist Kerberos dat elke SPN is gekoppeld aan een serviceaccount op het domein. Een gebruiker met een geldig TGT-ticket kan een TGS-ticket aanvragen voor alle services met SPN's via de domeincontroller met behulp van legitieme LDAP-query's. Deze tickets zijn versleuteld met een NTLM-hash van het wachtwoord van de serviceaccount. Deze NTLM hashes kunnen dus heel simpel offline worden gekraakt.

Als je dus met succes bent geverifieerd op het domein met Kerberos en je een actieve sessie hebt, kan je tickets aanvragen bij de domeincontroller voor elk serviceaccount met een geregistreerde SPN. Afhankelijk van hoe de machtigingen zijn ingesteld serviceaccounts, kunnen dit accounts in de groep Domeinadministrators, Remote Desktop-groepen of lokale beheerders zijn.

Hoe los ik het op?

Er is geen snelle fix of patch om dit probleem op te lossen omdat het "by design" is. Wij adviseren om de implementatie van kerberos te hardenen en de inspanningen te richten op het verminderen van het risico op het bruteforce aspect van de aanval. Hieronder een paar methodes om de impact van een kerberoasting aanval te verkleinen.

  • Weiger authenticatieverzoeken die geen gebruik maken van Kerberos Flexible Authentication Secure Tunneling (FAST) (ook wel Kerberos Armoring genoemd), dit is een pre-authenticatie-extensie die een beveiligd kanaal tussen de client en domeincontroller tot stand brengt en is ontworpen om Kerberos-tickets beter te beschermen tegen offline pogingen om wachtwoorden te kraken. Hoewel het inschakelen van FAST het risico van Kerberoasting kan elimineren, kan het een uitdaging zijn om snel in te schakelen en af te dwingen.
     
  • Elimineer het gebruik van onveilige protocollen in Kerberos. Hoewel het volledig uitschakelen van RC4 een grote onderneming is, is het mogelijk om individuele serviceaccounts te configureren om het RC4-protocol niet toe te staan. Het kenmerk msDS-SupportedEncryptionTypes kan worden ingesteld op 0x18 (decimaal 24) om alleen AES128 en AES256 in te schakelen. Dit heeft als bijkomend voordeel dat het de gevoeligheid van de detectie verhoogt - als RC4 wordt waargenomen in een TGS-verzoek, is dit een teken van kwaadwillende activiteit.
     
  • Pas een streng wachtwoord beleid toe voor serviceaccounts. Deze wachtwoorden moeten willekeurig worden gegenereerd, minimaal 30 tekens lang, en routinematig worden gewijzigd.
     
  • Pas waar mogelijk het gebruik van group Managed Service Accounts (gMSA) toe. De wachtwoorden (256 willekeurige bytes) voor gMSA's worden gegenereerd en regelmatig gewijzigd door Active Directory, waardoor deze last voor beheerders wordt weggenomen.
     
  • Controleer de toewijzing van servicePrincipalNames aan gevoelige gebruikersaccounts. Domein admins mogen bijvoorbeeld niet worden gebruikt als serviceaccounts (en daarom mogen er geen SPN's aan worden toegewezen).