Root > Documents > Web Güvenlik Açıkları > How To Overcome dows heap Guard
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > How To Overcome dows heap Guard
Madde
  Yazar : Dr.CheckPoint
  Date : 20.03.2006 17:48:13
 
# How To Overcome dows heap Guard
 

Windows Kümeleme Korumasini Asma

Windows heap overflows açigi geçtigimiz bir kaç yilda çok popülerlesti.

Dökümanlara göre bu iç yapi ve Windows kümeleme mekanizmasini tutan, "Third Generation Exploitation" (3. nesil sörümürü) yada "Windows Heap Overflows"  olarak tanitildi.

Ayrica kümeleme-tabanli tampon bellek tasimasini (buffer overflow) tetikleyen (sömüren) bir yol olarak sunuldu.

Dökümanlarda sunulan teknikler bu açiklara olan güveni arttirdi."Reliable Windows Exploits" (Güvenilir Windows Sömürüsü). Kümeleme sömürüsü (heap exploit) günümüzde Windows XP,Windows XP SP1 ve Windows 2000 gibi sistemlerde çok iyi uygulanabilmektedir.

Buna ragmen, Windows 2003 ve sonraki sürümler,Windows XP SP2 gibi sistemlerin sunulmasiyla,hacker larin kümeleme sömürüsü (heap explotation) yapmasini engelleyen yeni bir güvenlik anlayisi ve seviyesi getirdi.


Dökümanlara göz attigimizda, neden klasik kümeleme sömürüleri ilkelerinin yeni Windows sürümlerinde çalismadigini hatirlayacagiz.

Ardindan sizlere bu koruma seviyesini asmak için yeni bir yöntem sunucagiz.To trigger a memory overwrite (hafiza üzerine yazmayi tetikleme).

Another Way to Bypass Heap Protections (kümeleme korumasini asmak için farkli bir yol)

Bu yöntemdeki amaç,varsayilan kümele isleminde saklanan özel yapilari izleyerek hafizanin son 4 byte tina veri yazmaktir.

Varsayilan kümeleme islemi,bununla birlikte sistemin olusturdugu diger kümelemeler, bir çok uygulamanin (Windows APIs) bilgi saklamasi ve çevresine sunmasi için kullanilmaktadir.Dinamik (degisken) baglantili bir DLL (uyuglama uzantisi) sistemde yüklendiginde , bu DLL nin ana fonksiyonu (DLLMain yada benzeri...) çagrilir ve sikla veriler bu islem kümesinde depolanan veri alinabilir.Peki bu sirada hafizanin üzerine yazilan veri miktari nedir?

Gerçek su ki en basit uygulamalar bile örnegin Windows Notdefteri, bir çok  kütüphanelere (DLL) ihtiyaç duymasi özellikle çok ilginçtir.Eger biz varsayilan kümeleri denetlersek, ana islem parçasinin uygulanmaya (thread) baslamadan önce,farkedicez ki güzel bir miktarda küme hafizamizda unitelenmis.40 byte (ki 8 byte ti baslik için ayrilmis) lik bu hafiza ünitemize kisa bir bakis attigimizda asagidatarif edilen yapiya sahip oldugunu görebiliriz.

A sonraki 40 byte lik yapinin adresini isaret etmektedir.
B önceki 40 byte lik yapinin adresini isaret etmektedir.

NOT: Eger islemi bir çesit hata ayiklayicisi (debugger) ile gerçeklestirirseniz,bu yapilar 56 byte uzunluguna gelicektir.Sistem dogal olarak kümenin sonuna 16 byte ekleyerek uygulamanin bir çesit hata ayiklayicisi ile çalistirildigini belirler.

Ilk fark edilebilir olay A ve B nin ön ve arka pointer larda rol almasidir.Ayrica bu yapida X olarak tanimlanan kritik bir bölüm olusturulur.Bu kritik bölüm basladiginda 40-byte lik bir yapiyila birlesir -- Biz buna baglanmis yapi diyecegiz -- ve kritik bölümde bazi parçalari tutmak üzere olusturulur.bu yapilarin bir kismi ntdll.dll adli veri bölümünde yer almaktadir.Bu yapilarin hepsi kullanildiginda , baglanmis yapilar varsayilan (default) küme içerisinde olusturulur.Lütfen asagidaki sekli inceliyelim.

Bu çift baglantili liste bize küme yönetim rütünleri tarafindan tutulan serbest parça yollarini hatirlatmaktadir.Bir kritik bölümün yikimi boyunca,birlestirilmis bag yapilari onlarin listesinden silinecektir.eger A ve B yi kaldirirsak , hafizaya 4-byte uzunlugunda bir parça üzerine yazabilecegiz.Biz bu baglanmamis islemlerin içindeki (saldiracagimiz) kodu rahatlikla bulabliecegiz.

Asagidaki assembly satirlari  RtlDeleteCriticalSection (ntdll.dll sürüm 5.1.2600.2180) tarafindan uygulandi:

mov [eax], ecx    ; eax=B
mov [ecx+4], eax  ; ecx=A

Bu satirlar muhtemelen daha önce bahsettigimiz bir çok seyi size hatirlatmistir.Gerçekte,temel prensip klasik (heap overflow exploitation) sömürülerden biridir.Eger parça pointer lari daha fazla kullanamiyorsak,bagli listedeki diger pointer lari kullanmaliyiz.Bu noktada çok sansliyiz çünkü ,bu yapilar islem kümelerinde çok geneldir ve kesinlikle adam akilli kontrol edilmez.Üstelik,kritik bölümler islem yok edilirken sik sik yikilir ve bu sayede üzerine veri yazilimi kolay gerçeklesir.

Kaynak: http://www.securityfocus.com

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©