KRBTGT account’unun password’ünü reset ederken girilen password, account’a hiçbir zaman set edilmiyor. Windows işlemi yalnızca tetikleyici olarak kullanıyor kendi ürettiği çok uzun password’ü account’a yazıyor. 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 KRBTGT account’u bulunuyor. Ortamda RODC varsa her RODC için ayrıca KRBTGT_<sayısal değer> formatında KRBTGT account’u oluşturuluyor. 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 enable edilemezler. Zaten enable edilmeleri gerekmez, çünkü account’lar authentication yapmaz. Yalnızca Kerberos ticket’larını imzalamak şifrelemek için kullanılan password hash/key’i saklayan birer placeholder’dır.

Asıl tehlike: hash key’ler

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

Tersi geçerli: KRBTGT için belirlenen plain text password tamamen işe yaramaz. 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 test domain’inde hem KRBTGT account’una hem normal user account’una aynı password set edildi:

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

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

AccountHesaplanan hash eşleşiyor ?Normal user accountEvetKRBTGTHayır

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

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 reset uygun 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:.DIT extraction ya DCSync izine rastlandıysa password en az kez hemen reset edilmeli, ikinci reset en az 10 saat sonra yapılmalı. en az etkili ama en az güvenli seçenek. En güvenli seçenek ise iki reset’i arka arkaya beklemeden yapmak. Ancak durumda mevcut tüm TGT’ler anında geçersiz olur user, admin, service, computer, sMSA, gMSA dMSA dahil her account’un yeniden authenticate olması gerekir.