Exploit

Sebelum bisa mengeksploitasi sesuatu, kita harus memahami apa yang akan kita eksploitasi, dan ini dilakukan dengan reverse engineering.

Soal dalam kategori exploit biasanya meminta kita mengirimkan perintah tertentu dan mungkin juga shellcode agar kita bisa mengeksekusi sesuatu di sistem remote.

Tapi perlu diingat juga bahwa tidak selamanya kita harus mengeksekusi sesuatu: bisa saja kita membypass pemeriksaan tertentu, atau mengirimkan kode dalam suatu bahasa lain (bukan biner).

Buffer Overflow

Ini kategori eksploit paling umum. Saya pernah membuat tulisan dasar mengenai buffer overflow

http://yohan.es/security/buffer-overflow/

Format String

Sudah ada beberapa artikel format string dasar. Anda bisa membaca salah satu tulisan saya:

http://tinyhack.com/2014/03/12/implementing-a-web-server-in-a-single-printf-call/

Checksec

Periksa dulu apakah ASLR, Stack Canary, dsb aktif dengan menggunakan skrip checksec. Ini menentukan eksploit seperti apa yang Anda tulis.

Fuzzer

Jika soal terlalu rumit, bisa dicoba gunakan fuzzer untuk mencari titik awal di mana bug mungkin ada.

ROP (return oriented programming)

Ada banyak tool untuk menemukan ROP gadget

Jenis soal binary exploit

Biasanya soal binary exploit berada dalam kategori berikut:

  • Menimpa sebuah nilai sehingga bisa bypass pemeriksaan
  • Menimpa return address agar mengeksekusi fungsi yang sudah ada di binary tersebut (misalnyada fungsi shell yang tidak pernah dipanggil)
  • Overwrite stack dengan return address dan exploit sehingga kita akan menjalankan exploit (jika stack bisa diexecute, check dengan checksec di atas)
  • Overwrite stack dengan nilai alamat untuk ROP (jika stack tidak bisa diexecute)
  • heap exploit

Penimpaan memori biasanya dilakukan dengan satu atau lebih cara ini:

  • Mengirimkan data yang besar (cek ukuran buffer, dan kirim data lebih dari itu)
  • Menggunakan format string (cek apakah ada printf, sprintf)
  • Melakukan operasi yang menimpa memori (contohnya biasanya adalah operasi linked list)
  • Melakukan operasi malloc/free dalam urutan tertentu untuk mengkorupsi heap

Contol Soal

Baby Echo

Soal format string

https://github.com/rentjongteam/write-ups-2015/tree/master/def-con-quals-2015/babyecho

Cybergrandsandbox

Custom shellcode

https://github.com/rentjongteam/write-ups-2015/tree/master/def-con-quals-2015/cybergrandsandbox

IDSecconf 2014 medium exploit

Python Sandbox. Exploit tidak selalu harus dalam assembly

http://blog.rentjong.net/2014/11/idsecconf-offline-2014-medium-exploit.html

IDSecconf 2014 Easy Exploit

Kadang exploit hanya cukup mengoverwrite nilai yang tepa

http://blog.rentjong.net/2014/11/idsecconf-offline-2014-easy-exploit.html

Copyright © 2009-2018 Yohanes Nugroho