Blog

Klartext Kerberos in Wireshark

8.4.2021 | 2 minutes read
Share this:

Tags: wireshark, kerberos

Bevor ich eine Reihe von Artikeln über Kerberos schreibe, wollte ich mich bei manchen Themen noch einmal genauer von der Funktionsweise des Protokolls überzeugen. Um das zu erreichen, war mein Ziel Kerberos in Wireshark komplett lesbar zu machen. Zum Glück erlaubt Wireshark das Verwenden von Keytab Files um Kerberos Tickets zu entschlüsseln. Zum Erzeugen von Keytab Files kann unter anderem ein Build-in Tool von Windows verwendet werden, dass allerdings das Klartext-Passwort des Service Benutzers voraussetzt (siehe hier). Damit können zwar Service Tickets gelesen werden, da ich die Benutzer und ihr Passwort selbst anlegen kann, aber keine Authentication Tickets bzw. TGT entschlüsselt werden. Der Grund ist, dass das TGT mit dem Passwort des Benutzers KRBTGT verschlüsselt ist, ich das Passwort aber nicht kenne. Ich kann es zwar auf den einen oder anderen Weg setzen, auch auf einen gewünschten Wert, dies hat sich aber als sehr unzuverlässig und an der ein oder anderen Stelle als problematisch erwiesen. Leider habe ich keine Möglichkeit gefunden, die es ermöglicht, aus den Encryption Keys, die ich beispielsweise mittels DCSync auslesen kann, KeyTab Files zu erzeugen. Um dieses Problem zu lösen, habe ich ein PowerShell-Skript, das KeyTab Files aus Passwörter erzeugt, angepasst. Es kann hier auf meinem Github Profil heruntergeladen werden.

Mit dem Skript kann beispielsweise mit folgendem Befehl ein KeyTab File für den KRBTGT Benutzer angelegt werden:

.\KeyTab.ps1 -RC4Hash <NT-Hash> -AES128Hash <AES128-Key> -AES256Hash <AES256-Key> -Realm <Domäne> -Principal krbtgt -Append

Analog funktioniert das auch mit Computerkonten und Benutzerkonten. Da der Principal Namen benötigt wird, ist kein Dollar-Zeichen nach dem Computernamen notwendig.

Im Anschluss kann das KeyTab File in Wireshark importiert werden:

KeyTab einfügen

Nach dieser Vorbereitung können nun erste Tickets angefragt und der Traffic analysiert werden. In der CMD Tickets können Tickets beispielsweise mit folgendem Befehl angefragt werden:

klist get cifs/dc1.<domain>

Beim Klick auf die einzelnen Pakete zeigt Wireshark unten die entschlüsselten Daten an:

Wireshark entschlüsselte Pakete

Wie immer gilt falls ihr Fragen, Anmerkungen oder Verbesserungsvorschläge zu dem Artikel habt, schreibt eine Mail an info@hackmich.net.

Quellen