From DOS to Remote Command Execution: ScriptFTP Unicode Stack Overflow (0day) A Whitepaper by Spentera Security

dokumen-dokumen yang mirip
DAFTAR ISI BAB II TINJAUAN PUSTAKA... 11

BAB I PENDAHULUAN. celah pada sebuah aplikasi atau pada sistem operasi windows itu. Local exploit dalah sebuah exploitasi yang hanya terjadi di

Xcode Private Training. Network hacking & Security

Xcode Private Training. Advanced Network hacking & Security

Xcode Private Training. Network Hacking & Wireless. Hacking

BAB I PENDAHULUAN 1.1 Latar Belakang

Xcode Intensif Training. Ethical Hacking

BAB I PENDAHULUAN. Perkembangan teknologi informasi pada saat ini. yang sedemikian pesatnya terutama dalam dunia

Ethical Hacking Advance. + BadUSB

Xcode Intensif Training. Ethical Web hacking & Security ~ Advanced

Xcode Intensif Training. Ethical Hacking & Security. Advanced

Struktur Sistem Operasi

Xcode Intensif Training Ethical. Hacking & Security (Advanced) 23/05/2016

Xcode Intensif Training. Advanced ethical web. hacking & security

Xcode Intensif Training. Ethical Hacking Advanced 20/08/2016

BAB 2 STRUKTUR SISTEM OPERASI. Komponen Sistem Operasi

GAMBARAN UMUM SISTEM KOMPUTER

Xcode Intensif Training. Ethical Hacking Advanced

Sistem Operasi. Struktur Sistem Komputer. Adhitya Nugraha. Fasilkom 10/6/2014

Telnet dan SSH. Aloysius S Wicaksono, Glagah Seto S Katon, Jurusan Teknik Elektro FT UGM, Yogyakarta

INSTALASI PC SERVER INSTALASI & KONFIGURASI SSH. Ardi Maharta / Heri Widayat /

BAB IV IMPLEMENTASI SISTEM. analisis dan perancangan dijadikan acuan dalam pembuatan kode program. Pada

Tahun Akademik 2014/2015 Semester II. DIG1I3 - Instalasi dan Penggunaan Sistem Operasi

Xcode Intensif Training. Advanced Ethical Hacking

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

SISTEM KOMPUTER PEMROSES (CPU) Empat komponen Sistem Komputer : Pemroses Memori Utama Perangkat Masukan dan Keluaran Interkoneksi Antar Komponen

Modul ke: APLIKASI KOMPUTER. Pengoperasian Dasar Windows. Fakultas FASILKOM. Ramayanti, S.Kom, MT. Program Studi Teknik Informatika

Sistem Operasi. Divais Input/Output 2016

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1

3. ALU. Tugas utama adalah melakukan semua perhitungan aritmatika dan melakukan keputusan dari suatu operasi logika.

Secara umum, eksploit dapat dibagi atas dua jenis, yaitu eksploit lokal (local exploit), dan eksploit remote (remote exploit).

1 Tinjau Ulang Sistem Komputer

LAPORAN RESMI PRAKTIKUM KEAMANAN DATA Praktikum Port Scanning dan Network Probbing

Hanif Fakhrurroja, MT

Ujian Tengah Semester Kemanan Jaringan Komputer

Operating System. File System. Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan. Dosen : Caca E. Supriana, S.Si

Bab II. TINJAUAN PUSTAKA

Hal-hal yang perlu dilakukan CPU adalah : 1. Fetch Instruction = mengambil instruksi 2. Interpret Instruction = Menterjemahkan instruksi 3.

Methods of Manual Penetration Testing (Actual Exploit)

BAB IV HASIL DAN PEMBAHASAN

Struktur Sistem Operasi

BAB IV HASIL DAN PEMBAHASAN

Pertemuan 9 : CPU (CENTRAL PROCESSING UNIT)

Andi Dwi Riyanto, M.Kom

BAB 1 PENDAHULUAN 1-1

Struktur Sistem Komputer

Organisasi SistemKomputer, Pelayanan Sistem Operasi. Ptputraastawa.wordpress.com

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

