Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
|
kerberos [2025/03/27 00:46] |
kerberos [2025/09/30 12:28] (aktuell) |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | Kerberos ist ein [[netzwerkprotokolle|Protokoll]] zur **Authentifizierung** in verteilten [[netzwerk|Computernetzwerken]] um die Sicherheit der Kommunikation zwischen Benutzern und Ressourcen zu gewährleisten. Die Authentifizierung in [[Active Directory]] basiert auf Kerberos. Das Kerberos-Protokoll definiert, wie Clients mit Diensten in einem Netz interagieren und sich authentifizieren. Clients, die Zugang wünschen, erhalten Tickets von einem Kerberos Key Distribution Centre (KDC) und legen diese Tickets allen Servern vor, mit denen sie eine Verbindung herstellen wollen. Die Tickets stellen die Netzwerkanmeldeinformationen des Clients dar und legen fest, ob der Zugriff auf eine bestimmte Ressource erlaubt ist. Das Kerberos-Protokoll geht davon aus, dass die Interaktionen zwischen Client und Server in offenen, ungesicherten Netzen stattfinden, | ||
| + | Siehe auch [[spn|Service Principal Name]] | ||
| + | |||
| + | <box green> | ||
| + | |||
| + | Das Kerberos-Protokoll basiert auf einem Client-Server-Modell und verwendet [[kryptographie# | ||
| + | |||
| + | =====Hauptkomponenten===== | ||
| + | |||
| + | * **Key Distribution Center (KDC)**: Der KDC ist ein zentraler Server, der für die Ausstellung und Verwaltung von Kerberos-Tickets zuständig ist. Er besteht aus zwei Hauptkomponenten: | ||
| + | * **Authentifizierungsserver (AS)**: Der AS ist für die Erstauthentifizierung des Benutzers verantwortlich. Er prüft die Identität des Benutzers und gibt ihm ein Ticket Granting Ticket (TGT) zurück. | ||
| + | * **Ticket Granting Server (TGS)**: Der TGS ist für die Ausstellung von Service Tickets verantwortlich. Ein Service Ticket wird verwendet, um den Zugriff des Benutzers auf einen spezifischen Dienst zu autorisieren. | ||
| + | * **Schlüssel**: | ||
| + | * **Sitzungsschlüssel**: | ||
| + | |||
| + | =====Kerberos Constrained Delegation (KCD)===== | ||
| + | |||
| + | Kerberos Constrained Delegation ist eine Erweiterung der Microsoft Windows Server Kerberos-Authentifizierung. Sie bietet einen Mechanismus zur Beschränkung der zusätzlichen Dienste, auf die ein Kerberos-authentifizierter Benutzer oder Dienst Zugriff anfordern kann. In einer nicht eingeschränkten Windows Server Kerberos-Umgebung kann ein ordnungsgemäß authentifizierter Dienst den Zugriff auf jeden anderen Dienst innerhalb derselben Domäne delegieren. Wenn eingeschränkte Delegation verwendet wird, können Administratoren Konten so einschränken, | ||
| + | =====Authentifizierung===== | ||
| + | |||
| + | * Der Benutzer sendet eine Anfrage an den AS, um ein TGT zu erhalten. | ||
| + | * Der AS prüft die Identität des Benutzers und sendet ein verschlüsseltes TGT zurück. | ||
| + | * Der Benutzer entschlüsselt das TGT mit seinem geheimen Schlüssel und erhält ein TGT. | ||
| + | * Wenn der Benutzer auf einen Dienst zugreifen möchte, sendet er das TGT zusammen mit einer Anforderung an den TGS. | ||
| + | * Der TGS prüft das TGT und gibt ein verschlüsseltes Service Ticket zurück. | ||
| + | * Der Benutzer entschlüsselt das Service Ticket mit seinem geheimen Schlüssel und erhält ein Service Ticket. | ||
| + | * Das Service Ticket wird an den Dienst gesendet, um den Zugriff zu autorisieren. | ||
| + | |||
| + | Das TGT beinhaltet Informationen über: | ||
| + | |||
| + | * User Account SID | ||
| + | * Group SID | ||
| + | * Authentication Timestamp | ||
| + | |||
| + | {{kerberos-diagram.png}} | ||
| + | |||
| + | |||
| + | =====Authentication Ticket (Ticket Granting Ticket)===== | ||
| + | |||
| + | Ein Ticket Granting Ticket (TGT) ist ein spezielles Kerberos-Ticket, | ||
| + | |||
| + | =====Service Tickets===== | ||
| + | |||
| + | Das TGT erlaubt es deinem Computer, ohne erneute Passwort-Eingabe weitere Service-Tickets für verschiedene Dienste anzufordern. Diese Anfragen laufen über den Ticket Granting Service (TGS), der ebenfalls auf dem KDC läuft. | ||
| + | |||
| + | Wenn du z. B. auf eine Datei-Freigabe (\\server\freigabe) zugreifen möchtest, sendet dein Computer dein TGT an den TGS. Der TGS stellt daraufhin ein Service-Ticket für den Datei-Server aus. Dein Computer sendet das Service-Ticket an den Datei-Server, | ||
| + | =====Problem===== | ||
| + | |||
| + | Manche Applikationen brauchen zum Authentifizieren mehr Informationen als User SID und User Group SID. Z.B die Email Adresse des Benutzer. Siehe [[adfs|ADFS]] (Active Directory Federation Services). | ||
| + | |||
| + | =====Audit===== | ||
| + | |||
| + | Event IDs | ||
| + | |||
| + | * 4768 – Ticket Granting Ticket (TGT) ausgestellt (Initiale Anmeldung bei KDC) | ||
| + | * 4769 – Service Ticket ausgestellt (Zugriff auf Ressourcen) | ||
| + | * 4770 – Erneuerung eines TGT | ||
| + | * 4771 – Kerberos-Pre-Authentication fehlgeschlagen | ||
| + | |||
| + | < | ||
| + | Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4768 } | Select TimeCreated, | ||
| + | </ | ||
| + | |||
| + | =====CLI===== | ||
| + | |||
| + | <code powershell> | ||
| + | # Lösche alle Tickets (TGT nicht) | ||
| + | klist purge | ||
| + | |||
| + | # Fordere Ticket für einen Service an | ||
| + | klist get HTTP/ | ||
| + | |||
| + | # Zeige alle Kerberos Tickets | ||
| + | klist | ||
| + | |||
| + | # Zeige das Ticket granting ticket | ||
| + | klist tgt | ||
| + | |||
| + | # Zeige Ticket Verwendung | ||
| + | C:\> klist sessions | ||
| + | [0] Sitzung 1 0: | ||
| + | [1] Sitzung 0 0:0x136c4 \ NTLM:(0) | ||
| + | |||
| + | C:\> klist sessions -li 0x136c4 | ||
| + | Aktuelle Anmelde-ID ist 0: | ||
| + | Ziel-Anmelde-ID ist 0:0x136c4 | ||
| + | Sitzung 0 0:0x136c4 \ NTLM:(0) | ||
| + | </ | ||
| + | |||
| + | =====Sicherheit===== | ||
| + | |||
| + | ====Krbtgt==== | ||
| + | |||
| + | In jeder [[Active Directory]] Domäne gibt es ein spezielles, verstecktes Benutzerkonto namens krbtgt. Dieses Konto hat kein Login, aber es besitzt ein Passwort (genau wie jedes andere Konto). Aus diesem Passwort wird ein geheimer Schlüssel erzeugt: der KRBTGT-Key. Dieser Schlüssel wird von den Domänencontrollern verwendet, um: | ||
| + | |||
| + | * Ticket Granting Tickets (TGTs) zu signieren. | ||
| + | * Die Gültigkeit eingehender TGTs zu prüfen. | ||
| + | |||
| + | Ohne diesen Key funktioniert Kerberos in der Domäne nicht mehr. | ||
| + | |||
| + | ====Angriffsmöglichkeiten==== | ||
| + | |||
| + | * Pass-the-Ticket (PtT): Angreifer stiehlt ein gültiges Ticket Granting Ticket (TGT) oder Service Ticket (TGS) aus dem Speicher. Das Ticket kann auf einem anderen System wiederverwendet werden (z. B. mit [[Mimikatz]] oder Rubeus), solange es gültig ist. | ||
| + | * Overpass-the-Hash (Pass-the-Key): | ||
| + | * Ticket Forging (Golden Ticket / Silver Ticket): Wenn Angreifer den KRBTGT-Key eines DC bekommt, kann er beliebige TGTs (Golden Ticket) oder TGS (Silver Ticket) ausstellen. | ||
| + | |||
| + | =====KKDCP===== | ||
| + | |||
| + | Kerberos Key Distribution Center (KDC) Proxy Protocol | ||
| + | |||
| + | {{ms-kkdcp.pdf}} | ||
| + | |||
| + | =====Links===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||