brainpan

Brainpan 1 – Belajar Membuat Exploit (Seri 1)

Brainpan merupakan series dari Vulnerable VMs yang dibuat oleh superkojiman – tujuan dari VM ini mendapatkan access root dan membaca flag yang disediakan dalam direktori root. VM ini sangat bagus bagi yang ingin belajar buffer overflow dan forensik.

Kebutuhan

Untuk menjalankan percobaan ini, berikut hal-hal yang dibutuhkan:

  1. Pentes VM, Aitech menggunakan Windows XP SP3
  2. Kali Linux
  3. Brainpan VM yang diunduh dari vulnhub
  4. Immunity Debugger
  5. Mona.py

Tantangan

Menemukan Buffer Overflow pada Aplikasi brainpan.exe

Instalasi

Setelah mengunduh file “brainpan.zip”, hasil ekstrak file tersebut adalah sebuah berkas OVA yang bisa dibuka menggunakan VMWare ataupun VirtualBox. Settingan pada Networknya secara default adalah ‘bridge’, untuk alasan keamanan, Aitech menggantinya dengan NAT karena VM ini rentan jika dibuka ke dalam jaringan.

Enumerasi

Pertama, setelah Brainpan VM aktif, Aitech mencari IP Address yang digunakan oleh vm ini dengan perintah berikut:

Keterangan:
Brainpan VM Menggunakan IP address: 192.168.1.222
Windows XP untuk Pentester IP address: 192.168.1.200
Kali Linux IP address: 192.168.1.225

Scanning

Aitech menggunakan nmap untuk melihat port yang aktif pada Brainpan.

Seperti yang terlihat pada hasil scanning, ada 2 Port yang terbuka (port 9999 dan port 10000), mari kita coba lihat apa yang ada didalam port 10000

hmm.. ok, sepertinya hanya sebuah gambar yang ada linknya. mungkin ada petunjuk lain dengan port 10000, Aitech mencoba melihat versi yang digunakan oleh port ini yang mungkin bisa bermanfaat.

Wah, ternyata port 10000 menggunakan python, dari Server Status yang diberikan sepertinya si pembuat VM ini menjalankan perintah ‘python -m SimpleHTTPServer’ untuk mengaktifkan web server 🙂 sementara itu, mari kita lihat pada port 9999

Aitech mencoba menerka password dengan memasukkan kata ‘test’ dan mendapatkan notifikasi bahwa password yang diinput salah. karena clue yang didapat cuma 2, baiknya sekali lagi kita lakukan scanning terhadap port 10000 dari pada harus menerka atau pun melakukan password brute force pada port 9999 yang akan banyak menyita waktu pastinya.

Sekarang Aitech coba nyalakan Nikto untuk melihat vulnerabilities yang ada pada VM Brainpan:

dari hasil Nikto, pada bari 14 dan 15 – sepertinya Aitech menemukan satu petunjuk baru, didalam port 10000 ada 1 direktori ‘/bin’ yang bisa diakses oleh semua orang:

Ok, akhirnya kita diarahkan kepada satu tautan untuk mengunduh file brainpan.exe, sepertinya ini adalah file yang sama yang digunakan oleh VM ini pada port 9999, hmm… petualangan baru saja akan dimulai nih 🙂

Sekarang, Aitech mencoba mendownload file tersebut dan menyimpannya pada VM Kali Linux yang Aitech gunakan untuk menyerang VM Brainpan:

Untuk melihat tipe dari sebuah file :

Informasi tersebut menunjukkan bahwa file ini dibuat diatas platform Windows, sedangkan Brainpan ini adalah VM yang menggunakan Linux! sepertinya si pembuat menggunakan wine brainpan.exe untuk menjalankan file tersebut. mari kita selidiki apakah file ini memiliki informasi yang kira-kira bisa kita gunakan:

pada bagian akhir dari kode diatas terlihat kata (shitstorm) yang mungkin ini adalah petunjuk berikutnya dan terlihat sedikit mencurigakan. Selain kata tersebut, aplikasi ini menjalankan fungsi strcpy untuk menangkap inputan dari pengguna dan menyimpannya ke dalam buffer, Aitech mulai curiga dengan ‘copied %d bytes to buffer’ ini.
Untuk mencoba lebih lanjut, Aitech mengunduh file tersebut pada Windows XP VM dan menjalankan file brainpan.exe – Informasi Network Windows XP yang Aitech gunakan:

Attacking…

Hal yang paling pertama Aitech lakukan adalah mencoba memasukkan password dengan kata kunci yang didapat dari hasil ‘strings’ sebelumnya.

Sepertinya password shitstorm ini sengaja diperlihatkan untuk mengecoh, ok. mari sekarang fokus pada fungsi strcpy() ini. untuk pengetesan, Aitech membuat sebuah script dan mengirimkan 1000 bytes huruf ‘A’ ke server Windows XP yang menjalankan Brainpan.exe.

dan setelah itu menjalankan script diatas:

bp_windowsXP_crash

hasilnya seperti yang diharapkan! sepertinya aplikasi ini vulnerable terhadap buffer overflow pada fungsi ‘strcpy’ dengan C Programming. Untuk melihat detilnya, Aitech menjalankan aplikasi ini menggunakan Immunity Debugger dan menjalankan script fuzzy.py diatas. Sebelumnya, Aitech melakukan attaching file brainpan.exe pada menu Immunity Debugger dan menjalankan aplikasi brainpan.exe ini dengan menekan tombol ‘F9’ pada keyboard:

bp_windowsXP_attach

seperti yang sudah diprediksi sebelumnya, pada Kali Linux tidak ada output apapun, namun coba kita perhatikan pesan yang ditampilkan dalam halaman Immunity Debugger :

bp_EIP_1

Yiha! pada tulisan berwarna hijau dalam gambar kita bisa melihat bahwa kita telah sukses menulis Intruction Pointer (EIP) dengan huruf “A” atau (0x41). Untuk sekedar informasi, jika kita bisa melakukan overwritten EIP maka kita sudah pasti bisa mengontrol setiap eksekusi dari sebuah aplikasi (tentu saja shellcode yang kita gunakan sesuai dengan space yang disediakan :D).

Langkah berikutnya, Aitech akan mencoba melihat berapa byte yang bisa kita kirimkan kedalam buffer sebelum masuk ke EIP, dengan mengetahui jumlah byte ini – maka kita dapat memasukkan kode apapun kedalam Aplikasi. untuk langkah ini, Aitech menggunakan pattern_create dan patter_offset yang sudah disediakan oleh plugin Mona.py dalam Immunity Debugger, Bagi Anda yang menggunakan Kali Linux bisa menggunakan pattern_create dan pattern_offset pada direktori /usr/share/metasploit-framework/tools/

bp_pattern_create

dari eksekusi perintah tersebut akan terbentuk 1 buah berkas dengan nama pattern.txt dalam direktori Immunity (jika Anda tidak melakukan setting working environment sebelumnya), bukalah file tersebut dengan Notepad atau Editor favorit lainnya dan kopikan nilai 1000 pattern yang sudah dibuat dan replace kata “\x41” pada file fuzzy.py

Bagi yang tidak memiliki Mona.py, bisa menggunakan perintah ini dari Kali Box :

Berikut adalah file fuzzy.py setelah ditambahkan pattern tersebut:

Selanjutnya restart kembali Immunity Debugger, dan Attach file brainpan.exe sehingga port 9999 ada dalam daftar listener, jalankan kembali fuzzy.py yang sudah ditambahkan pattern dan berikut adalah hasilnya :

bp_EIP_pattern

pada tulisan EIP berwarna biru, sekarang EIP sudah di overwritten oleh tulisan ‘4Ar5’ atau 0x35724134. selanjutnya menjalankan pattern_offset dengan mona untuk mendapatkan jumlah bytes yang dibutuhkan sebelum kita mengontrol EIP

bp_pattern_offset

Setelah mendapatkan jumlah byte yang diperlukan untuk mengontrol EIP, Aitech melakukan percobaan sedikit modifikasi script python dan mencoba melakukan overwrite EIP dengan huruf ‘B’ atau ‘\x42’ :

Dan jalankan kembali script tersebut, namun jangan lupa restart lagi Immunity Debugger dan pastikan brainpan.exe sudah listen pada port 9999 pada windows XP :

