Saturday, March 31, 2012

SEH Dan safeSEH

->SEH 

   Structure Exception Handling atau lebih dikenal dengan sebutan SEH adalah sebuah bentuk penanganan yang dimiliki oleh sebuah software atau hardware dalam menagani sebuah exception, exception sendiri adalah event yang muncul saat pengeksekusian suatu aplikasi apabila suatu aplikasi tersebut mencoba untuk melakukan pengeksekusian kode yang berada di luar alur kode yang normal, sebagai contoh pada kasus buffer overflow.
   Ada dua macam bentuk exception yaitu hardware dan software, pada hardware dimunculkan oleh cpu exception ini biasanya muncul dikarenakan eksekusi intruksi yang menghasilkan sesuatu yang cacad atau eror, seperti devide by zero atau mencoba untuk mengakses sebuah alamat di memory yang invalid. Sedangkan pada software exception muncul biasanya dikarenakan saniti iput (input validation) pada aplikasi atau sistem operasi, seperti invalid parameter value sebuah input.

   Aplikasai yang menggunakan SEH dalam pembuatannya akan mengontrol peuh eror yang muncul dan melemparkannya dalam fungsi seh, maka ketika dilakukan exploitasi pada aplikasi tersebut eror yang terjadi akan di ambil alih oleh SEH dan aplikasi akan tertutup secara ormal serta akan memunculkan pesan yang sudah digenerate oleh SEH
   Sayang nya meskipun menggunakan SEH, sebuah aplikasi yang memiliki vulnerability masih memungkinkan untuk di exploitasi dengan metode khusus yang biasa dekenal dengan POP POP RETN.
Stack dalam memory sebenarnya adalah kumpulan file 32bit (4byte) yang disusun secara bertumpuk dengan pola LIFO (Last In First Out). dimana data yang terahir dimasukkan akan pertama kali di keluarkan dari tumpukan. Dengan metode POP POP RETN, aplikasi akan mengeluarkan 2 tumpukan teratas (dengan dua kali perintah pop) dan kemudian akan mengeksekusi tumpukan ketiga sabagai return address SEH, maka POP pertama akan memunculkan error yang akan dilemparkan ke fungsi SEH, kemudian fungsi SEH ini akan ditumpuk oleh POP kedua, sehingga aplikasi tidak akan mengeksekusi SEH, dan pada tumpukan ketiga aplikasi akan dipaksa untuk RETN atau mengeksekusi alamat return, dan apabila return address di arahkan ke dalam kode jahat, maka sistem akan terexploitasi dengan mudah. Untuk mengatasi hal ini muncullah metode ke dua yaitu safeSEH.

->safeSEH

   Metode SEH yang tadinya di anggap aman oleh banyak pengembang software ternyata masih dapat di kalahkan dengan suatu metode sederhana yaitu penggunaan perintah POP POP RETN pada memory. Untuk itu Microsoft membuat sebuah metode baru yang melindungi SEH dari penggunaan trik POP POP RETN, yang disebut dengan safeSEH.
   SafeSEH sendiri sebenarnya adalah suatu bentuk linker option yang digunakan programmer pada saat melakukan kompilasi. Cara kerjanya adalah sefeSEH akan membuat sebuah list di dalam modulnya, mana-mana saja alamat yang hanya akan digunakan oleh aplikasi untuk menagnani SEH, sehingga apabila terjadi exploitasi pada SEH menggunakan metode POP POP RET, safeSEH akan melakukan pengecekan apakah alamat RETN dari SEH sama dengan yang ada di dalam module safeSEH, jika berbeda maka safeSEH akan memaksa untuk mengembalikan alamat seperti semula. Namaun sayang sekali lagi ternyata metode ini pun dapat diakali dengan beberapa pendekatan salah satunya yaitu dengan cara menggunaan intruksi dari sebuah alamat memory yang diperkirakan di dalamnya terdapat perintah POP POP RETN yang mana library tersebut berada di luar aplikasi dimana alamat tersebut yang akan di gunakan untuk menimpa alamat SEH pada aplikasi ^_^

No comments:

Post a Comment