88tcp/udp - Pentesting Kerberos
Reading time: 6 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
Kerberos, kullanıcıları kaynaklara doğrudan erişimlerini yönetmeden kimlik doğrulama ilkesine göre çalışır. Bu, protokolün güvenlik çerçevelerindeki rolünü vurguladığı için önemli bir ayrımdır.
Active Directory gibi ortamlarda Kerberos, kullanıcıların gizli parolalarını doğrulayarak kimliklerini belirlemede önemli bir rol oynar. Bu süreç, her kullanıcının ağa erişmeden önce kimliğinin onaylanmasını sağlar. Ancak Kerberos, bir kullanıcının belirli kaynaklar veya hizmetler üzerindeki yetkilerini değerlendirme veya uygulama işlevini genişletmez. Bunun yerine kullanıcıları güvenli bir şekilde doğrulamanın yolunu sağlar; bu, güvenlik sürecinin kritik bir ilk adımıdır.
Kerberos tarafından kimlik doğrulaması yapıldıktan sonra, kaynaklara erişimle ilgili karar verme süreci ağ içindeki bireysel hizmetlere devredilir. Bu hizmetler, Kerberos'un kullanıcının ayrıcalıkları hakkında sağladığı bilgilere dayanarak doğrulanmış kullanıcının hak ve izinlerini değerlendirmekten sorumludur. Bu tasarım, kullanıcıların kimliklerinin doğrulanması ile erişim haklarının yönetilmesi arasında bir sorumluluk ayrımı sağlayarak dağıtık ağlarda kaynak yönetimine daha esnek ve güvenli bir yaklaşım getirir.
Varsayılan Port: 88/tcp/udp
PORT STATE SERVICE
88/tcp open kerberos-sec
Kerberos'tan nasıl kötüye yararlanılacağını öğrenmek için şu yazıyı okuyun: Active Directory.
Yalnızca Kerberos ortamları: istemci hazırlığı ve sorun giderme
When NTLM is disabled on domain services (SMB/WinRM/etc.), you must authenticate with Kerberos. Common pitfalls and a working workflow:
- Saat senkronizasyonu zorunludur. Eğer host saatiniz birkaç dakikadan fazla sapmışsa
KRB_AP_ERR_SKEW
hatasını görürsünüz ve tüm Kerberos kimlik doğrulamaları başarısız olur. DC ile senkronize edin:
# quick one-shot sync (requires sudo)
sudo ntpdate <dc.fqdn> || sudo chronyd -q 'server <dc.fqdn> iburst'
- Hedef realm/domain için geçerli bir krb5.conf oluşturun.
netexec
(CME fork) SMB testleri sırasında sizin için bir tane üretebilir:
# 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
- Bir TGT alın ve ccache'i doğrulayın:
kinit <user>
klist
- Kerberos'u SMB araçlarıyla kullanın (no passwords sent, ccache'inizi kullanır):
# 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 tek oturum açma (OpenSSH'den Windows OpenSSH sunucusuna):
# 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>
İpuçları:
- Ensure your
/etc/hosts
resolves the exact FQDN you will SSH/SMB to, and that it comes before any bare domain entries if you are overriding DNS. SPN mismatches break GSSAPI. - If NTLM is disabled on SMB you may see
STATUS_NOT_SUPPORTED
with NTLM attempts; add-k
to force Kerberos.
Daha Fazla
Shodan
port:88 kerberos
MS14-068
MS14-068 güvenlik açığı, bir saldırganın meşru bir kullanıcının Kerberos oturum belirtecini değiştirerek yanlış şekilde yükseltilmiş ayrıcalıklar talep etmesine (ör. Domain Admin olmak) izin verir. Bu sahte talep Domain Controller tarafından hatayla doğrulanır ve Active Directory forest'ı genelinde yetkisiz erişime yol açar.
Diğer exploits: https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek
Referanslar
- NetExec (CME) wiki – Kerberos and krb5.conf generation
- OpenSSH GSSAPIAuthentication
- MIT Kerberos – Using Kerberos on UNIX
- 0xdf – HTB: TheFrizz
HackTricks Otomatik Komutları
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'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.