Sedat KIZILÇINAR

Computer Engineer | Sr. Security Engineer | Instructor | AppSec

Kategori : sistem-guvenligi

Windows Sistemlerinde Post Exploitation Part-3

Domain ağı hakkında bilgileri elde ettikten sonra ağın genelinde host ve port taraması sonucunda açık olan bilgisayarların açık portlarını tespit ederek local ağ üzerinde exploitation işlemi için tarama gerçekleştirilmektedir. Bu tarama sonucunda belirtilen portlar doğrultusunda IP adresine sahip olan makinelerin hangisinin Domain Controller olup olmadığı veya bu makinelerin açık olan portlarında hangi zafiyetlerin olabileceği doğrultusunda sistemlere yönelik bilgi toplama ve sızma işlemi gerçekleştirilmektedir. Açık port numarası 88 olan makinenin Domain Controller makinesi olacağı bilgisine sahip olunmalıdır. Çünkü 88. port üzerinde kerberos protokolü bulunmaktadır. TCP/IP yapısının yeterince güvenli bulunmaması sonucunda MIT tarafından geliştirilen bir ağ kimlik denetleme protokolüdür. Yetkilendirme işlemleri için kullanılmaktadır. Bu yetkilendirme işlemleri Domain Controller üzerinden gerçekleştirildiğinden dolayı 88.portu açık olan makinanın Domain Controller makinesi olduğunu tespit edilmiştir. Şekil 9’da ağ üzerinde port taraması gerçekleştiren kod parçasından bir kesit gösterilmiştir.

atgr9
Şekil9 : Ağ üzerinden port tarama kodunun bir görüntüsü


Şekil 9’a bakıldığında network taramasında IP adreslerinin belirlenmesi için tanımlanan bir kod parçacığı bulunmaktadır. Bu kod parçacığında girilecek IP adresinin formatı belirlenerek düzenlenmiştir. Şekil 10’da port taraması işlemi gerçekleştirilmiştir.

atgr10
Şekil10 : Port tarama sonucunun bir görüntüsü


Şekil 10’da sistemlere yönelik yapılan port taramalarının işlem esnasındaki bir ekran görüntüsü verilmiştir. Bu ekran görüntüsünde 445,22,135 numaralı portları taramasını belirterek spesifik port taraması gerçekleştirilmektedir. Şekil 11’de ise bu işlem grafiksel kullanıcı arayüzü üzerinde gerçekleştirilmiştir.

atgr11
Şekil11 : Hatedshell-GUI üzerinden port tarama görüntüsü


Şekil 9, 10 ve 11 üzerinde gösterildiği gibi host ve port taramaları gerçekleştirmiştir. Bu taramalar sonucunda gerekli bilgiler elde edilmiştir. Yukarıda gösterildiği gibi Console ve GUI uygulamalarında farklı gelmelerinin sebebi birinde ARP paketini yönelik kod yazılırken diğerinde ise ICMP paketleri gönderilerek port bilgisi elde etmek için kod yazılmıştır.

Şuana kadar ağ üzerinden gerekli bilgileri elde edilmiştir. Fakat bu bilgiler doğrultusunda hedef sistem ele geçirilemediği takdirde başka bir yöntem ile senaryo etkin rolle uygulanabilmektedir. Bu yöntem ise ağ üzerinde Domain Admin kullanıcısının giriş yaptığı makineleri tespit eden bir script modülü kullanılarak yapılmaktadır. Bu modül sayesinde ağ üzerinde local Administrator yetkisinin aktif olduğu makinalar tespit edilmektedir. Bunun önemi ise bir Domain ağında önemli işlemlerin gerçekleştirildiği makineler üzerinde genellikle local olarak yüksek yetkilere sahip hesapların aktif edilmesi gerekmektedir. Bundan dolayı bu tür işlemlerin gerçekleştirilmesi için Local Administrator yetkisi aktif edilmektedir. Böylelikle bu makinelere yönelik exploitation işlemlerinin gerçekleştirilmesi doğrudur. Çünkü domain ağındaki bütün makinelere yönelik zıplama diye nitelendirdiğimiz local exploitation yöntemini sadece Local Administrator yetkisinin aktif olduğu makinelere yönelik yapılırsa zamandan tasarruf edilecektir. Böylelikle domain ağını ele geçirme işlemi kolaylaşacaktır. Çünkü bu makineler genellikle Domain Admin ile etkileşim içerisinde bulunmaktadır. Bu makineler üzerinde Domain Admin kullanıcısının kimlik bilgileri bulunmaktadır. Bundan dolayı çok etkili bir yöntemdir. Şekil 12’de Invoke-UserHunter modülü kullanılmıştır.

