TeknoTR  

Geri Dön   TeknoTR > Bilgisayar > İşletim Sistemleri
Üye Ol SSS Sxe indir Sosyal Gruplar Takvim Resim Galerisi Etiketler Bütün Forumları okunmuş kabul et


Windows Kümeleme Korumasını Aşma

İşletim Sistemleri bölümünde Windows Kümeleme Korumasını Aşma konusu , Windows heap overflows açığı geçtiğimiz bir kaç yılda çok popülerleşti. Dökümanlara göre bu iç yapı ve Windows kümeleme mekanizmasını tutan, "Third Generation Exploitation" (3. nesil sörümürü) yada "Windows Heap Overflows" olarak tanıtıldı. Ayrıca kümeleme-tabanlı tampon bellek taşımasını (buffer overflow) tetikleyen ...

Cevapla
 
LinkBack Konu Seçenekleri
Eski 07-11-2006, 17:38   #1 (permalink)
Banlandı
 
Giriş: 13-06-2006
Yaş: 21
Mesajlar: 1.850
Rep Puanı: 250
Nemesis Rütbe Artı +1Nemesis Rütbe Artı +1Nemesis Rütbe Artı +1
Rep Gücü: 0
E-Güven: (0/0)

Cool Windows Kümeleme Korumasını Aşma


Windows heap overflows açığı geçtiğimiz bir kaç yılda çok popülerleşti.

Dökümanlara göre bu iç yapı ve Windows kümeleme mekanizmasını tutan, "Third Generation Exploitation" (3. nesil sörümürü) yada "Windows Heap Overflows" olarak tanıtıldı.

Ayrıca kümeleme-tabanlı tampon bellek taşımasını (buffer overflow) tetikleyen (sömüren) bir yol olarak sunuldu.

Dökümanlarda sunulan teknikler bu açıklara olan güveni arttırdı."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 rağmen, Windows 2003 ve sonraki sürümler,Windows XP SP2 gibi sistemlerin sunulmasıyla,hacker ların kümeleme sömürüsü (heap explotation) yapmasını engelleyen yeni bir güvenlik anlayışı ve seviyesi getirdi.

Dökümanlara göz attığımızda, neden klasik kümeleme sömürüleri ilkelerinin yeni Windows sürümlerinde çalışmadığını hatırlayacağız.

Ardından sizlere bu koruma seviyesini aşmak için yeni bir yöntem sunucağız.To trigger a memory overwrite (hafıza üzerine yazmayı tetikleme).
Another Way to Bypass Heap Protections (kümeleme korumasını aşmak için farklı bir yol)

Bu yöntemdeki amaç,varsayılan kümele işleminde saklanan özel yapıları izleyerek hafızanın son 4 byte tına veri yazmaktır.

Varsayılan kümeleme işlemi,bununla birlikte sistemin oluşturduğu diğer kümelemeler, bir çok uygulamanın (Windows APIs) bilgi saklaması ve çevresine sunması için kullanılmaktadır.Dinamik (değişken) bağlantılı bir DLL (uyuglama uzantısı) sistemde yüklendiğinde , bu DLL nin ana fonksiyonu (DLLMain yada benzeri...) çağrılır ve sıkla veriler bu işlem kümesinde depolanan veri alınabilir.Peki bu sırada hafızanın üzerine yazılan veri miktarı nedir?

Gerçek şu ki en basit uygulamalar bile örneğin Windows Notdefteri, bir çok kütüphanelere (DLL) ihtiyaç duyması özellikle çok ilginçtir.Eğer biz varsayılan kümeleri denetlersek, ana işlem parçasının uygulanmaya (thread) başlamadan önce,farkedicez ki güzel bir miktarda küme hafızamızda unitelenmiş.40 byte (ki 8 byte tı başlık için ayrılmış) lık bu hafıza ünitemize kısa bir bakış attığımızda aşağıdatarif edilen yapıya sahip olduğunu görebiliriz.

A sonraki 40 byte lık yapının adresini işaret etmektedir.
B önceki 40 byte lık yapının adresini işaret etmektedir.
NOT: Eğer işlemi bir çeşit hata ayıklayıcısı (debugger) ile gerçekleştirirseniz,bu yapılar 56 byte uzunluğuna gelicektir.Sistem doğal olarak kümenin sonuna 16 byte ekleyerek uygulamanın bir çeşit hata ayıklayıcısı ile çalıştırıldığını belirler.
İlk fark edilebilir olay A ve B nin ön ve arka pointer larda rol almasıdır.Ayrıca bu yapıda X olarak tanımlanan kritik bir bölüm oluşturulur.Bu kritik bölüm başladığında 40-byte lık bir yapıyıla birleşir -- Biz buna bağlanmış yapı diyeceğiz -- ve kritik bölümde bazı parçaları tutmak üzere oluşturulur.bu yapıların bir kısmı ntdll.dll adlı veri bölümünde yer almaktadır.Bu yapıların hepsi kullanıldığında , bağlanmış yapılar varsayılan (default) küme içerisinde oluşturulur.Lütfen aşağıdaki şekli inceliyelim.

Bu çift bağlantılı liste bize küme yönetim rütünleri tarafından tutulan serbest parça yollarını hatırlatmaktadır.Bir kritik bölümün yıkımı boyunca,birleştirilmiş bağ yapıları onların listesinden silinecektir.eğer A ve B yi kaldırırsak , hafızaya 4-byte uzunluğunda bir parça üzerine yazabileceğiz.Biz bu bağlanmamış işlemlerin içindeki (saldıracağımız) kodu rahatlıkla bulablieceğiz.

Aşağıdaki assembly satırları RtlDeleteCriticalSection (ntdll.dll sürüm 5.1.2600.2180) tarafından uygulandı:
mov [eax], ecx ; eax=B
mov [ecx+4], eax ; ecx=A
Bu satırlar muhtemelen daha önce bahsettiğimiz bir çok şeyi size hatırlatmıştır.Gerçekte,temel prensip klasik (heap overflow exploitation) sömürülerden biridir.Eğer parça pointer ları daha fazla kullanamıyorsak,bağlı listedeki diğer pointer ları kullanmalıyız.Bu noktada çok şanslıyız çünkü ,bu yapılar işlem kümelerinde çok geneldir ve kesinlikle adam akıllı kontrol edilmez.Üstelik,kritik bölümler işlem yok edilirken sık sık yıkılır ve bu sayede üzerine veri yazılımı kolay gerçekleşir.
Nemesis isimli üyemiz çevrimdışıdır. (Offline)  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla
Cevapla

Konu Seçenekleri

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Gitmek istediğiniz klasörü seçiniz


Şu an saat 15:45 .
Tarih 09-05-2008


Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
Türkçe Çeviri : ach

eXTReMe Tracker


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192