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