atgr12
Şekil12 : Invoke-UserHunter modülünün çalıştırılması


Şekil 12’de gösterildiği gibi sistem domain ağı üzerindeki Local Administrator kullanıcısının aktif olduğu makineleri tespit etmek için Invoke-UserHunter -CheckAccess komutunun çalıştırılması gerekmektedir. Güvenlik duvarını atlatmak için script base64 ile kodlanmıştır. Bu doğrultuda script çalıştırılırken güvenlik duvarını atlatarak sonuçları göstermektedir. Şekil 13’te Invoke-UserHunter modülü çalışması sonucunun gösterimi görülmektedir.

atgr13
Şekil13 : Domain Admin kullanıcısının giriş yaptığı makine/makineler


Şekil 13’te gösterildiği gibi domain ağında bulunan makineler üzerinde hangilerinde Local Administrator kullanıcının aktif olduğu tespit edilmiştir. Bu tespit işleminden sonra Domain Admin’i veya DC’yi ele geçirmek için bu makineler üzerinden ne işlemler yapılıp yapılmadığı için bu makineleri hedef alarak kapsamı daraltarak sızma işlemini gerçekleştirilmelidir. Makinayı ele geçirdikten sonra makine üzerindeki kimlik bilgilerini elde etmemiz gerekecektir. Bu işlemde mimikatz aracından faydalanarak bellekteki, LSA ve SAM veritabanındaki kimlik bilgilerini elde etmemiz gerekmektedir. Şekil 14’te mimkatz aracı kullanılarak kimlik bilgileri elde edilmiştir.

atgr14
Şekil14 : Mimikatz aracını kullanarak kimlik bilgilerinin elde edilmesi


Şekil 14’te gösterildiği gibi bellekte kayıtlı olan kullanıcı bilgileri elde edilmiştir. Fakat kimlik bilgileri NTLM olarak elde edilmiştir. NTLM kimlik bilgileri, etkileşimli oturum açma işlemi sırasında elde edilen verilere dayanır ve bir domain adı, kullanıcı adı ve kullanıcı şifresinin tek yönlü bir karma değerinden oluşmaktadır. NTLM, kullanıcının şifresini tel üzerinden göndermeden bir kullanıcının kimliğini doğrulamak için şifreli bir challenge/response protokolü kullanmaktadır. Bunun yerine, kimlik doğrulama isteyen sistem güvenli NTLM kimlik bilgilerine erişebildiğini kanıtlayan bir hesaplama yapmalıdır.

ReflectivePEInjection ile Mimikatz kullanılarak bu işlemi gerçekleştirilmektedir. Powershell işleminin belleğine DLL veya EXE yüklemektedir. Uzak sistemdeki belleğe yüklemek için yerel bir Windows PE(DLL veya EXE) sağlayarak uzak sunucuda çalıştırmaktadır. Diske dosya yazmada belleğe yürütmektedir. Session0’daki System işlemlerine arka kapı enjekte etmek için kullanışlıdır. Domain Admin kimlik bilgilerini ele geçirdikten sonra uzaktaki makinalar üzerinde işlemler gerçekleştirilmektedir. Uzak makinenin host bilgisini girerek uzak makinenin kimlik bilgileri elde edilmektedir. Şekil 15’te uzak makine üzerindeki kimlik bilgileri elde edilmiştir.

atgr15
Şekil15 : Mimikatz aracı kullanılarak uzak makine kimlik bilgilerinin elde edilmesi


Şekil 15’te mimkatz aracının -DumpCreds parametresini çalıştırarak hedef makineye ait kimlik bilgileri elde edilmiştir. Ayrıca mimikatz aracı kullanılarak DCSync üzerinden NTLM hash elde edilmektedir. Bu özellik mimikatz’a eklenen yeni bir özellik olup Benjamin DELPY ve Vicent Le TONX tarafından yazılmıştır. DC makinesini taklit ederek hedeflenen Domain Controller hesap parolasını istemektedir. Genellikle krbtgt hesabına yönelik yapılmaktadır. DCSync ve uygun haklarını kullanan saldırgan etkileşimli oturum açma ve AD veritabanı dosyasını(ntds.dit) kapatma gerektirmeden ağ üzerindeki bir DC şifre korumasını ve önceki parola korumalarını çekebilmektedir. DCSync’yi çalıştırmak özel haklar gerektirmektedir. Salt Okunur DC yalnızca varsayılan olarak kullanıcıların parola verilerini çekmesine izin verildiği unutulmamalıdır.