Keamanan Web Server. Pertemuan XI WEB HACKING

Rangkuman Materi Presentasi AOK. Input/Output Terprogram, Intterupt Driven dan DMA. (Direct Memory Access)

Input : Memasukkan data dari luar kedalam mikroprosesor Contoh: Keyboard, mouse

Oleh: 1. Singgih Gunawan Setyadi ( ) 2. Handung Kusjayanto ( ) 3. Wahyu Isnawan ( )

STRUKTUR FUNGSI CPU. Menjelaskan tentang komponen utama CPU. Membahas struktur dan fungsi internal prosesor, organisasi ALU, control unit dan register

Pertemuan 2 Organisasi Komputer II. Struktur & Fungsi CPU (I)

Struktur Sistem Komputer

STRUKTUR CPU. Arsitektur Komputer

OPERATION SYSTEM. Jenis - Jenis Register Berdasarkan Mikroprosesor 8086/8088

MODUL 2 KOMPONEN, LAYANAN SISTEM OPERASI M. R A J A B F A C H R I Z A L - S I S T E M O P E R A S I - C H A P T E R 2

TUGAS BESAR MATA KULIAH JARINGAN DAN KEAMANAN KOMPUTER. Hacking untuk pemula (menyembunyikan IP menggunakan anonymous proxy server)

Organisasi Komputer II STMIK AUB SURAKARTA

Keamanan Dalam Online Game

BAB IV IMPLEMENTASI DAN EVALUASI

Organisasi Komputer. Candra Ahmadi, MT

Modul ke: Sistem Operasi. Komponen Sistem Operasi dan Fungsi-Fungsinya. Fakultas FASILKOM. Juliansyahwiran, S. Kom, MTI.

TI2043 Organisasi dan Arsitektur Komputer Tugas 2 Interrupt Driven I/O

1. BAB 1 PENDAHULUAN. 1.1 Latar Belakang

SINYAL INTERUPSI. 1. Latar Belakang

BAB II LANDASAN TEORI

Sistem Operasi AGUS PAMUJI. Teknik Informatika

Tipe Sistem Operasi. Stand alone Network Embedded

PERTEMUAN. 1. Organisasi Processor. 2. Organisasi Register

SISTEM OPERASI. Review

Pengantar Teknologi Informasi A. Pertemuan 7. Prossesor & Memori

Operating System. I/O System. Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan. Dosen : Caca E. Supriana, S.Si

Pertemuan Ke-7 INSTRUCTION SET

4. SISTEM OPERASI TERDISTRIBUSI

TELNET & ROUTING INTERNET

Xcode Intensif Training. Ethical Hacking & Security. Advanced

Input : Memasukkan data dari luar kedalam mikroprosesor Contoh: Keyboard, mouse

Arsitektur SAP-2 W BUS ACKNOWLEDGE HEXADECIMAL KEYBOARD ENCODER ACCUMULATOR INPUT PORT 1 ALU FLAGS READY INPUT PORT 2 SERIAL IN PROGRAM COUNTER TMP

Eksploitasi Keamanan

Sistem Operasi PENGATURAN PROSES

Struktur Fungsi CPU. Mata Kuliah Arsitektur Komputer Program Studi Sistem Informasi 2013/2014 STMIK Dumai -- Materi 03 --

Organisasi & Arsitektur Komputer

: DWI KURNIA PUTRA NIM : : KEAMANAN JARINGAN KOMPUTER EKSPLOITASI KEAMANAN

BAB III METODE PENELITIAN. Router Berbasis Web, Penulis menerapkan konsep pengembangan Software

Gambar 1.1. Diagram blok mikrokontroller 8051

Perangkat Keras Masukan/Keluaran. Kelompok : Intan Sari H. H. Z Verra Mukty

VIRTUAL MEMORY. Gambar 1. Struktur Umum Overlay

PERCOBAAN 5 STACK DAN SUBROUTINE. Oleh : Sumarna, Jurdik Fisika, FMIPA, UNY

