Buffer Owerflow ve Exploit Shell Code Geliştirme Serileri #KaliLinuxKulübü

LoCts

Üye
16 Haz 2014
198
3
KKTC
Selamun Aleyküm THT Ailesi

Giriş

Bu Serimizde Buffer Overflow ve ya Türkçesi Bellek Taşması zafiyetlerini ve Exploit Shellcode Geliştirmeye çalışacağız.
Örnek uygulamalar üzerinde inceleyerek exploit kodlamayı en iyi şekilde anlamanıza vesile olacağım


t8w6hax.gif



NOT: Seri part'lar halinde ve Videolar ile akıcı anlaşılır anlatımla olacak.

BUFFER OWERFLOW

swuuqvw.png


Bu yazı muhtemelen seri şeklinde olacaktır. İlk olarak local bir buffer overflow uygulaması ile temelleri yazmaya başlayacağız, sonrakilerde remote overflow içinde anlatımlar olacaktır. Umarım...

ee87jtc.gif


Bellek Taşması Nedir?

Bellek taşması, sınırlı boyuttaki bellek alanına, planlanan miktarın üzerinde veri kopyalanınca yaşanan taşma durumudur. En klasik örneği vermek gerekirse:


char a[4];
strcpy(a, 'cok uzun bir metin');


Örnek C kodunu açıklamak gerekirse:

A isimli 4 baytlık bir karakter dizisi tanımlandı.
Fonksiyon yardımıyla bu karakter dizisine 18 karakterlik bir metin kopyalandı.
Ayrılan alan 4 baytlıktı, 18 karakter kopyalamaya çalıştığımızda ayırdığımız bellek taşacak ve geri kalan 14 karakter belleğin kenarındaki diğer bellek alanlarına yazılacak.

Eğer belleği taşırıp diğer hafıza alanlarına yazılacak baytlar saldırgan tarafından kontrol edilebiliyorsa, programın akışını kontrol edebilmek ya da değiştirmek mümkün olur.

Temel olarak buffer overflow için şunu söyleyebiliriz:


Uygulamanın çalışma sırasında kullanıcıdan aldığı bir girdiye ayrılan sınırın üstünde data girişi yapmaktır.

Birçok overflow yazısında int buff[125] gibi bir girdi alanı açılıp strcpy, memcpy vs ile C dilinin kontrolsüz fonksiyonlarını kullanarak uygulamaya 125'ten fazla bir input yollayarak programı patlatmayı anlatır.

Anlatılanda doğrudur, mantık aynen bu şekilde işler, haddinden fazla input'u göndermek ve eğer kontrol yoksa uygulamayı patlatmak.

Uygulamaya fazla input yolladığımızda stack'in yapısından dolayı stack'e atılan parametreler ve geri dönüş değerler ezilir/kaybolur bundan dolayı uygulama crash olur ve sonlanır.

İyi bir exploit, geri dönüş değerini istediğimiz bir alana referans ettirmek ve o alana shellcode'umuzu doldurmak ile olur. Sonrası işlemcide, sağolsun kendisi bizim için işlemleri yapacaktır.


ee87jtc.gif


Nasıl yapılacağını anlatmadan önce bir takım önbilgilerden bahsetmem gerekiyor.


Register'lar

IA-32 mimarisindeki genel kullanımlı register'lara hızlı bir bakış atacağız.
Bütün register'ların ilk harfi olan E extended, 16 bitlik mimariden extend edilerek, 32 bit olduğu manasına gelmektedir.

ee87jtc.gif


EAX: Akümülatör. Aritmetik işlemlerde bolca kullanılır. Ek olarak fonksiyonların geri dönüş değerleri de bu registerda saklanır.


ECX: Sayaç (counter). Döngülerde sayaç değişkeni olarak kullanılır. Ayrıca Object Oriented dillerinde geliştirilmiş yazılımlarda this pointerinin değerini tutar.


ESP: Stack pointer. Daha sonra açıklayacağımız stack veri yapısının son giren (ya da diğer bir deyiş ile ilk çıkacak) elemanını gösterir.


EBP: Base pointer. Stack veri yapısının tabanını (ilk giren, son çıkacak elemanı) gösterir.


ESI/EDI: Source Index / Destination Index


EIP: Instruction pointer. CPU'nun an itibariyle code segment'i içerisindeki hangi instruction'i çalıştıracağını gösterir.



Exploit Geliştirme Araçları

lcouuem.jpg

Debug ve Disassemble Yöntemleri
Debugger Yazılımları (windbg , ImmunityDebugger, Gnu Debuger)
Disassembler Yazılımı (IDA Disassembler)


Buffer Overflow'un Temelleri

mx1fxhw.jpg

Hatalı Kod Örnekleri
Açık Avlama Yöntemleri
Fuzzing
Crash ve Binary Analizi


Shellcoding
6np8t3n.jpg


Shellcode temelleri
Shellcode geliştirme süreci
Shellcode çeşitleri


Windows Exploiting
gdx5cu4.png

Stack Overflow Exploiting
Unicode Overflow Exploiting
SEH Overflow Exploiting
Bypassing SafeSEH
Egg hunter Shellcodes ve exploiting



Linux Exploiting
Stack Overflow ve Exploiting.
jsggnpt.png


Not: Evet bu yazımızda temel bilgileri aşılamış olduk. Umarım seri sayesinde herkes bir exploit geliştiricisi olur inşallah, serilerde görüşmek üzere Hoşça kalın

SELAMETLE
 
Moderatör tarafında düzenlendi:

R3DBULL

Katılımcı Üye
6 Nis 2016
612
0
Ellerine sağlık, böyle konular görmek güzel, umarım devamı gelir. :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.