Um zu verstehen, warum Keberoasting funktioniert, muss man zunächst die Grundlagen von Kerberos verstehen.
Kerberos ist ein Authentifizierungsprotokoll, das Benutzern und Diensten (wie Anwendungen, Datenbanken und Servern) eine sichere Authentifizierung und Kommunikation innerhalb von Active Directory und anderen Domains ermöglicht.
Der Kerberos-Authentifizierungsprozess verwendet ein Ticketingsystem. Das Herzstück dieses Systems ist das Key Distribution Center (KDC), das auf dem Domain Controller des Netzwerks betrieben wird.
Das KDC ist im Wesentlichen der Pförtner der Domain. Er authentifiziert Benutzer und Dienste im Netzwerk und stellt ihnen Tickets aus. Tickets sind Berechtigungsnachweise, mit denen die Identität von Benutzern nachgewiesen wird und die ihnen den Zugriff auf andere Ressourcen im Netzwerk ermöglichen. Die Benutzer und Dienste tauschen diese Tickets aus, um sich gegenseitig zu verifizieren.
Wenn sich ein Benutzer bei einer Domain anmeldet, authentifiziert er sich zunächst am KDC und erhält ein sogenanntes Ticket Granting Ticket (abgekürzt TGT). Mit diesem TGT kann der Benutzer den Zugriff auf Domain-Services anfordern.
Wenn der Benutzer auf einen Service zugreifen möchte, sendet er eine Anforderung an den Ticket-Granting Service (TGS) des KDC. Das TGT begleitet diese Anfrage, um die Identität des Benutzers zu bestätigen.
Als Antwort stellt das KDC ein Service-Ticket aus, auch „TGS-Ticket“ genannt, das mit dem Passwort des Servicekontos verschlüsselt ist. Dies geschieht, um sicherzustellen, dass nur der Zieldienst die Zugriffsanfrage des Benutzers validieren kann. Der Benutzer legt dieses Service-Ticket dem Zielservice vor, der den Benutzer authentifiziert und eine sichere Sitzung einleitet.
Es gibt einige Aspekte in der Gestaltung von Kerberos, die es anfällig für Kerberoasting machen.
Erstens prüft das KDC nicht, ob Benutzer zum Zugriff auf einen Dienst berechtigt sind. Jeder Benutzer kann ein Ticket für jeden Dienst anfordern. Es obliegt den einzelnen Diensten, die Berechtigungen durchzusetzen und nicht autorisierte Benutzer zu sperren. Daher müssen Hacker nicht die Konten von Domainadministratoren oder anderen privilegierten Benutzern kapern. Jedes kompromittierte Konto funktioniert.
Zweitens muss jeder Dienst in einer Kerberos-Domain mit einem Servicekonto verknüpft sein, das für die Ausführung des Dienstes in der Domain verantwortlich ist. Servicekonten ermöglichen es Kerberos, Dienste zu authentifizieren, Service-Tickets auszustellen und Sicherheitskontrollen durchzusetzen. Diese Konten bieten auch Hackern ein Ziel, da sie in der Regel über hohe Privilegien verfügen.
Drittens werden Kerberos-Tickets verschlüsselt, wobei die Passwort-Hashes der zugehörigen Konten als Schlüssel verwendet werden. Wichtig für das Kerberoasting ist, dass die Service-Tickets die Passwort-Hashes der entsprechenden Servicekonten verwenden.
Kontopasswörter sind praktische symmetrische Verschlüsselungscodes, da nur das KDC und der zugehörige Service dieses Passwort kennen sollten. Da Tickets jedoch mit Passwort-Hashes verschlüsselt werden, können Hacker die Passwörter von Servicekonten zurückentwickeln, indem sie die Verschlüsselung eines Tickets knacken.
Außerdem ist bei manuell konfigurierten Servicekonten häufig die Option „Passwort läuft nie ab“ aktiviert. In lange bestehenden Netzwerken kann dies bedeuten, dass Servicekonten sehr alte Passwörter verwenden, die veralteten Sicherheitsrichtlinien folgen und somit leicht zu knacken sind.