KONFIGURASI PIN-PIN MIKROPROSESOR Z 80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

Arsitektur Set Instruksi. Abdul Syukur

BAB 3 PERANCANGAN SISTEM

1. Mana di bawah ini yang bukan termasuk dalam kelompok pengendalian umum:

tipe VPN yang dipakai adalah Remote Access VPN.

Aditya Wikan Mahastama

MODUL 1 PRAKTIKUM ADMINISTRASI JARINGAN. Pengenalan dan Instalasi Sistem Operasi Jaringan

1) Perumusan kebijakan teknis bidang manajemen kepegawaian. 2) Pembinaan, pelaksanaan, pengelolaan perencanaan.

2 Konsep Dasar Sistem Operasi

Bab IV IMPLEMENTASI DAN PENGUJIAN

Transkripsi:

A Whitepaper by Spentera Security http://www.spentera.com

Ringkasan Eksekutif Stack atau Buffer Overflow adalah sebuah anomali di mana sebuah program, ketika menulis data ke dalam buffer, melewati batas buffer dan menimpa memori yang berdekatan dengan program memory. Untuk membuat kondisi Buffer Overflow menguntungkan, biasanya dengan mengisi register EIP (Instruction Pointer) dengan sebuah Return Address dan memulainya dari sana. ScriptFTP adalah program FTP client yang menggunakan batch script untuk memproses permintaan terhadap FTP server. Program ScriptFTP menggunakan Unicode (UTF-16) sebagai encoding data pada program. Paper ini akan memaparkan kelemahan buffer overflow pada ScriptFTP yang berbasis Unicode dan SEH. Disclaimer: Exploit ini belum dipublikasikan dan masih berstatus Coordinated Disclosure dengan pihak ScriptFTP. Tentunya tulisan ini juga berstatus privat milik Spentera Security dan ScriptFTP. 2

Latar Belakang Bagaimana sebuah program ScriptFTP diketahui memiliki bug/kutu? Tentu saja hal ini tidak bisa diketahui dengan hanya menebak, tapi dengan melakukan riset (fuzzing framework) maka akan didapatkan hasil yang signifikan. Program ScriptFTP diketahui kemudian mengalami kegagalan dalam mengatasi perintah LIST yang anomali. Kemudian hasil tersebut bisa dikembangkan untuk menjadi studi kasus. Secara umum, program FTP client akan melakukan koneksi ke FTP server, proses awalnya selalu sama, koneksi ke port 21, mengirimkan username dan password, melihat opsi/perintah yang bisa dijalankan di FTP server, lalu menunggu perintah selanjutnya. Percobaan dapat dilakukan dengan mengirimkan paket yang anomali atau sesuatu yang tidak wajar. Misalkan kita mau login, tentu saja username dan password akan kita isi dengan karakter-karakter a-z, A-Z, atau 0-9, dan memiliki panjang yang sesuai (karena kita memang mau login secara sah ke FTP server). Namun bagaimana jika kita mengirimkan karakter yang panjang dan anomali, misalkan mengirimkan username dengan 5000 karakter A dan password dengan 10000 karakter '{', apakah FTP client akan merespon dengan normal? Atau malah terjadi hal yang lain, crash misalnya? Tehnik inilah yang dinamakan fuzzing. ScriptFTP mengalami kegagalan dalam mengatasi perintah LIST yang anomali, hal ini dibuktikan dengan tertimpanya nilai pada alamat SE Handler dan Pointer to Next SEH. Dengan tertimpanya alamat SE Handler, berarti membuktikan bahwa aplikasi ScriptFTP mengalami Stack atau Buffer Overflow. Pada tipe buffer overflow seperti ini, alamat EIP akan dapat dikuasai setelah kondisi exception diteruskan. Eksploit Berbasis SEH Pembuatan eksploit berbasis SEH berbeda dengan pembuatan eksploit biasa karena SEH berperan dalam menangani exception yang terjadi ketika program mengalami buffer overflow. Namun demikian, SEH tetap dapat diatasi dengan memanfaatkan instruksi POP POP RET untuk menarik kembali User Controlled Buffer yang berhasil masuk ke memory. Ketika SE Handler tertimpa dengan alamat yang memiliki urutan POP POP RET, maka 3

