88tcp/udp - Pentesting Kerberos

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Grundlegende Informationen

Kerberos arbeitet nach dem Prinzip, Benutzer zu authentifizieren, ohne direkt deren Zugriff auf Ressourcen zu verwalten. Das ist ein wichtiger Unterschied, da er die Rolle des Protokolls innerhalb von Sicherheitsframeworks hervorhebt.

In Umgebungen wie Active Directory ist Kerberos maßgeblich dafür, die Identität von Benutzern zu etablieren, indem es ihre geheimen Passwörter validiert. Dieser Prozess stellt sicher, dass die Identität jedes Benutzers bestätigt wird, bevor er mit Netzwerkressourcen interagiert. Kerberos übernimmt jedoch nicht die Aufgabe, die Berechtigungen eines Benutzers für bestimmte Ressourcen oder Dienste zu bewerten oder durchzusetzen. Stattdessen bietet es eine sichere Methode zur Authentifizierung von Benutzern, was ein entscheidender erster Schritt im Sicherheitsprozess ist.

Nach der Authentifizierung durch Kerberos wird die Entscheidung über den Zugriff auf Ressourcen an die einzelnen Dienste im Netzwerk delegiert. Diese Dienste sind dann dafür verantwortlich, die Rechte und Berechtigungen des authentifizierten Benutzers zu bewerten, basierend auf den von Kerberos bereitgestellten Informationen über die Benutzerprivilegien. Dieses Design ermöglicht eine Trennung zwischen der Authentifizierung der Identität von Benutzern und der Verwaltung ihrer Zugriffsrechte und erlaubt so einen flexibleren und sichereren Ansatz für das Ressourcenmanagement in verteilten Netzwerken.

Standardport: 88/tcp/udp

PORT   STATE SERVICE
88/tcp open  kerberos-sec

Um zu lernen, wie man Kerberos missbraucht, sollten Sie den Beitrag über Active Directory** lesen.**

Nur-Kerberos-Umgebungen: Client-Vorbereitung und Fehlerbehebung

Wenn NTLM auf Domain-Diensten (SMB/WinRM/etc.) deaktiviert ist, müssen Sie sich mit Kerberos authentifizieren. Häufige Fallstricke und ein funktionierender Workflow:

  • Die Zeitsynchronisation ist zwingend. Wenn die Systemuhr Ihres Hosts um mehr als ein paar Minuten abweicht, sehen Sie KRB_AP_ERR_SKEW und alle Kerberos-Authentifizierungen schlagen fehl. Synchronisieren Sie gegen den DC:
bash
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
  • Erstelle eine gültige krb5.conf für das Ziel‑Realm/Domain. netexec (CME fork) kann dir beim Testen von SMB eine solche ausgeben:
bash
# Generate krb5.conf and install it
netexec smb <dc.fqdn> -u <user> -p '<pass>' -k --generate-krb5-file krb5.conf
sudo cp krb5.conf /etc/krb5.conf
  • Ein TGT erhalten und ccache überprüfen:
bash
kinit <user>
klist
  • Kerberos mit SMB-Tooling verwenden (no passwords sent, uses your ccache):
bash
# netexec / CME
netexec smb <dc.fqdn> -k            # lists shares, runs modules using Kerberos
# impacket examples also support -k / --no-pass to use the ccache
smbclient --kerberos //<dc.fqdn>/IPC$
  • GSSAPI SSH Einmalanmeldung (OpenSSH to Windows OpenSSH server):
bash
# Ensure krb5.conf is correct and you have a TGT (kinit)
# Use the FQDN that matches the host SPN. Wrong names cause: "Server not found in Kerberos database"
ssh -o GSSAPIAuthentication=yes <user>@<host.fqdn>

Tips:

  • Stellen Sie sicher, dass Ihre /etc/hosts den exakten FQDN auflöst, zu dem Sie per SSH/SMB verbinden, und dass dieser Eintrag vor jeglichen Bare-Domain-Einträgen steht, falls Sie DNS überschreiben. SPN-Nichtübereinstimmungen führen zu Problemen mit GSSAPI.
  • Wenn NTLM auf SMB deaktiviert ist, sehen Sie bei NTLM-Versuchen möglicherweise STATUS_NOT_SUPPORTED; fügen Sie -k hinzu, um Kerberos zu erzwingen.

Mehr

Shodan

  • port:88 kerberos

MS14-068

Die MS14-068-Schwachstelle erlaubt einem Angreifer, das Kerberos-Anmelde-Token eines legitimen Benutzers zu manipulieren, um fälschlich erhöhte Privilegien zu beanspruchen, z. B. Domain Admin. Dieser gefälschte Anspruch wird vom Domain Controller irrtümlich validiert, wodurch unautorisierter Zugriff auf Netzwerkressourcen im gesamten Active Directory forest ermöglicht wird.

Kerberos Vulnerability in MS14-068 (KB3011780) Explained – Active Directory & Azure AD/Entra ID Security

Other exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek

Referenzen

HackTricks Automatische Befehle

Protocol_Name: Kerberos    #Protocol Abbreviation if there is one.
Port_Number:  88   #Comma separated if there is more than one.
Protocol_Description: AD Domain Authentication         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for Kerberos
Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html

Entry_2:
Name: Pre-Creds
Description: Brute Force to get Usernames
Command: nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm="{Domain_Name}",userdb={Big_Userlist} {IP}

Entry_3:
Name: With Usernames
Description: Brute Force with Usernames and Passwords
Note: consider git clone https://github.com/ropnop/kerbrute.git ./kerbrute -h

Entry_4:
Name: With Creds
Description: Attempt to get a list of user service principal names
Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks