Buffer Overflow pada Aplikasi BlazeVideo HDTV PLAYER v6.6

 

    Kali ini kita akan membahas tentang buffer overflow, dimana buffer overflow itu sendiri adalah sebuah anomali ketika sebuah program, saat menulis data ke dalam penyangga hingga melampaui batas dan menimpa berdekatan lokasi memori (wikipedia). Jadi maksudnya disini adalah  jika kita memasukkan data kedalam input yang terlalu banyak  di dalam sebuah program sehingga program itu sendiri tidak dapat menampung data tersebut sehingga  program tersebut atau aplikasi tersebut menjadi error, Karena data yang terlalu banyak tadi menimpa perintah selanjutnya yang akan di eksekusi oleh program atau aplikasi tersebut, dengan error inilah seorang hacker atau attacker mengambil sebuah  keuntungan dengan memasukkan perintah jahat kedalam aplikasi tersebut.

Contoh disini saya menggunakan aplikasi Blaze video  dengan sistem operasi Windows XP SP3  32bit,  Karena untuk  tahap dasar buffer overflow kita menggunakan Windows yang tidak ada proteksi yang canggih hehehe.  Oke langsung saja ke langkah-langkahnya

1.  pastikan kalian sudah menginstal Windows XP SP3 32 bit,  ini saya install pada VirtualBox  dan sistem operasi utama saya adalah Kali Linux

2.  Kemudian menginstal Olly debugger,  ini digunakan untuk membaca aliran memori aplikasi

3.  Dan kemudian kita menginstal aplikasi target yaitu blazevideo versi 6.6

4.  Setelah semuanya sudah terinstal kemudian kita akan membuat payload

5.  Buka text editor pada Kali Linux dan buat payload seperti dibawah ini


6.  Lalu jalankan  aplikasi  Blaze video didalam oli debugger pada Windows XP 32 bit


7.  Kemudian jalankan file payload Python yang sudah dibuat tadi  di terminal, maka file kuhuk.plf sudah terbentuk.


8.   Jalankan file tersebut di video yang kita buka tadi di Windows XP





9.  Terlihat bahwa register EIP terisi dengan angka 414141 itu karena huruf "A" pada bahasa pemrograman ASCCI adalah 41

10.  Dan terlihat pada register ESP bahwa huruf yang kita masukkan sebanyak 500 karakter telah menimpa perintah-perintah lain sehingga register EIP membacanya dengan huruf A atau 414141, Dari 500 karakter huruf A Kita harus mencari di mana letak errornya pada karakter huruf A yang keberapa, jadi kita perlu mencarinya dengan membuat payload dengan msf Patern create

11. Buka msf pattern create di terminal


12. Kemudian kita ketikan msf-pattern_create -l 500 dan kita copy payload yang sudah dibuat oleh msf pattern create tersebut dan kita paste kan kedalam payload kita 




13. Setelah itu kita buka terminal dan kita jalankan file payload yang sudah kita modifikasi tadi yang di atas dan akan menjadi file baru yaitu kuhuk.pfl  kemudian jalankan file ini di blaze video yang di olly debugger tadi pastikan file yang error tadi yang di awal kita keluarkan dulu atau kita reset kembali sehingga tidak error setelah itu baru kita masukkan payload yang sudah kita modifikasi tadi lalu kita jalankan Dan hasilnya seperti gambar dibawah ini.

Setelah ini kita akan menggunakan  msr pacer offset di mana tools ini akan menunjukkan kita tempat dimana letak atau di huruf berapa aplikasi blaze video ini mulai error

14. Buka msf pattern offset di terminal dengan syntax msf-pattern_offset -h




15. Kemudian ketikkan perintah msf-pattern_offset -q 37694136 -l 500
16. ketikan lagi perintah msf-pattern_offset -q j3Aj -l 500


17. terlihat bahwa nilai register EIP yaitu 260 dan nilai register ESP yaitu 280 jadi kita sudah mengetahui Di mana letak error pada program atau aplikasi blazevideo tersebut kemudian kita buka file payload yang kita buat tadi dan kita lakukan modifikasi, Modifikasi seperti gambar di bawah ini Setelah itu jalankan seperti yang di atas