perintah POP POP akan tereksekusi dan perintah terakhir, yaitu RET akan membawa User Controlled Buffer kembali ke ESP. Dengan demikian, ESP akan menunjuk ke alamat Pointer to Next SEH. Biasanya yang terjadi berikutnya adalah menimpa alamat Pointer to Next SEH dengan alamat JMP SHORT agar dapat melewati alamat SE Handler. Setelah berhasil melewati SE Handler, perintah berikutnya bisa diawali dengan NOP sebelum akhirnya sampai ke shellcode. Masalah Unicode Mengapa developer menggunakan Unicode sebagai encoding? Unicode memungkinkan kita untuk secara visual memanipulasi teks sebagian besar sistem di seluruh dunia secara konsisten. Jadi aplikasi dapat digunakan di seluruh dunia, tanpa harus khawatir bagaimana teks tersebut akan terlihat ketika ditampilkan di komputer - hampir semua komputer - di seluruh dunia. Dan perlu diingat, bahwa ketika bermainmain dengan exploit berbasis Unicode, maka karakter yang bisa digunakan untuk keperluan instruksi assembly (opcodes) dan pembuatan shellcode menjadi sangat terbatas. Batas aman tersebut dimulai dari 01 7F, yang merupakan representasi karakter pada keyboard. Unicode based exploit pada awalnya ditinggalkan karena banyak bug hunter yang belum tahu bagaimana mengatasi Unicode (membuat exploit), namun paper Chris Anley (2002) menjawab itu semua dan keluarlah istilah Venetian Shellcode. Pada tahun 2003, Obscou menulis di Phrack magazine tentang bagaimana tehnik Chris Anley dipakai untuk menulis shellcode, beberapa minggu kemudian Dave Aitel dari Immunity.Inc membuat script untuk mempercepat penulisan shellcode Obscou. Tahun berikutnya (2004), FX berhasil menyempurnakan script yang ada sebelumnya. SkyLined kemudian menyempurnakan penulisan shellcode dalam bentuk Uppercase dan Unicode compatible yang kita kenal dengan alpha2 encoder. Tahun 2009, Peter Van Eeckhoutte menyempurnakan semua dokumen tersebut menjadi 1 dokumen, sehingga lebih menarik dan mudah dipahami. Program ScriptFTP berbasis Unicode, sehingga tehnik pembuatan eksploit biasa (ordinary SEH or direct RET) tidak akan berjalan lancar. Beberapa tehnik dan pengetahuan tentang CPU register, perintah/instruksi di Assembly akan sangat diperlukan untuk membuat Venetian Shellcode, yaitu sebuah shellcode yang dipersiapkan untuk menjadi jalan bagi shellcode lainnya. 4

Eksploit berbasis Unicode merupakan eksploit yang tidak sederhana, dan membutuhkan ketelitian untuk bereksperimen dengan stack dan register. Proses Overflow Proses fuzzing pada program ScriptFTP menggunakan fuzzer dari Metasploit. Bisa dilihat dari gambar 1.0 berikut: Metasploit client ftp fuzzer bertindak sebagai server dummy yang akan mengirimkan data yang anomali terhadap perintah-perintah yang diminta oleh ftp client (ScriptFTP). Ketika program ScriptFTP dijalankan dan terkoneksi dengan Metasploit fuzzer, maka yang terjadi adalah: Gambar 1.0 Metasploit FTP Client Fuzzing Tool 5