br_EIP_B

Yes! seperti yang terlihat pada gambar diatas, Aitech sudah berhasil me-overwrite EIP dengan huruf B dan menambahkan huruf ‘C’ ke dalam ESP. Berikut ini stack yang ditampilkan oleh Immunity dan mengandung huruf ‘C’ atau ‘\x43’

bp_stack_overwritten

dan berikut adalah yang terlihat dari console brainpan.exe ketika script fuzzy.py ini dijalankan :

bp_console

Setelah mengetahui Jumlah Bytes dan mampu mengontrol EIP, maka sekarang Aitech mencoba mencari address dari jmp esp function yang kemudian akan digunakan untuk mengeksekusi exploit yang akan kita tempatkan nantinya. Dengan Immunity Debugger, Aitech menekan CTRL-F dan memasukkan kata jmp esp. seperti yang terlihat pada gambar dibawah ini, alamat jmp esp adalah 311712F3.

bp_jmpesp

atau dengan plugin mona.py, bisa menjalankan perintah berikut:

bp_mona_jmpesp

Terakhir, kita sudah tahu struktur yang mesti digunakan untuk mengontrol EIP dan meletakkan shellcode yang akan kita buat :

bp_structure_shellcode

Saatnya beraksi !! 😉 Sekarang Aitech akan membuat shellcode mengintruksikan Windows XP menjalankan shellcode melalui buffer overflow pada aplikasi brainpan.exe ini, pada Kali Box, Aitech menjalankan program berikut untuk men-generate shellcode :

Setelah itu, python script kita rubah sebagai berikut :

dari script diatas, struktur payload yang Aitech buat sebagai berikut :

| 524 bytes sampah | jmp esp address | nop sled (tambahan) | shellcode

Setelah mengeksekusi python script diatas, pada Windows XP terlihat aplikasi Calc.exe sudah berjalan 🙂

bp_calc

Pengetesan pada Server pentes sudah cukup sampai disini, dengan payload tersebut sekarang Aitech akan mencoba menyerang ke VM Brainpan, karena Brainpan ini menggunakan Linux, maka Aitech akan men-generate kembali menggunakan msfvenom untuk mendapatkan reverse-shell dari Linux Box:

dan dari Metasploit Console, Aitech mencoba membuat listen tcp pada port 4444

bp_meterpreter
Dan kembali menjalankan python script yang sudah ditambahkan shellcode terbaru:

Terlihat bahwa sekarang kita berhasil mendapatkan reverse-shell dari Box Brainpan ini, namun coba perhatikan hasil dari perintah berikut:

BAH! failed to get a shell!! demit !! walaupun Aitech sudah sukses mendapatkan meterpreter session, namun belum bisa menggunakan shell dari meterpreter. setelah melakukan beberapa cara, akhirnya Aitech mencoba menggunakan netcat reverse shell:

Kemudian menambahkan Shellcode terbaru pada brainpan.py

dan mengeksekusi kembali script tersebut:

Pada Kali Linux Terminal, di Tab yang berbeda, Aitech menjalankan perintah berikut untuk membuat netcat listener :

YES!! sukses ! sekarang Aitech berhasil masuk ke dalam server Brainpan namun masih dengan normal user:

mari kita lihat apa isi dari file checksrv.sh

Ok, Tulisan ini sebaiknya Aitech bagi menjadi dua bagian, terlalu panjang ternyata nulisnya… jari jadi pegalllll hehehehe – Terima kasih sudah membaca bagian pertama dari belajar buffer overflow ini.

Terima Kasih kepada g0tm1lk dan juga vulnhub yang sudah menghosting VMs yang sangat bermanfaat ini.

3 Comments

  1. Rahmat Nurfauzi -  May 16, 2015 - 11:23 am 11

    mantap tutorial buffer overflow-nya lumayan buat referensi OSCP 😀

    Reply
    • Mahfud -  May 16, 2015 - 11:44 am 12

      sip, good luck mas 🙂 ditunggu minggu ini rilis brainpan part 2 ya 🙂

      Reply

Leave A Comment

Your email address will not be published. Required fields are marked (required):

Back to Top