Facebook Session Hijacking?

Ahh.. hari ini sungguh menentramkan jiwa dan raga sehingga saya bisa punya waktu menulis blog dan berencana melakukan perbuatan iseng kecil-kecilan haha. Ya, saya kepikiran untuk mencoba membajak sesi login facebook temen sebelah hahaha. Dulu di percobaan pertama saya melakukan percobaan session hijack di “posting berita” buatan saya sekitar 4 tahun lalu dan design aplikasi facebook jaman dulu, jadi modal PeDe mencoba iseng bajak sesi login facebook ini. Sebelum bahas mbajak login facebook ini, intro teknik membajaknya saya ilustrasikan di cerita membajak sesi login website “posting berita” sederhana yang simple dan udah jadul dulu yaa..

Oke, untuk melakukan mbajak sesi login tentu saja yang diperlukan adalah cookie dari orang legitimate yang sedang login itu. Cookie adalah file yang berisi informasi-informasi dari website yang sedang di akses. Isinya mulai dari informasi settingan user, info ID user yang sedang login, info referer, info apa sajah dah! dsb. Setiap user mengakses server, cookie akan dikirim kembali ke server dan server bisa mengecek informasi tersebut. Nah, cookie yang akan jadi target kita tentu saja cookie dari user yang masih sedang dalam sesi login.

Secara kasarnya, sekenario analogi untuk maling cookie kita ini adalah sebagai berikut:

  1. Ada user yang masih memiliki sesi login (a.k.a belum logout) di website “posting berita
  2. User tersebut kemudian mengakses website “posting berita“, jadi tentu saja do’i bakal ngirim cookie-nya ke server
  3. Kita yang lagi ikut mantau segera nangkep cookienya
  4. Edit cookie kita… salin semirip mungkin mulai dari parameter cookie s/d valuenya seperti isi cookie milik korban
  5. Kita yang telah punya cookie yang identik dengan korban, ikut mengakses website “posting berita
  6. Lihatlah, apakah kita dianggap sebagai si korban oleh server webiste “posting berita“-nya, dan apakah kita sudah berstatus logged-in? Hehe

Yasuda, sesuai step-step yang akan dilakukan di atas itu, sekarang inilah tahap konkritnya:

  1. Secara topologi, untuk bisa sniffing cookie yang dikirim korban ke server maka kita akan memposisikan diri kita sebagai interceptor atau yang ada ditengah-tengah antara korban dan server. Kenapa harus jadi interceptor dulu? Karena bagaimana mungkin komputer kita ini bisa mbaca cookie dari korban lah kalau jalur data si cookie gak lewatin komputer kita dulu? hehe. Untuk sniffing ini tidak perlu harus satu jaringan. Bisa berbeda jaringan asalkan harus dipastikan data korban memang akan melewati interface komputer kita (kita sebagai gateway). Kalau posisi kita bukan gateway karena satu jaringan dengan korban sebagai workstation misalnya, ya paksa korban untuk melewatkan datanya via interface kita dengan ARP spoofing. Silahkan dibaca apa maksud ARP spoofing bagi yang belum mengerti, karena di posting ini tidak akan dibahas.
    ARP Spoofing
    ARP Spoofing

    ARP Table di Korban Sudah Teracuni
    ARP Table di Korban Sudah Teracuni
  2. Setelah ARP spoofing sudah dieksekusi dan paket sudah redirected ke komputer kita, langkah selanjutnya ya komputer kita ini harus meneruskan paket korban itu ke tujuan aslinya. Agar koneksi mereka bisa tercipta dan kita bisa mulai menguping percakapan dua insan eh.. dua node tsb untuk diintip isi cookie yang dikirimkan salah satu pihak.

    IP Forwarding
    IP Forwarding
  3. Yap, setelah IP Forwarding pe-relay paket di aktifkan dan ARP spoofing masih terus berlangsung, maka data dari dan ke korban tentu akan lewat komputer kita ‘kan… Nah, untuk urusan menginspeksi paket korban yang numpang liwat di interface kita itu, saya menggunakan Wireshark, sniffer terkenal untuk urusan yang satu ini. Voila!! cookienya lagi terbang dan ditangkep wireshark kita! It’s PHPSESSID=554a37c2b6138a6aaa7a35602f66f95e!
    Cookie Captured
    Cookie Captured

    Saya coba dari sisi korban, confirmed, bahwa ID sesi login sekarang sama dengan yang ditangkep wireshark.. yaitu PHPSESSID=554a37c2b6138a6aaa7a35602f66f95e. Cara mendapatkan message box berisi cookie tersebut adalah menginjeksikan javascript di URL bar-nya.

    javascript:alert(document.cookie);
    ID Sesi Login Korban
    ID Sesi Login Korban
  4. Dan inilah misi yang paling mengasyikkannya. Testing. Silahken menyalin informasi cookie milik korban itu ke cookie milik kita. Harus sama valuenya biar cookie kita nya identik dengan punya korban. Cara editnya? Gunakan cookie editor salah satu addons Firefox.

    Proses Cookie Editing
    Proses Cookie Editing
  5. Udah yakin cookienya identik dengan korban? Baiklah.. sekarang akses kembali website “posting berita” nya. Kita sudah punya modal cookie mirip dgn korban nih.. daaann… user session hijacked.

    Session Hijacked!
    Session Hijacked!