Gambar 2.0 Program ScriptFTP Crash Program ScriptFTP crash saat mencoba untuk membaca file/folder pada Metasploit dummy ftp server. Perintah LIST yang diminta oleh ftp client direspon dengan nama file yang anomali (panjang karakter 2000 bytes) oleh ftp server, ternyata hal ini membuat program ftp client crash. Verifikasi Kutu Program Verifikasi kutu biasanya gampang-gampang susah. Biasanya pembuat eksploit akan membuat sederet karakter-karakter secara acak, lalu mengirimkannya ke posisi dimana program tersebut tidak dapat menampung data-data tersebut. Proses ini biasanya sebentar, namun ada kalanya ketika melakukan verikasi ini terjadi hal yang tidak diinginkan, seperti misalnya buffer yang tertimpa ketika melakukan fuzzing dan ketika melakukan verifikasi ternyata berbeda. Tujuan verifikasi ini untuk menentukan beberapa bytes yang menimpa instruction pointer (EIP) atau menimpa SE Handler (jika berbasis SEH). 6

Eksploitasi Unicode Buffer Overflow Proses eksploitasi akan membuat Venetian Shellcode, agar shellcode yang kita siapkan bisa dieksekusi dengan baik. Selain itu, masalah yang paling sering terjadi dalam pembuatan eksploit adalah ketika jumlah buffer tidak mencukupi untuk menampung shellcode yang kita inginkan. Pada percobaan ini kali ini penggunaan egghunter tidak dapat dihindari, hal ini karena terbatasnya buffer yang dapat kita manfaatkan untuk mengisi shellcode. Namun sekali lagi, karena ini berbasis unicode, segalanya harus dilakukan dengan cara unicode :) Gambar 3.0 Command Execution pada ScriptFTP 7

Mencegah Buffer Overflow Pengembang software dapat mencegah serangan buffer overflow pada saat fase desain dalam tahap Software Development Life Cycle (SDLC). Selama fase desain, pengembang dapat menentukan spesifikasi tertentu mengenai pelaksanaan prosedur panggilan untuk input dan manipulasi data, serta menambahkan exception handling ke dalam program desain. Selain itu, audit juga harus dilakukan pada interval yang teratur ketika proses SDLC dilakukan sehingga dapat memastikan bahwa hanya prosedur yang didefinisikan yang akan diterima, dan memastikan hanya proses pengendalian yang dikerjakan selama proses pengembangan. Menggantungkan program pada proteksi yang dimiliki sistem operasi merupakan kesalahan yang fatal dan sering terjadi. Proteksi pada sistem operasi seperti Structured Exception Handling (SEH), SafeSEH (Safe Exception Handlers), Stack Cookies, Stack-Smashing Protection (ProPolice), Address Space Layout Randomization (ASLR), atau Data Execution Prevention (DEP) tidak sepenuhnya aman karena sudah banyak peneliti yang mencoba melewati proteksi tersebut dan mereka pun mengklaim berhasil. Untuk itu, proteksi tambahan pada program sangat disarankan pada proses SDLC. 8

Referensi 1. Building IA32 'Unicode-Proof' Shellcodes - obscou http://www.phrack.org/issues.html?issue=61&id=11#article 2. Vivisection of an Exploit : What To Do When It Isn't Easy Dave Aitel http://www.blackhat.com/presentations/win-usa-03/bh-win-03-aitel/bh-win-03- aitel.pdf 3. Vulnerability Finding in Win32 A Comparison - FX http://www.blackhat.com/presentations/win-usa-04/bh-win-04-fx.pdf 4. ALPHA2: Zero tolerance, Unicode-proof uppercase alphanumeric shellcode encoding. http://skypher.com/wiki/index.php? title=www.edup.tudelft.nl/~bjwever/documentation_alpha2.html.php 5. Exploit writing tutorial part 7 : Unicode from 0 00410041 to calc http://www.corelan.be/index.php/2009/11/06/exploit-writing-tutorial-part-7- unicode-from-0x00410041-to-calc/ Tentang Penulis Penulis adalah seorang yang antusias dengan dunia IT security :) What do you expected? Hanny Haliwela hanny@spentera.com Identitas GPG: 0xEDE1709E Sidik jari: 5D5A 02F8 4F70 6EE9 8652 C423 6E0B 78DF EDE1 709E 9

Tom Gregory tom@spentera.com Identitas GPG: 0xEE56FBFD Sidik jari: CDCF 009A 82DC 624A 4D52 6154 06BA D3D4 EE56 FBFD 10