88tcp/udp - Pentesting Kerberos

Reading time: 6 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Kerberos funkcioniše po principu kojim autentifikuje korisnike, ali ne upravlja direktno njihovim pristupom resursima. To je važna razlika jer naglašava ulogu protokola u sigurnosnim okvirima.

U okruženjima kao što je Active Directory, Kerberos ima ključnu ulogu u utvrđivanju identiteta korisnika proverom njihovih tajnih lozinki. Ovaj proces osigurava da je identitet svakog korisnika potvrđen pre nego što pristupi mrežnim resursima. Međutim, Kerberos ne obuhvata procenu niti sprovođenje dozvola koje korisnik ima nad određenim resursima ili servisima. Umesto toga, on pruža siguran način autentifikacije korisnika, što je ključni prvi korak u sigurnosnom procesu.

Nakon autentifikacije od strane Kerberos, proces donošenja odluka o pristupu resursima prepušta se pojedinačnim servisima unutar mreže. Ti servisi su odgovorni za procenu prava i dozvola autentifikovanog korisnika, na osnovu informacija koje Kerberos pruža o korisnikovim privilegijama. Ovaj dizajn omogućava razdvajanje odgovornosti između autentifikacije identiteta korisnika i upravljanja njihovim pristupnim pravima, što omogućava fleksibilniji i sigurniji pristup upravljanju resursima u distribuiranim mrežama.

Podrazumevani port: 88/tcp/udp

PORT   STATE SERVICE
88/tcp open  kerberos-sec

Da biste naučili kako zloupotrebiti Kerberos, trebalo bi da pročitate post o Active Directory.

Okruženja samo sa Kerberosom: priprema klijenta i rešavanje problema

Kada je NTLM onemogućen na servisima domena (SMB/WinRM/itd.), morate se autentifikovati pomoću Kerberos. Uobičajene zamke i radni tok koji funkcioniše:

  • Sinhronizacija vremena je obavezna. Ako je sat na vašem hostu pomeren za više od nekoliko minuta, videćete KRB_AP_ERR_SKEW i sva Kerberos autentifikacija će propasti. Sinhronizujte sa DC-jem:
bash
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
  • Generišite važeći krb5.conf za ciljnu realm/domen. netexec (CME fork) može da vam generiše jedan dok testirate 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
  • Dobijte TGT i proverite ccache:
bash
kinit <user>
klist
  • Koristite Kerberos sa SMB alatima (passwords se ne šalju, koristi vaš 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 jedinstvena prijava (SSO) (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>

Saveti:

  • Uverite se da vaš /etc/hosts rešava tačan FQDN na koji ćete se povezivati preko SSH/SMB, i da je taj unos pre bilo kojih unosa za goli domen ako prepisujete DNS. Neslaganja u SPN-u prekidaju GSSAPI.
  • Ako je NTLM onemogućen na SMB, možete videti STATUS_NOT_SUPPORTED kod NTLM pokušaja; dodajte -k da primorate Kerberos.

Više

Shodan

  • port:88 kerberos

MS14-068

Propust MS14-068 omogućava napadaču da manipuliše legitimnog korisnika Kerberos login tokenom kako bi lažno tvrdio povišene privilegije, kao što je Domain Admin. Ova falsifikovana tvrdnja se greškom potvrđuje od strane Domain Controller-a, omogućavajući neovlašćen pristup mrežnim resursima širom Active Directory forest-a.

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

Reference

HackTricks Automatske komande

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

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks