Binary Exploit [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Requirement: ● Memahami konsep pemrograman ● Sedikit memahami bahasa assembly ● Mengerti bahasa C ● Mengenal linux dan beberapa commandnya



APA ITU BINARY EXPLOITATION Binary exploitation adalah sebuah proses memanfaatkan kelemahan dari suatu binary sebagai keuntungan untuk penyerang. Binary exploitation adalah sebuah proses menggunakan suatu fitur dengan cara yang tidak semestinya agar fitur tersebut tidak bekerja dengan semestinya. Binary exploitation bekerja dengan prinsip menggunakan bug atau kelemahan yang terdapat pada sebuah aplikasi, untuk menyebabkan kejadian yang tidak terantisipasi oleh developer atau pembuat aplikasi tersebut



LAYOUT MEMORY Untuk mempelajari Binary Exploit, maka kita harus mengenal dulu layout memory dari binary dalam hal ini dalam bentuk ELF (Executable and Linkable Format). Karena ketika menjalankan sebuah binary, binary tersebut akan di-​load​ ke dalam memory. Memory ini juga bisa dibagi ke 2 jenis, 32-bit dan 64-bit, yang layout memorynya berbeda, yang berarti proses eksploitasinya akan menjadi berbeda pula.



Berikut adalah layout memory setelah binary 32-bit di load ke memory.



Berdasarkan gambar diatas, layout memory binary 32-bit tanpa proteksi ASLR (Address Space Layout Randomization) terdiri dari segmen sebagai berikut: 1. Segmen ELF a. Segmen .text Berisi instruksi instruksi milik binary (ELF) dalam bahasa assembly. contoh: mov eax,2 b. Segmen .data Berisi variabel-variabel global pada binary yang diinisiasikan. c. Segmen .bss Berisi variabel-variabel global pada binary yang tidak diinisiasikan. 2. Heap Tempat penyimpanan data dinamis, yang biasanya digunakan ketika membuat sebuah objek baru, dan atau fungsi malloc() dipanggil. Dalam pembentukannya, heap dimulai dari address yang tinggi ke yang lebih rendah (ke bawah). 3. Stack Tempat penyimpanan variable lokal dalam suatu fungsi, termasuk urutan pemanggilan fungsinya. Dalam pembentukannya, stack dimulai dari address yang rendah ke yang lebih tinggi (ke atas). 4. Argv , Environment variable Tempat disimpannya Argv (Parameter yang diberikan ke binary), dan Environment Variable (variabel-variabel yang dimiliki oleh OS yang mengeksekusi binary) 5. Kernel Space Bagian memory yang dikhususkan untuk kernel, sehingga tidak bisa digunakan oleh binary Pada proses binary exploit, yang akan kita analisa biasanya adalah segmen Heap dan Stack. Tapi sudah pasti akan ada binary yang diproteksi oleh ASLR. Hal ini menyebabkan tingkat kesulitan dalam eksploitasi bertambah. ASLR(Address Space Layout Randomization) adalah salah satu jenis proteksi yang terdapat pada binary. Cara kerjanya adalah dengan memberikan offset yang nilainya random sebelum address awal heap dan stack. Sehingga address posisi data atau variable di heap dan stack itu menjadi tidak tetap, yang menyulitkan proses eksploitasi



Selain mengetahui layout memory, kita juga harus mengetahui layout pada stack. Misalkan pada sebuah binary, terdapat fungsi main yang memanggil sebuah fungsi yang urutan instruksinya adalah: fungsi(param 1, param 2 ,param n) alamat



instruksi



v



Push



w



Push



x



Push



y



Call



z



...



Sifat stack adalah mengisi dari rendah ke yang lebih tinggi, jadi parameter n akan dimasukkan di stack paling rendah, lalu parameter 2, lalu parameter 1. Sedangkan ketika ​call ​dijalankan, juga akan dilakukan push ke dalam stack, tapi yang di push ke dalam stack adalah alamat yang akan dieksekusi setelah proses call, dalam hal ini alamat z. Agar setelah fungsi selesai dieksekusi, program akan dilanjutkan ke alamat tersebut. Setelah masuk kedalam fungsi, binary akan membentuk stack frame baru, yaitu stack sementara yang akan digunakan hanya untuk fungsi itu sendiri. Caranya adalah dengan membuat dasar dari stack frame tersebut dengan melakukan ​push EBP ​(base pointer). Pada awalnya nilai ESP akan sama dengan EBP. Namun, ketika parameter parameter yang dibutuhkan fungsi yang sudah ada di stack akan di push ke dalam stack frame, Nilai ESP akan naik, sehingga EBP menjadi batas bawah stack frame. Dan ESP menjadi batas atas stack frame. sehingga layout stack pada binary 32-bit menjadi sebagai berikut.