18. Setelah dijalankan terlihat bahwa register EIP telah teroverwrite membentuk sebuah kata yaitu DEADBEEF itu artinya kita sudah dapat menentukan perintah apa saja selanjutnya yang akan dijalankan oleh sistem.
 

19.  Hal berikutnya adalah mencoba untuk melakukan penulisan pada ESP,  di mana SP merupakan tempat penyimpanan data sementara di dalam memori (stack).  Apabila stack berhasil di overwrite maka akan memungkinkan untuk menempatkan payload ke dalam stack.  Untuk melakukan uji coba, sekali lagi akan dilakukan kostumisasi pada script  yang kita buat tadi.
 

 
20.  Setelah itu kita bisa menjalankan aplikasinya dari awal untuk mengeksekusi script baru ini
 

 
21.  Terlihat bahwa nilai pada register menjadi deadbeef dan stek berisi data sampah berupa karakter CC.

Dalam register memori register EIP tidak dapat melakukan akses langsung ke dalam memori satu-satunya memori yang dapat mengakses langsung ke dalam bufer di dalam memori adalah register ESP Oleh karena itu register ESP dapat mengakses langsung ke dalam bufer memori maka register ini sangat cocok digunakan oleh untuk menjadi sebuah batu loncatan untuk dapat mengakses Payload yang berada di dalam buffer memori.

22. Kemudian yang dibutuhkan adalah mencari letak perintah JMP ESP di dalam aplikasi blaze video ini, JMP ESP  adalah Perintah yang digunakan oleh aplikasi untuk membaca data yang berada di dalam bufer,  Sehingga nantinya nilai dari register EIP akan mengarah ke dalam alamat memori di mana di dalamnya tersimpan perintah JMP ESP.

        Untuk mencari JMP ESP di dalam memori aplikasi ikuti langkah berikut ini :

        1. Jalankan aplikasi menggunakan olly debugger pada menu view pilih sub menu executable modules

        2. Kemudian pilih SHELL32 atau USER32 dengan cara mengklik dua kali atau double klik

        3. Lalu kita bisa menekan tombol control + F,  kemudian ketikkan JMP ESP, lalu FIND

        4. setelah ketemu kita bisa langsung mengambil alamat memory JMP ESP yaitu pada bagian sebelah paling kiri.

23. setalah itu kita bisa rubah  alamat memory JMP ESP menjadi karakter little endian dan setelah itu kita bisa memasukkannya kedalam script untuk di modifikasi lagi.

24. lalu jalankan scriptnya. Aplikasi Blaze video mengarahkan system untuk melakukan pembacaan ke dalam buffer, berisi dengan karakter Heksa \xCC yang dalam perintah assembly digunakan sebagai perintah interupsi hal ini berarti konsep yang ada berjalan sesuai rencana


 25. Selanjutnya membuat sebuah payload di sini Saya ingin membuka command prompt kita buat dengan cara menggunakan msfVenom

26. Buka terminal ketikan  msfvenom -a x86 --platform windows -p windows/exec cmd=cmd.exe -e x86/alpha_mixed -f c maka akan keluar hasilnya dan kita copy kedalam script kita


27. Terakhir lakukan seperti cara yang diatas dimana kita membuat file diterminal dan menjalankannya di aplikasi blaze video, bedanya yang terkhir ini kita melakukannya tanpa Olly debugger langsung membuka aplikasinya di windows xp.


28. Terlihat diatas CMD otomatis muncul dengan sendirinya,

terimakasih sudah berkunjung, mohon maaf penjelasan terlalu berbelit sehingga sulit dimengerti maklum hehe, saya kurang suka menulis artikel :v saya lebih senang membuat videonya.


Komentar

Postingan populer dari blog ini

OAuth grant types

Server-side request forgery (SSRF)

INFORMATION GATHERING OWASP