DCSync’nin çalışma mantığı aşağıdaki gibidir:

  • Belirtilen Domain adında DC keşfedilmektedir.
  • DC’nin GetNCChanges yoluyla kullanıcı kimliklerinin çoğaltılması istenilmektedir.

DCSync kullanarak kimlik bilgileri elde edilebilmektedir. Mimikatz üzerinden lsadump::dcsync /domain:domain_adi /user:Administrator komutunu çalıştırarak bu işlem gerçekleştirilmektedir. Bir yöneticinin hesabını, DCSync ile hedeflerinde gelen NTLM’lerde LM’lerin sayısı fazla oluşmaktadır. Yönetici şifresini unuttuktan sonra hangi stratejiye göre yeni şifre oluşturduğu bilgisi elde edilebilmektedir. Böylelikle şifreyi unuttuğumuzda veya şifre değiştirildiğinde kolayca tahmin edilmektedir.

DCSync kullanımını algılamanın en iyi algılama yöntemi ağı izlemek ile yapılmaktadır. İlk olarak, tüm DC ip adresleri belirlenip ve çoğaltma izin listesine eklenmelidir. Powershell cmdlet’de; «Get-ADDomainController –filter * |IP adresi» komutu çalıştırılmalıdır. İkinci adım olarak, DcGetNCChanges isteğinin çoğaltma izin listesi (DC IP’lerinin listesi değil) üzerinde bir IP oluşturulması durumunda IDS’i tetikleyecek şekilde yapılandırılması gerekmektedir. Belirtilen Domain adında DC’yi keşfedip DC’nin GetNCChanges yoluyla kullanıcı kimliklerinin çoğaltılmasını istemektedir. DCSync kullanılarak kimlik bilgileri böylelikle çekilecektir. Bu bilgileri elde ettikten sonra uzak makineyi ele geçirme işlemi gerçekleştirilecektir.Şekil 16’da mimikatz aracındaki DCSync işlemi gerçekleştirilmektedir.

atgr16
Şekil16 : Mimikatz aracı üzerinden DCSync işleminin yapılması


Şekil 16’da lsadump değeri olarak DCSync olarak belirtilmiştir. Yüksek haklar gerektirdiği için kullanıcı Administrator olarak belirlenmiştir. Kimlik bilgisi NTLM olarak getirilmiştir. Şekil 17’deelde edilen kimlik bilgileri ile hedef makine üzerinde komut çalıştırma işlemi gösterilmektedir.

atgr17
Şekil17 : DC’ye uzaktan bağlanmak


Şekil 17’de gösterildiği gibi elde edinilen bilgiler doğrultusunda DC makinesi ile bağlantı kurulmaktadır. Ayrıca makine üzerinde yüksek hak ve yetkilere elde edilecektir. Domain Admin kimlik bilgilerinin elde edilmesi ile Domain ağındaki her şey ele geçirilmiş olarak varsayılmaktadır. Şekil 18’’de ise DC makinesi ile bağlantıyı sağlama işlemi grafiksel kullanıcı arayüzü üzerinde gösterilmiştir.

atgr18
Şekil18 : GUI ortamı üzerinde PsExec aracının kullanılması


Şekil 19’da DC makinesine bağlandıktan sonra makine üzerinde komut çalıştırılmıştır.

atgr19
Şekil19 : Mimikatz ve PsExec Aracı ile uzak makinaya bağlanmak


Şekil 18 ve Şekil 19’da gösterildiği gibi elde edilen bilgiler doğrultusunda mimikatz ve psexec aracını kullanarak uzak makine üzerinden bağlantısını oluşturup bu makine üzerinden komut çalıştırılabilmektedir. Böylelikle ağ üzerinde istenilen herhangi bir makineye uzaktan bağlanılabilmektedir. Post exploitation işlemi böylelikle sonuçlanmaktadır.

Sedat KIZILÇINAR