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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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:
# 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:
# 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:
kinit <user>
klist
- Kerberos mit SMB-Tooling verwenden (no passwords sent, uses your ccache):
# 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):
# 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.
Other exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek
Referenzen
- NetExec (CME) wiki – Kerberos and krb5.conf generation
- OpenSSH GSSAPIAuthentication
- MIT Kerberos – Using Kerberos on UNIX
- 0xdf – HTB: TheFrizz
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.