88tcp/udp - Pentesting Kerberos

Reading time: 6 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές Πληροφορίες

Kerberos λειτουργεί με μια αρχή όπου αυθεντικοποιεί χρήστες χωρίς να διαχειρίζεται άμεσα την πρόσβασή τους σε πόρους. Πρόκειται για μια σημαντική διάκριση καθώς υπογραμμίζει τον ρόλο του πρωτοκόλλου σε πλαίσια ασφάλειας.

Σε περιβάλλοντα όπως το Active Directory, το Kerberos παίζει καθοριστικό ρόλο στην καθιέρωση της ταυτότητας των χρηστών μέσω της επικύρωσης των μυστικών τους κωδικών πρόσβασης. Αυτή η διαδικασία διασφαλίζει ότι η ταυτότητα κάθε χρήστη επιβεβαιώνεται πριν αλληλεπιδράσει με πόρους του δικτύου. Ωστόσο, το Kerberos δεν επεκτείνει τη λειτουργικότητά του στην αξιολόγηση ή την επιβολή των δικαιωμάτων που έχει ένας χρήστης πάνω σε συγκεκριμένους πόρους ή υπηρεσίες. Αντίθετα, παρέχει έναν ασφαλή τρόπο αυθεντικοποίησης των χρηστών, που αποτελεί κρίσιμο πρώτο βήμα στη διαδικασία ασφάλειας.

Μετά την αυθεντικοποίηση από το Kerberos, η διαδικασία λήψης αποφάσεων σχετικά με την πρόσβαση σε πόρους ανατίθεται σε μεμονωμένες υπηρεσίες εντός του δικτύου. Αυτές οι υπηρεσίες είναι υπεύθυνες να αξιολογούν τα δικαιώματα και τις άδειες του αυθεντικοποιημένου χρήστη, βάσει των πληροφοριών που παρέχει το Kerberos για τα προνόμια του χρήστη. Αυτός ο σχεδιασμός επιτρέπει διαχωρισμό ευθυνών μεταξύ της αυθεντικοποίησης της ταυτότητας των χρηστών και της διαχείρισης των δικαιωμάτων πρόσβασης, επιτρέποντας μια πιο ευέλικτη και ασφαλή προσέγγιση στη διαχείριση πόρων σε κατανεμημένα δίκτυα.

Προεπιλεγμένη Θύρα: 88/tcp/udp

PORT   STATE SERVICE
88/tcp open  kerberos-sec

Για να μάθετε πώς να εκμεταλλευτείτε το Kerberos θα πρέπει να διαβάσετε το άρθρο για Active Directory.

Περιβάλλοντα αποκλειστικά με Kerberos: προετοιμασία πελάτη και αντιμετώπιση προβλημάτων

When NTLM is disabled on domain services (SMB/WinRM/etc.), you must authenticate with Kerberos. Common pitfalls and a working workflow:

  • Ο συγχρονισμός ώρας είναι υποχρεωτικός. Εάν το ρολόι του host έχει απόκλιση μεγαλύτερη από λίγα λεπτά θα δείτε KRB_AP_ERR_SKEW και όλος ο Kerberos έλεγχος ταυτότητας θα αποτύχει. Συγχρονίστε με το DC:
bash
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'

Δημιουργήστε ένα έγκυρο krb5.conf για το realm/domain στόχο. netexec (CME fork) μπορεί να παράγει ένα για εσάς ενώ δοκιμάζετε SMB:

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
  • Απόκτηση ενός TGT και επαλήθευση του ccache:
bash
kinit <user>
klist
  • Χρησιμοποιήστε Kerberos με SMB εργαλεία (χωρίς αποστολή passwords, χρησιμοποιεί το 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 ενιαία ταυτοποίηση (OpenSSH σε 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:

  • Βεβαιώσου ότι το /etc/hosts επιλύει το ακριβές FQDN που θα κάνεις SSH/SMB, και ότι βρίσκεται πριν από οποιεσδήποτε εγγραφές απλού domain αν παρακάμπτεις το DNS. Οι ασυμφωνίες SPN σπάνε το GSSAPI.
  • Αν το NTLM είναι απενεργοποιημένο στο SMB μπορεί να δείτε STATUS_NOT_SUPPORTED με προσπάθειες NTLM; πρόσθεσε -k για να εξαναγκάσεις Kerberos.

Περισσότερα

Shodan

  • port:88 kerberos

MS14-068

Το σφάλμα MS14-068 επιτρέπει σε έναν επιτιθέμενο να παραποιήσει το Kerberos login token ενός νόμιμου χρήστη ώστε να δηλώσει ψευδώς αυξημένα προνόμια, όπως το να είναι Domain Admin. Αυτός ο πλαστός ισχυρισμός πιστοποιείται εσφαλμένα από τον Domain Controller, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε πόρους δικτύου σε όλο το Active Directory forest.

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

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

Αναφορές

HackTricks Αυτόματες Εντολές

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

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks