Microsoft Intune
Michael Schneider
Kerberos ist ein Authentisierungsprotokoll, das auch in Microsoft Windows zur Benutzerauthentisierung eingesetzt wird. Oliver Kunz erklärte in seinem Labs vom 24. Juli 2014 die Grundlagen zu Kerberos. In diesem Labs stelle ich zwei Angriffe gegen Kerberos vor, die Schwachstellen bei der Ausstellung von Tickets ausnutzen. Um diese Angriffe nachvollziehen zu können, hilft es zu verstehen, wie ein Kerberos Ticket ausgestellt wird.
Der Vorgang lässt sich unter Windows in fünf Schritte zusammenfassen:
Ein Artikel des Security Consultants Mike Pilkington behandelt die Ausstellung eines Tickets detailliert und stellt Schwachpunkte in den Schritten vor. Weitere Informationen können im Microsoft TechNet Artikel How the Kerberos Version 5 Authentication Protocol Works nachgeschlagen werden.
Am 19. November 2014 veröffentlichte Microsoft ausserhalb des Patchday-Zyklus das Security Bulletin MS14-068. Das Bulletin handelt von einer Schwachstelle in Kerberos, die es einem Angreifer ermöglicht, seine Rechte bis auf Stufe Domänen-Administrator zu erweitern.
In einer Testumgebung habe ich ein mögliches Angriffsszenario nachgestellt.
Ein Benutzer, sein Account ist Mitglied der Gruppe Domain Users, versucht, auf einem domainintegrierten Windows-7-Client seine Rechte zu erweitern. Der Account hat keine lokalen Administratorenrechte. Der Angriff kann auch ausserhalb einer Domäne ausgeführt werden, wie Dave Kennedy, Gründer und CEO von Trustedsec, Schritt für Schritt demonstrierte.
Der vorgestellte Angriff basiert auf dem Python Kerberos Exploitation Kit. Mit PyKEK wird durch die Ausnutzung der Schwachstelle ein Kerberos-Ticket ausgestellt, das einem beliebigen Domänenbenutzer die Berechtigungen der folgenden Gruppen bescheinigt:
Für diesen Angriff werden folgende Daten benötigt:
Der SID des eigenen Accounts kann mittels des Befehls whoami /USER
abgefragt werden. Das folgende PowerShell-Beispiel ermöglicht es zudem auch SIDs von anderen Accounts abzufragen.
Nachdem der SID des Accounts bekannt ist, kann PyKEK ausgeführt werden:
Zuerst führt PyKEK eine Anfrage AS-REQ durch, fordert aber im Gegensatz zu einer normalen Anfrage ein TGT ohne PAC an. PyKEK nimmt das TGT vom KDC (Schritt AS-REP) und generiert dazu ein PAC mit den aufgezählten Gruppenidentifikatoren. Das erhaltene TGT und der generierte PAC werden als Bestandteil für die Anfrage TGS-REQ verwendet. Der verwundbare KDC übernimmt dann diese Information und stellt ein TGS aus, das dem Account nun Rechte auf der Stufe von Domänen-Admins gibt. Dieses TGS wird von PyKEK in eine Datei extrahiert und kann so weiter verwendet werden.
Mit der Hilfe von mimikatz wird das Ticket in bestehende Session des Benutzers geladen.
Durch den Import des Tickets ist der Account während dieser Session Mitglied der Gruppe Domain Admins und kann so unter anderem auf administrative Freigaben eines Domain Controllers zugreifen.
Als Gegenmassnahme sollte umgehend der von Microsoft veröffentlichte Patch MS14-068 installiert werden.
Im zweiten Angriffsszenario geht es darum ein Kerberos-Ticket zu erstellen, das einen Benutzer zum Mitglied der Gruppe Domain Admins macht und zehn Jahre lang gültig ist: ein sogenanntes Golden Ticket.
Der Angriff wird wiederum auf einem domainintegrierten Client mit einem Benutzer ohne lokale Administratorenrechte durchgeführt. Die Anforderungen für diesen Angriff sind wesentlich höher als beim ersten simulierten Angriff: Um ein solches Ticket zu erstellen, wird der NTLM-Hash des Accounts krbtgt benötigt. Dieser Account wird zur Ausstellung von Kerberos-Tickets verwendet und wird während einer AD Installation erstellt. Ein Angreifer kann den NTLM-Hash bei einem erfolgreichen Angriff auf einen Domain Controller (per Hashdump) oder aus einem (ungesicherten) Backup extrahieren. Das Passwort des Accounts krbtgt wird in der Regel bei der Erstellung einer Domäne gesetzt und selten bis gar nicht mehr geändert. Ein Angreifer kann daher auch ein Backup verwenden, das einige Jahre alt ist.
Das Tool mimikatz wird für die Erstellung eines Golden Tickets eingesetzt. Der Angriff benötigt folgende Daten:
Der Befehl kerberos::golden
generiert ein Kerberos-Ticket, das einen Account als Mitglied mehrerer Administratoren Gruppen ausweist. Mit den vorhandenen Informationen kann ein beliebiges Ticket ausgestellt werden. Analog zum ersten Angriff hat der Account, durch das Importieren des Golden Tickets in die bestehende Session, die Rechte eines Domain Admins und kann somit auf administrative Freigaben des DC zugreifen. Der folgende Screenshot zeigt das Golden Ticket als geladenes Ticket in der Session:
Die Hauptmassnahme gegen den Golden-Ticket-Angriff ist der Schutz der Credentials des Accounts krbtgt. Das Dokument Mitigating Service Account Credential Theft on Windows, das in Zusammenarbeit von HD Moore (Rapid7), Joe Bialek (Microsoft) und Ashwath Murthy (Palo Alto Networks) entstanden ist, beschreibt wie die Konfiguration des DC gehärtet werden kann. Spezifische Massnahmen gegen den Angriff enthält das Dokument Protection from Kerberos Golden Ticket des CERT-EU. Falls die Credentials des Accounts krbtgt kompromittiert wurden, sollte das Passwort des Accounts zweimal zurückgesetzt werden, damit allenfalls erstellte Golden Tickets ungültig werden. Microsoft veröffentlichte am 11. Februar 2015 in dem Blogartikel KRBTGT Account Password Reset Scripts now available for customers ein Skript zur Passwortänderung des Accounts krbtgt.
Nebst den beiden vorgestellten Beispielen gibt es weitere Angriffe gegen Kerberos. In der Präsentation Abusing Microsoft Kerberos an der Konferenz black hat USA 2014 haben die Sicherheitsforscher Alva “Skip” Duckwall und Benjamin Delpy (Entwickler von mimikatz) zusätzliche Möglichkeiten vorgestellt.
Um sich vor solchen Angriffen zu schützen, gibt es mehrere Gegenmassnahmen:
Wenn diese Massnahmen umgesetzt werden, ist es für einen Angreifer viel schwieriger erfolgreiche Angriffe gegen Kerberos durchzuführen.
Unsere Spezialisten kontaktieren Sie gern!
Michael Schneider
Michael Schneider
Michael Schneider
Michael Schneider
Unsere Spezialisten kontaktieren Sie gern!