Exploit development, bir yazılım hatasını sadece “çökertmek” değil, kontrol edilebilir hale getirmek sanatıdır. Bu alanın temelinde ise bellek yönetimi hataları yer alır.
Buffer Overflow Nedir? (Teknik Perspektif)
Bir buffer overflow, programın ayırdığı bellek alanından daha fazla veri yazılmasıyla oluşur. Asıl tehlike, bu taşmanın:
-
Stack frame yapısını bozması
-
Return address üzerine yazması
-
Program akışını saldırgan kontrolüne vermesi
ile başlar.
Modern işletim sistemleri bu tür saldırıları önlemek için:
-
ASLR (Address Space Layout Randomization)
-
DEP / NX (Non-Executable Memory)
-
Stack Canary
gibi mekanizmalar kullanır. Ancak exploit development tam olarak bu savunmaların etrafından dolanma sanatıdır.
ROP (Return Oriented Programming) Neden Ortaya Çıktı?
DEP ve NX sonrası klasik shellcode çalıştırmak zorlaştı. Bunun üzerine saldırganlar şu fikri geliştirdi:
“Yeni kod yazmak yerine, zaten var olan kod parçalarını kullanalım.”
ROP, programın belleğinde zaten bulunan küçük talimat dizilerini (gadgets) zincirleyerek çalışır.
Bu gadget’lar genellikle:
-
pop -
ret -
mov -
call
gibi masum görünen instruction’lardan oluşur.
Tek başlarına anlamsızdırlar, fakat doğru sırayla birleştirildiklerinde:
-
Fonksiyon çağırabilir
-
Register’ları kontrol edebilir
-
Sistem çağrılarını tetikleyebilirler
ROP Zinciri Mantığı (Kod Değil, Zihin Modeli)
Bir ROP zinciri aslında şunu yapar:
-
Stack kontrolü ele geçirilir
-
Return address’ler ardışık olarak yönlendirilir
-
Her
ret, yeni bir gadget’a atlar -
Sonuçta program, saldırganın istediği işlemleri yapar
Bu noktada exploit development:
-
Programlama değil
-
Reverse engineering değil
-
Bellek akışını okuma ve manipüle etme işidir
Modern Exploit Development’ta Zorluklar
Güncel sistemlerde exploit yazmak artık “copy-paste” değildir.
Karşılaşılan engeller:
-
PIE (Position Independent Executables)
-
Full RELRO
-
Shadow Stack
-
Control Flow Integrity (CFI)
Bu yüzden modern exploit geliştiriciler:
-
Bilgi sızıntılarını (info leak)
-
Partial overwrite tekniklerini
-
Heap tabanlı saldırıları
kullanmak zorundadır.
Savunma Tarafı İçin Kritik Ders
Buffer overflow ve ROP:
-
Eski değil
-
Azalmıyor
-
Daha sofistike hale geliyor
Savunma için:
-
Secure coding
-
Fuzzing
-
Compiler hardening
-
Runtime exploit detection
olmazsa olmazdır.
Bir exploit zinciri yazılabiliyorsa, sorun sadece saldırganda değil, tasarımdadır.
Sonuç
Exploit development:
-
Hacker romantizmi değil
-
Düşük seviye sistem bilgisi
-
Sabır
-
Analitik düşünme
gerektiren ileri seviye bir disiplindir.
Buffer overflow ve ROP’u anlamak, sadece saldırıyı değil savunmayı da seviye atlatır.
Yorumlar (0)
Yorum yapmak için giriş yapın.
Henüz yorum yapılmamış. İlk yorumu siz yapın!