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.

FORCE-SET SPN · HEDEFLİ KERBEROASTING 1 · GenericWrite missandei → viserys set servicePrincipalName 2 · Kerberoast TGS iste → hash kullanıcının parolasıyla şifreli 3 · Çevrimdışı kır hashcat -m 13100 viserys : GoldCrown
Üç adım: yazılabilir bir kullanıcıya SPN yaz, yeni SPN'i Kerberoast et ve bileti kır — AD CS yok, parola sıfırlama yok, yalnızca zayıf bir parola ve bir yazma hakkı.

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ımAraçSonuç
SPN’i yazbloodyAD set object <user> servicePrincipalNamehedef artık Kerberoast edilebilir
Roast etnxc ldap ... --kerberoastTGS hash
Kırhashcat -m 13100kullanı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

Kaynaklar ve güncellik

Bu teknik not ne kadar güncel?

Kontrol edilen kaynaklar4 Kasım 2026

En son kaynak incelemesi, içerik güncellemesi veya yayın tarihi gösterilmektedir.

İnceleme DurumuKamuya açık kaynaklar incelendi

Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.