Hehe, jangan pada senyam senyum dulu.. ceritanya belum selesai… Ini percobaan jadul.. Apakah masih rentan ke website se-populer Facebook jaman sekarang? Mari kita coba…

Sebelumnya perlu diketahui bahwa Facebook sekarang tuh udah default HTTPS bahkan, kalo gak salah, kita force browsing facebook pake HTTP aja bakal di redirect lagi sama facebook ke HTTPS. Akibat policy facebook menggunakan HTTPS ini berakibat tidak semudah cara pertama tadi jika kita ingin mencuri (sniffing) cookie user yang sedang logged-in di domain facebook. Bagaimana mengakalinya? Pertama, saya mencoba login seperti biasa ke facebook dari komputer saya (Komputer A). Di komputer saya yang lain (Komputer B) saya melancarkan serangan ARP Spoofing dan IP Forwarding. Kemudian dari Komputer B itu saya siapkan pula Wireshark untuk menangkap cookie. Semuanya masih persis seperti percobaan sebelumnya. Tunggu! Apa maksudnya saya ini mau membaca data yang terenkripsi (HTTPS) facebook? Hehe, tentu tidak.

Sesuai mekanisme ‘tangkep’ cookie yang saya sudah sebutkan di atas, user akan mengirimkan lagi cookienya ketika mengakses servernya kembali. Naah, kita akan memanfaatkan HTTP milik facebook untuk nangkep cookie korban. Perlu diketahui, karena facebook membuka dua metode akses HTTP dan HTTPS, maka file-file di facebook bisa kita akses dengan HTTP atau HTTPS. Di percobaan kali ini, saya yang sudah login di Komputer A melakukan request ke file statis bertipe icon di http://www.facebook.com/favicon.ico. (FYI, file itu bisa diakses juga lewat HTTPS di https://www.facebook.com/favicon.ico). Tadaaa, pada Komputer B, si Wireshark berhasil menangkap cookie yang dikirim Komputer A ke facebook.com liwat HTTP itu. Seempuurna!

FB Cookie Captured
FB Cookie Captured

Singkat saja, seluruh parameter dan value cookie sudah di set sampai mirip dengan cookie Komputer A. Saya coba refresh halaman facebook.com dannn… yahhh.. kok masih di halaman login sih.. apa cookienya ada yang salah entry ya? Hmmm… Daripada cape mikir panjang lebar dan lama, saya ambil isi cookie dari Komputer A untuk dibandingkan dengan cookie yang didapat dari Komputer B. Inilah beberapa perbedaannya. Ooohh ternyata.. (Sorry gambarnya kekecilan, di klik aja biar nge-zoom)

Compare 2 Cookie
Compare 2 Cookie

Ya, ternyata ada beberapa value penting yang sudah difilter sama facebook sehingga tidak terexpose keluar ketika Komputer A mengakses gambar lewat HTTP. Masih banyak yang bisa diutak atik sebenarnya. Mungkin nanti kalau ada waktu saya akan install dsniff dan coba SSL MITMnya dan mencuri cookie nya dari sana? So, is it pending or mission failed? Hahaha…

4 thoughts on “Facebook Session Hijacking?

Leave a Reply

Your email address will not be published. Required fields are marked *