88tcp/udp - Pentesting Kerberos
Reading time: 6 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Kerberos działa na zasadzie, że uwierzytelnia użytkowników bez bezpośredniego zarządzania ich dostępem do zasobów. To ważne rozróżnienie, ponieważ podkreśla rolę protokołu w ramach bezpieczeństwa.
W środowiskach takich jak Active Directory, Kerberos odgrywa kluczową rolę w ustalaniu tożsamości użytkowników poprzez weryfikację ich tajnych haseł. Proces ten zapewnia potwierdzenie tożsamości każdego użytkownika zanim zacznie on korzystać z zasobów sieciowych. Jednak Kerberos nie rozszerza swojej funkcjonalności na ocenę ani egzekwowanie uprawnień użytkownika wobec konkretnych zasobów czy usług. Zamiast tego dostarcza bezpieczny sposób uwierzytelniania użytkowników, co jest istotnym pierwszym krokiem w procesie bezpieczeństwa.
Po uwierzytelnieniu przez Kerberos, proces decyzyjny dotyczący dostępu do zasobów jest delegowany do poszczególnych usług w sieci. Usługi te są następnie odpowiedzialne za ocenę praw i uprawnień uwierzytelnionego użytkownika, bazując na informacjach dostarczonych przez Kerberos o przyznanych uprawnieniach. Takie rozdzielenie pozwala na oddzielenie kwestii uwierzytelniania tożsamości użytkowników od zarządzania ich prawami dostępu, co umożliwia bardziej elastyczne i bezpieczne zarządzanie zasobami w sieciach rozproszonych.
Domyślny port: 88/tcp/udp
PORT STATE SERVICE
88/tcp open kerberos-sec
Aby nauczyć się, jak wykorzystywać Kerberos, przeczytaj wpis o Active Directory.
Środowiska oparte wyłącznie na Kerberos: przygotowanie klienta i rozwiązywanie problemów
Gdy NTLM jest wyłączony na usługach domenowych (SMB/WinRM/itd.), musisz uwierzytelnić się za pomocą Kerberos. Typowe pułapki i sprawdzony przebieg działań:
- Synchronizacja czasu jest obowiązkowa. Jeśli zegar hosta jest przesunięty o więcej niż kilka minut, zobaczysz
KRB_AP_ERR_SKEW
i wszystkie uwierzytelnienia Kerberos nie powiodą się. Synchronizuj z DC:
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
- Wygeneruj poprawny krb5.conf dla docelowego realm/domeny.
netexec
(CME fork) może wygenerować go dla Ciebie podczas testowania SMB:
# 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
- Uzyskaj TGT i zweryfikuj ccache:
kinit <user>
klist
- Użyj Kerberos z narzędziami SMB (no passwords sent, używa twojego 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 logowanie jednokrotne (OpenSSH do 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:
- Upewnij się, że Twój
/etc/hosts
rozwiązuje dokładny FQDN, do którego będziesz się łączyć przez SSH/SMB, oraz że znajduje się on przed jakimikolwiek gołymi wpisami domenowymi, jeśli nadpisujesz DNS. Niedopasowania SPN powodują awarie GSSAPI. - Jeśli NTLM jest wyłączony na SMB, możesz zobaczyć
STATUS_NOT_SUPPORTED
przy próbach NTLM; dodaj-k
, aby wymusić Kerberos.
Więcej
Shodan
port:88 kerberos
MS14-068
Luka MS14-068 pozwala atakującemu na manipulację tokenem logowania Kerberos prawowitego użytkownika, aby fałszywie rościć sobie podwyższone uprawnienia, takie jak Domain Admin. To podrobione roszczenie jest błędnie zatwierdzane przez Domain Controller, umożliwiając nieautoryzowany dostęp do zasobów sieciowych w całym lesie Active Directory.
Other exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek
Źródła
- NetExec (CME) wiki – Kerberos and krb5.conf generation
- OpenSSH GSSAPIAuthentication
- MIT Kerberos – Using Kerberos on UNIX
- 0xdf – HTB: TheFrizz
Automatyczne polecenia 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
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.