Blogbeitrag 28. November 2019, von Geert Smelt, Sicherheitsspezialist bei Bureau Veritas Cybersecurity
Blog nur auf Englisch verfügbar
de
de
Blogbeitrag 28. November 2019, von Geert Smelt, Sicherheitsspezialist bei Bureau Veritas Cybersecurity
Blog nur auf Englisch verfügbar

In einer Microsoft Active Directory (AD)-Umgebung stehen Penetrationstestern viele Arten von Angriffen zur Verfügung. Einige Beispiele sind die Weiterleitung der Authentifizierung, das Knacken von Passwort-Hashes und das Ausnutzen anfälliger Dienste. In einer AD-Umgebung verwaltet der Domain Controller (DC) die Domäne und legt ein Regelwerk für Aspekte wie Passwortstärke, Ausführung von Programmen und Zugriff auf gemeinsame Dateien fest. Die Authentifizierung und Autorisierung wird vom DC mit Hilfe des Kerberos-Protokolls kontrolliert. Dieses Protokoll wurde am MIT entwickelt und von Microsoft ab Windows 2000 für die Verwendung innerhalb der AD-Umgebung implementiert und angepasst. Es handelt sich um ein komplexes Protokoll, das kryptographische Signaturen, starke Verschlüsselung, Einweg-Hash-Funktionen und Vertrauensbeziehungen verwendet. Aufgrund dieser Komplexität ist es schwierig geworden, es sicher zu implementieren.
In diesem Blog-Beitrag werden wir mehrere Arten von Angriffen beschreiben, die ein Angreifer gegen das Protokoll selbst durchführen kann, das sogenannte Kerberoasting - ein Begriff, der erstmals von Tim Medin vom SANS Institute eingeführt wurde.
Da es sich bei Kerberos um ein komplexes Protokoll handelt, ist es wichtig, dass Sie sich ein Bild davon machen, wie es funktioniert, bevor Sie die Schwachstellen des Protokolls beschreiben. Bevor wir ins Detail gehen, geben wir ein Beispiel aus der Praxis.
Betrachten Sie zum Beispiel den Prozess der Flugbuchung. Sie erstellen ein Konto auf einer Website und melden sich an. Dann bezahlen Sie Ihre Tickets und erhalten Ihre Bordkarte. Schließlich gehen Sie zum Flugsteig und legen die Bordkarte vor.
Anhand des obigen Szenarios veranschaulichen wir den Zugriff auf einen Dienst in einer Active Directory-Umgebung, z.B. eine SQL Server-Datenbank. Kerberos ist das Protokoll, das den Authentifizierungsprozess regelt. Nehmen wir an, Sie möchten auf einen bestimmten Datensatz in einer SQL Server-Datenbank zugreifen. Der Authentifizierungsprozess für dieses Szenario sieht wie folgt aus (siehe die schematische Übersicht unten). Der erste Schritt(1) besteht darin, sich beim Authentifizierungsdienst (AS) im Key Distribution Center (KDC) zu authentifizieren, indem Sie nachweisen, dass Sie ein gemeinsames Geheimnis kennen, d.h. den Hash Ihres Benutzerkennworts (entspricht der Erstellung eines Kontos auf der Ticket-Website). Dies geschieht durch Verschlüsselung eines Zeitstempels mit dem Hashwert Ihres Passworts. Wenn der Passwort-Hash korrekt ist, kann der Authentifizierungsdienst (AS) des KDC den empfangenen Zeitstempel entschlüsseln und verifizieren. Das KDC stellt Ihnen daraufhin ein Ticket (ein so genanntes Ticket Granting Ticket) aus, das mit dem Passwort-Hash des krbtgt-Kontos verschlüsselt ist und mit dem Sie ein weiteres Ticket(2) anfordern können (entspricht der Anmeldung auf der Ticket-Website). Mit diesem TGT kehren Sie zum KDC zurück und geben den Dienst an, auf den Sie zugreifen möchten(3) (entspricht der Buchung eines Fluges). Das KDC prüft, ob es das Ticket mit dem krbtgt-Konto entschlüsseln kann und ob es korrekt ist. Das KDC sucht dann nach dem Dienstkonto, das dem angeforderten Dienst entspricht. Unter Verwendung dieses Dienstkontos wird ein Ticket erstellt, das den Zugriff auf den Dienst gewähren soll (ein sogenannter Ticket Granting Service). Dieses Ticket ist mit dem Passwort-Hash für das Servicekonto(4) verschlüsselt (entspricht dem Erhalt der Bordkarte per E-Mail). Sie können den TGS nun dem SQL Server vorlegen, der in der Lage sein sollte, ihn zu entschlüsseln und zu verifizieren, da er seinen eigenen Passwort-Hash kennt(5) (entspricht dem Schießen der Bordkarte am Gate). Sobald der SQL Server den TGS entschlüsselt und verifiziert hat, gewährt er Ihnen Zugriff und Sie können den angeforderten Datensatz aus der Datenbank lesen(6) (entspricht dem Zutritt zum Flugzeug). Beachten Sie, dass die eigentliche Autorisierung durch den Dienst erfolgt, nicht durch das KDC. Das KDC prüft lediglich, ob der Benutzer in der Domäne registriert ist (Authentifizierung).
Kerberoasting ist die Technik, bei der Dienstkonten ins Visier genommen und deren Passwörter geknackt werden. Ein Dienstkonto ist ein Konto, für das der Service Principal Name (SPN) festgelegt ist. Dieser SPN muss innerhalb der Domäne eindeutig sein, aber der entsprechende Dienst muss nicht verfügbar sein oder gar existieren. Dienstkonten können entweder ein Computerkonto oder ein Benutzerkonto sein. Benutzer sind notorisch schlecht darin, sichere Passwörter zu wählen, daher zielt Kerberoasting auf letztere ab. Der allgemeine Kerberoasting-Angriff wird wie folgt durchgeführt.
Eine Variante des klassischen Kerberoasting-Angriffs ist ein Spezialfall. Wenn ein Angreifer mit einem Domänen-Benutzerkonto in der Lage ist, die Eigenschaften eines anderen Domänen-Benutzerkontos zu manipulieren, kann dies ausgenutzt werden, um einen SPN zu erzwingen und ein Ticket anzufordern, das mit dem NTLM-Hash des Zielbenutzers verschlüsselt ist. Um eine solche Aktion durchführen zu können, müssen dem Konto des Angreifers die Berechtigungen GenericAll oder GenericWrite erteilt werden, was standardmäßig nicht der Fall ist.
Der von einem Angreifer festgelegte SPN kann beliebig sein; er muss nicht innerhalb der Domäne existieren, solange er dem richtigen Format folgt(Dienst/Host). Sobald der SPN des Kontos oder der Gruppe festgelegt ist, kann ein Ticket angefordert, extrahiert und geknackt werden, und zwar auf die gleiche Weise wie beim klassischen Kerberoasting.
Im Laufe der Jahre wurden viele Softwarelösungen entwickelt, die einem Angreifer bei der Durchführung von Kerberoasting helfen. In den nächsten Abschnitten werden einige Beispiele gezeigt.
Klassisch
Die ursprüngliche Methode, die von Tim Medin entdeckt wurde, war etwas komplizierter. Sie verwendete native Windows-Software wie setspn.exe und klist.exe, um SPNs zu identifizieren bzw. Tickets anzufordern. Außerdem war Mimikatz erforderlich, um die Tickets aus dem Speicher zu entfernen, bevor der Hash geknackt werden konnte. Schließlich unterstützten Software zum Knacken von Hashes wie Hashcat und John the Ripper dieses Format noch nicht, so dass das Knacken mit einem (langsamen) Python-Skript durchgeführt werden musste. Nachfolgend sehen Sie eine Demonstration der manuellen Schritte, die erforderlich sind, um das Passwort des Dienstkontos erfolgreich zu knacken.
Mit setspn.exe ist es möglich, eine Domäne und/oder einen Wald nach Konten zu durchsuchen, für die ein Service Principal Name konfiguriert ist.
Diese Abfrage liefert mehrere Ergebnisse, von denen dbadmin das vielversprechendste ist. Mit klist.exe wird ein Service-Ticket (TGS) vom KDC angefordert.
Dieser TGS wird nun im Speicher abgelegt. Um den NTLM-Hash des dbadmin-Kontos zu knacken, muss ein weiterer Schritt durchgeführt werden. Mit Mimikatz kann das Ticket aus dem Speicher geknackt und auf die Festplatte kopiert werden.
Mimikatz schreibt das Ticket in eine *.kirbi-Datei , aus der der Hash geknackt werden kann. Das Knacken erfolgt mit tgsrepcrack.py, einem Skript, das von Tim Medin geschrieben wurde, um den Angriff während seines Vortrags auf der DerbyCon 2014 zu demonstrieren.
Damit ist der klassische Kerberoasting-Angriffsweg abgeschlossen. In den letzten Jahren wurde dieses Verfahren erheblich verbessert, wie die folgenden Beispiele zeigen.
PowerView
PowerView ist ein Aufklärungsmodul, das zum Lieferumfang von PowerSploit gehört. Es ist eine Sammlung von PowerShell-, .NET- und WMI-Methoden, die eine einfache Enumeration einer Unternehmensdomäne ermöglichen. Es bietet auch die Möglichkeit, Kerberoasting mit der PowerShell-Methode Invoke-Kerberoast durchzuführen. Diese Methode wurde auf der Grundlage der Arbeit von Matan Hart(@machosec) entwickelt und ermöglicht es dem Angreifer, das Kerberos-Ticket aus der PowerShell heraus aus dem Speicher zu holen. Es ist daher nicht mehr notwendig, Mimikatz zu verwenden, was die Entdeckungsrate senkt.
Oben sehen Sie einen Screenshot der Verwendung von PowerView, um einen Hash eines Service-Tickets für eine Windows SQL Server-Instanz in der Domäne zu erhalten. Dieser Hashwert kann anschließend (offline) mit Hashcat geknackt werden.
Rubeus
Rubeus ist ein C#-Toolset für rohe Kerberos-Interaktion und -Missbrauch. Es ist stark an das Kekeo-Projekt von Benjamin Delpy(@gentilkiwi) und das MakeMeEnterpriseAdmin-Projekt von Vincent Le Toux (@mysmartlogon ) angelehnt.
Obwohl Rubeus in C# statt in PowerShell geschrieben wurde, ist es genauso gut in der Lage, Kerberoasting durchzuführen und kann viele weitere Dinge in Bezug auf Kerberos tun, wie z.B. Tickets fälschen.
Genau wie PowerView gibt auch Rubeus den Hash für die Service-Tickets aus und ermöglicht so das (Offline-)Knacken des entsprechenden Benutzerpassworts.
Eine Technik, die erst vor kurzem entdeckt wurde, heißt AS-REP Roasting. Diese Technik ähnelt dem Kerberoasting, zielt aber nicht auf den TGS, sondern auf den vom KDC bereitgestellten TGT. Dieser Angriff ist in der Praxis selten nützlich, da er voraussetzt, dass Domänenadministratoren die Kerberos-Vorauthentifizierung für Konten deaktivieren - eine Einstellung, die standardmäßig aktiviert ist. Es gibt jedoch einige Grenzfälle, wie z.B. bestimmte ältere Versionen der Cisco VPN-Software, die sonst Probleme mit der Integration von Kerberos haben. Ein weiterer Fall ist, wenn Sie über GenericWrite / GenericAll-Rechte für einen Zielbenutzer verfügen, ähnlich wie beim manuellen Setzen von SPNs. Damit können Sie die Kerberos-Vorauthentifizierung für diesen bestimmten Benutzer zwangsweise deaktivieren.
Sollten Sie jedoch auf einen solchen Benutzer stoßen, können Sie AS-REP Roasting verwenden, um einen TGT im Namen des Zielbenutzers zu erhalten. Da ein Teil eines TGTs immer mit dem Passwort-Hash des Benutzers verschlüsselt ist, ist es möglich, das Ticket zu knacken und das Passwort für das Zielkonto zu erhalten, ähnlich wie bei der ursprünglichen Kerberoasting-Technik.
Beachten Sie, dass diese Technik dem ersten Einrichten eines SPN auf dem Zielkonto recht ähnlich ist: Beide erfordern, dass Sie die Eigenschaften Ihres Zielkontos ändern können. Der Unterschied liegt in der Art der Kerberos-Nachricht, auf die abgezielt wird.
PowerView verfügt derzeit nicht über eine Option zur Durchführung von AS-REP Roasting, Rubeus hingegen schon.
Nachdem Sie den Hashwert erhalten haben, können Sie ihn mit Hashcat erneut offline knacken. Beachten Sie, dass es sich um einen etwas anderen Hash-Typ handelt.
Es ist also möglich, das Passwort eines Domänenkontos zu knacken, ohne selbst Zugriff auf ein Domänenkonto zu haben. Beachten Sie, dass dieses Szenario nicht sehr häufig vorkommt und meist für einige VPN-Software verwendet wird, die Probleme mit der Integration in AD hat.
Die Erkennung dieser Art von Angriffen kann sehr schwierig sein. Der Hauptgrund dafür ist, dass das Anfordern von Tickets von einem Domänencontroller zur Authentifizierung an sich als legitimer Datenverkehr angesehen wird: Das ist es, was ein Domänenbenutzer tun sollte, um Aufgaben im Zusammenhang mit Dienstkonten durchzuführen. Es kann jedoch entdeckt werden, wenn ein Angreifer nicht vorsichtig ist und eine große Anzahl von Tickets auf einmal anfordert. Im Allgemeinen sollten Sie die Überwachung von Kerberos-Service-Ticket-Operationen aktivieren, um Kerberos TGS-Service-Ticket-Anfragen zu protokollieren. Untersuchen Sie insbesondere unregelmäßige Aktivitätsmuster (z.B.: Konten, die innerhalb eines kurzen Zeitraums zahlreiche Anfragen stellen, Ereignis-ID 4769, insbesondere wenn sie auch RC4-Verschlüsselung anfordern. Untersuchen Sie außerdem die Ereignisse 4738 und 5136 auf Anomalien in Bezug auf die Verwendung von ASREP Roasting.
Wie bereits gezeigt, kann Rubeus für eine Vielzahl von Kerberos-Angriffen verwendet werden. Rubeus berücksichtigt auch OPSEC, was sich in einer Reihe von Einstellungen niederschlägt, die aktiviert werden können. Auf der Grundlage von Forschungsergebnissen von Benjamin Delpy ist Rubeus zum Beispiel in der Lage, nur RC4-Kerberos-Tickets anzufordern und gleichzeitig das Zwischenspeichern dieser Tickets auf dem vom Angreifer kontrollierten Host zu verhindern. Weitere Informationen zu den OPSEC-Überlegungen finden Sie in der Präsentation von Will Schroeder (@harmjoy) auf der DerbyCon 2019.
Die Erkennung von Kerberoasting-Angriffen innerhalb Ihres Unternehmensnetzwerks erfolgt am besten durch EDR-Software, die nach der Ausgabe von mit RC4 verschlüsselten Kerberos-Tickets, d.h. NTLM-Hashes, sucht. Außerdem ist es wichtig, auf große Mengen von Tickets zu achten, die in einem relativ kurzen Zeitraum angefordert werden. Anomalien wie diese könnten auf einen Angreifer hindeuten, der Tickets für alle SPNs in Ihrem Unternehmensnetzwerk anfordert. Schließlich kann Kerberoasting auch durch die Suche nach Systemen aufgedeckt werden, die eine ungewöhnlich große Anzahl von Kerberos-Tickets im Speicher haben (obwohl wir gesehen haben, dass einige Tools auch dies berücksichtigen).
Die Entschärfung von Kerberoasting ist ein Schritt zu einem sichereren Unternehmensnetzwerk mit geringem Aufwand und hohem Nutzen. Das MITRE ATT&CK-Framework zeigt beispielsweise, dass es im Wesentlichen drei Techniken gibt, die dafür eingesetzt werden können.
Aktivieren Sie die AES-Kerberos-Verschlüsselung (oder einen anderen stärkeren Verschlüsselungsalgorithmus) anstelle von RC4, wo dies möglich ist. AES ist seit der Domänenfunktionsstufe 2008 und später die Standardeinstellung.
Stellen Sie sicher, dass die Länge und Komplexität der Passwörter für Servicekonten hoch ist (idealerweise mehr als 25 Zeichen) und dass diese Passwörter in regelmäßigen Abständen ablaufen. Erwägen Sie auch die Verwendung von gruppenverwalteten Servicekonten oder eines anderen Produkts eines Drittanbieters, wie z.B. Passwort-Vaulting.
Beschränken Sie Dienstkonten auf die minimal erforderlichen Berechtigungen, einschließlich der Mitgliedschaft in privilegierten Gruppen wie z.B. Domänenadministratoren.
Kerberoasting ist nur einer von vielen Angriffen auf das Kerberos-Protokoll. Andere sind Golden Tickets, Silver Tickets, Kerberos Brute-Forcing und Over Pass the Hash. Alle diese Angriffe zielen auf die inhärenten Schwachstellen im Design des Protokolls ab. Weitere Informationen finden Sie in der ATT&CK-Matrix von MITRE.
In den in diesem Artikel gezeigten Beispielen wurden die folgenden Tools verwendet.
Weitere nicht gezeigte Kerberoasting-Tools sind: