Windows Server

KRBTGT Password Reset’inde Arka Planda Ne Oluyor? Belirlediğiniz Password Aslında Kullanılmıyor

KRBTGT account’unun password’ünü reset ederken girilen password, account’a hiçbir zaman set edilmiyor. Windows bu işlemi yalnızca bir tetikleyici olarak kullanıyor ve kendi ürettiği çok uzun bir password’ü account’a yazıyor. Bu da KRBTGT password’lerini password vault’larda saklamanın tamamen anlamsız olduğu anlamına geliyor.

KRBTGT account’u nedir?

Her Active Directory domain’inde, tüm RWDC’lerin kullandığı en az bir KRBTGT account’u bulunuyor. Ortamda RODC varsa her RODC için ayrıca KRBTGT_<sayısal değer> formatında bir KRBTGT account’u oluşturuluyor. Bir RODC’nin hangi KRBTGT account’unu kullandığı, RODC computer account’undaki msDS-KrbTgtLink attribute’undan görülebiliyor.

Tüm KRBTGT account’ları disabled durumdaki normal user account’larıdır ve enable edilemezler. Zaten enable edilmeleri de gerekmez, çünkü bu account’lar authentication yapmaz. Yalnızca Kerberos ticket’larını imzalamak ve şifrelemek için kullanılan password hash/key’i saklayan birer placeholder’dır.

Asıl tehlike: hash ve key’ler

KRBTGT account’unun RC4 hash’ini, AES128 key’ini veya AES256 key’ini ele geçiren bir attacker, Golden Ticket saldırısıyla kendi Kerberos TGT’lerini üretebilir. Domain Admin yetkisi elde edildikten sonra yapılan bu post-exploitation saldırısında plain text password’e ihtiyaç yok. Rubeus gibi araçlar doğrudan hash veya key ile çalışabiliyor.

Tersi de geçerli: KRBTGT için belirlenen plain text password tamamen işe yaramaz. Bu password’den RC4 hash veya AES key üretilse bile bunlar account’taki gerçek değerlerle eşleşmez.

Test: Aynı password, farklı hash

Bunu göstermek için bir test domain’inde hem KRBTGT account’una hem de normal bir user account’una aynı password set edildi:

Password : J0rgesMade^pStr0ngP@$$w0rd
RC4/NT hash : c747fa21cc57b1b13b5cb7d5d67bb779

Password’ler Set-ADAccountPassword ile set edildi, ardından her iki account’un NT hash’i DSInternals modülündeki Get-ADReplAccount ile okundu ve ConvertTo-NTHash ile password’den hesaplanan hash ile karşılaştırıldı:

AccountHesaplanan hash ile eşleşiyor mu?
Normal user accountEvet
KRBTGTHayır

Aynı password set edilmesine rağmen KRBTGT account’undaki hash tamamen farklı çıkıyor. Yani sistem, password reset işlemini yalnızca bir tetikleyici olarak kullanıp kendi ürettiği değeri set ediyor. Bu nedenle KRBTGT password’lerini, eski değerleri de dahil olmak üzere bir password vault’ta saklamanın hiçbir faydası yok.

KRBTGT reset önerileri

  • Forest/domain recovery sırasında veya sonrasında: KRBTGT password’ü iki kez reset edilmeli.
  • Normal operasyonda (saldırı yokken): Password düzenli olarak reset edilmeli. Reset aralığı en az maksimum Kerberos TGT lifetime kadar olmalı (varsayılan 10 saat). AD replication sağlıklıysa günde bir reset uygun bir sıklık. Otomasyon için, art arda hızlı reset’e karşı korumaları olan Reset-KrbTgt-Password-For-RWDCs-And-RODCs script’i kullanılabilir.
  • Saldırı altındayken veya saldırı sonrasında: NTDS.DIT extraction ya da DCSync izine rastlandıysa password en az bir kez hemen reset edilmeli, ikinci reset en az 10 saat sonra yapılmalı. Bu, en az etkili ama en az güvenli seçenek. En güvenli seçenek ise iki reset’i arka arkaya beklemeden yapmak. Ancak bu durumda mevcut tüm TGT’ler anında geçersiz olur ve user, admin, service, computer, sMSA, gMSA ve dMSA dahil her account’un yeniden authenticate olması gerekir.

İlgili Makaleler

Bir yanıt yazın

Başa dön tuşu