Exploit Geliştirme Eğitimi - 1

Amaç

Bellek taşma açıklıkları hedeflenen prosesin hafıza alanında herhangi bir kod çalıştırmaya imkan tanıdığından en çok ilgi çeken yazılım açıklığı türü olmuştur.

Eğitim X86 mimarisinde bellek taşma açıklıklarının nasıl ortaya çıkabildiklerini ve bu açıklıkların nasıl kötüye kullanılabildiğini katılımcılara aktarmayı hedeflemektedir. Böylece katılımcılar açıklık araştırmacısı olma yolunda ilerleyebilecekler, sızma testi yapan katılımcılar kendi exploit kodlarını geliştirme yolunda adım atabilecekler ve mevcut exploit kodlarını özelleştirebilecekler, sistem yöneticileri yayınlanan açıklıkların nitelik ve etkilerini daha iyi anlayabileceklerdir.

Eğitim olabilecek tüm bellek taşma açıklık türlerini ve bunların sonuçlarını içermemekte, öncelikle bellek taşma açıklıkları ile ilgili temel bilgilere hakim olunmasını hedeflemektedir. Bununla birlikte en popüler bellek taşması istismar türleri eğitim sırasında ele alınmaktadır.

Eğitim sırasında önde gelen tüm statik ve dinamik analiz araçları kullanılacak, böylece katılımcıların bu araçların kaabiliyetlerine hakim olması sağlanacaktır.

Ön Koşullar

Eğitim mümkün olduğunca giriş seviyesinde olmakla birlikte içerdiği konular katılımcılar yazılım sektöründe çalışıyor olsa bile katılımcıların gündelik hayatlarında sık karşılaşmadığı konulardan oluşmaktadır. Bu yüzden X86 mimarisi, PE dosya formatı, Assembly dili gibi konularda kavramsal da olsa temel bir bilgiye sahip olma ihtiyacı bulunmaktadır.

Katılımcılar

Sızma testi uzmanları, bilgi güvenliği ve bilgi teknolojileri denetçileri, teknik bilgi güvenliği yöneticileri, bilgi güvenliği olay müdahale ekipleri personeli, Assembly, C, C++ ve diğer makine dilinen derlenen kaynak kod dillerinde geliştirme faaliyetlerinden bulunan yazılım personeli eğitimden fayda sağlayabilirler.

İçerik
  • Bellek taşma açıklıklarına giriş
    • Bellek taşma açıklığının kullanım durumunda ortaya çıkışının gösterimi
    • Bellek taşma açıklığının kaynak kod üzerinde açıklanması
  • Stack organizasyonu
    • Stack organizasyonunun ve işleyinin açıklanması
    • Temel X86 register’larının açıklanması
    • Kaynak kod – makine kodu dönüşümüne giriş
    • Temel assembly instruction’larının açıklanması
  • Windows ve Visual Studio yazılım güvenlik önlemleri
    • Stack security check
    • Address space layout randomization (ASLR)
    • Data execution prevention (DEP)
  • Makine kodunun anlaşılması
    • Kaynak kod, assembly kodu ve opcode kavramlarının anlaşılması
    • Disassembler araçlarının tanınması
  • Derleme, linkleme ve yükleme teorisi
    • Derleme ve linkleme süreçlerinin anlaşılması
    • Uygulama imajının hafıza yüklenme sürecinin anlaşılması
    • İşletim sisteminin uyguladığı fiziksel ve mantıksal hafıza yönetiminin anlaşılması
  • PE dosya formatı ve PE dosyasının hafızaya yüklenmesi
    • PE dosya formatının anlaşılması
    • Process hafıza organizasyonunun ve PE dosya yapısının hafızadaki görünümünün anlaşılması
  • Bellek taşma açıklığının analizi
    • Bellek taşma açıklığının assembly seviyesinde ve bellek yapısındaki değişikliklerin analizi
    • Windbg kullanımına giriş
  • Uygulama akışını yönlendirme
    • EIP register’ını manipüle ederek uygulama akışını istediğimiz şekilde yönlendirebilme
    • Fonksiyon başlangıç adresinin bulunabilmesi (semboller aracılığıyla)
  • Kendi kodumuzu çalıştırma
    • Kendi kodumuzu oluşturma
    • Kendi kodumuzun hafızaya yazıldığı adresin tespit edilmesi
    • EIP’yi kendi kodumuza yönlendirerek istediğimiz işlemi gerçekleştirebilme
  • Fonksiyon pointer istismarları
    • Fonksiyon pointer'larının kaynak kod seviyesinde kullanımı
    • Fonksiyon pointer'larının assembly seviyesinde uygulanması ve ezilmeleri halinde uygulama akışına müdahale imkanının doğması
    • C++ dili ile nesne odaklı programlamada virtual fonksiyonların (polymorphism'in) assembly seviyesinde uygulanmasının statik analizi
    • Virtual fonksiyonların uygulanmasının dinamik analizi
    • vTable veri yapısını pivot olarak kullanarak uygulama akışına müdahale etmek ve exploit shellcode çalıştırma
Süre / Yer

Süre: 3 gün

Yer: İstanbul