Dalam proses uji penetrasi (penetration test), proses eksploitasi biasanya dilakukan sebagai bentuk simulasi atas kerentanan yang ditemukan.
Exploit development atau proses membangun eksploit sendiri merupakan sebuah proses membangun atau membuat sesuatu (bisa berupa konsep, skrip, atau program) yang dapat mengeksploitasi kerentanan. Eksploitasi biasanya dilakukan ketika sebuah kerentanan ditemukan.
Selama 10 tahun terakhir, Microsoft membuat banyak proteksi-proteksi terhadap penyalahgunaan memory, memory corruption, buffer overflow, proses eksekusi di memory, dll sehingga proses eksploitasi menjadi semakin sulit dan membuat sistem semakin aman. Semua bentuk proteksi seperti SafeSEH, Stack Canaries/Cookies, ASLR (Address Space Layout Randomization), DEP (Data Execution Prevention), CFG (Control Flow Guard), dan WDEG (Windows Defender Exploit Guard) cukup membuat para peneliti kerentanan bekerja lebih keras ketika berhadapan dengan kerentanan yang mereka temukan. Sampai saat ini semua jenis proteksi tersebut telah berhasil dilewati, beberapa teknik sudah terdokumentasi dengan baik namun tidak sedikit juga teknik-teknik yang hanya disimpan oleh peneliti kerentanan dengan alasan takut disalahgunakan oleh threat actor.
Melihat banyaknya sumber dari luar negeri yang berbahasa Inggris, seperti Corelan, FuzzySecurity, SecuritySift, dll saya melihat hanya segelintir hacker Indonesia yang merangkum dan menuliskan topik Buffer Overflow dalam Bahasa Indonesia seperti tulisan mas Harry Adinanta tentang Cara Membuat Exploit Untuk Buffer Overflow, tulisan mas Muhammad Sahputra (Cyb3rh3b) tentang Stack Based Buffer Overflow pada sistem Linux, dan juga tulisan-tulisan dari n0psledbyt3 tentang Stack Buffer Overflow juga pada sistem Linux .
Karena sedikitnya pembahasan dan tulisan tentang buffer overflow pada sistem Windows dalam Bahasa Indonesia, pada seri tulisan ini saya putuskan untuk merangkum dasar-dasar pengetahuan terkait buffer overflow dan membaginya dalam Bahasa Indonesia. Sebelumnya saya pernah menulis tentang dasar-dasar eksploitasi stack buffer overflow dan eksploitasi buffer overflow pada aplikasi berbasis SEH beberapa tahun lalu namun pada seri tulisan kali ini akan saya tuliskan kembali supaya semua tulisan tersebut berkumpul di satu tempat. Tulisan ini sebagai rangkuman dasar belajar eksploitasi di lingkungan Windows dan ditulis dalam bahasa Indonesia agar dapat menjangkau para peminat eksploit di Indonesia. Mudah-mudahan niat menuliskan semua pengalaman saya bisa terealisasi dengan baik.
Dengan tidak bermaksud sesumbar, saya akan menulis topik-topik berikut.
- Bagian 1: Perkenalan dengan buffer overflow di Windows (halaman ini)
- Bagian 2: Fuzzing
- Bagian 3: Stack-based overflow
- Bagian 4: Menyiasati Structured Exception Handler (SEH)
- Bagian 5: Memindahkan eksploit ke Metasploit
- Bagian 6: Membangun eksploit dengan kondisi Unicode
- Bagian 7: Membuat shellcode sendiri (win32)
- Bagian 8: win32 Egghunter
- Bagian 9: Bypass ASLR/DEP/SafeSEH/Stack Canaries
- Bagian 10: Bypass DEP dengan Return Oriented Programming (ROP)
- Bagian 11: Heap Spraying
- Bagian 12: Eksploitasi Windows kernel (32-bit)
Untuk dapat mengikuti tulisan-tulisan di atas, saya memiliki beberapa daftar kebutuhan berikut
- Komputer/laptop dengan spesifikasi
- CPU Intel/AMD 64 bit 2 Ghz, lebih besar lebih baik
- RAM 8 GB, lebih besar lebih baik
- Muatan penyimpanan 80 GB, lebih besar lebih baik
- Program VMware Workstation, semua lab akan menggunakan VMware Workstation.
- Kali Linux versi VMware, yang terbaru lebih baik untuk mengurangi masalah kompatibilitas
- Windows 10 Developer Edition
- Debugging tools for Windows
- OllyDbg 1.10
Beberapa program akan dipasang pada saat pembahasan per tulisan, termasuk ada beberapa plugin dan program-program yang memang memiliki sejarah kerentanan dan eksploitnya.
Pada akhirnya semoga tulisan-tulisan ini bisa menjadi dasar pembelajaran bagi para pembaca yang hendak menekuni bidang eksploitasi program di sistem Windows.
[…] Pada tulisan sebelumnya, kita sudah melakukan fuzzing terhadap program ini. Sebagai pengingat, berikut ini hasil fuzzing yang terlihat dari debugger. […]