in Web Security

Membedah Sign-in Seal Yahoo!

not sealed

not sealed

Dengan maksud untuk mencegah Phising attack, Yahoo membuat fitur segel di halaman loginnya. Segel di sini maksudnya adalah gambar unik yang muncul di halaman login. Gambar ini hanya unik untuk PC/komputer tertentu saja, bukan melekat pada yahoo id kita. Jadi kalau kita pindah komputer, segelnya tentu tidak ikut pindah.


Fake Login Page

Biasanya serangan phishing menggunakan metode fake login page atau halaman login palsu. Setelah sebelumnya korban tertipu dengan mengklik link yang mengarah pada halaman login palsu, kini korban disuguhkan dengan halaman login yang sangat mirip dengan halaman login yang biasa dipakainya. Bila korban tidak menyadarinya, maka username dan passwordnya akan jatuh ke tangan attacker.

Serangan fake login page ini bisa terjadi karena halaman login umumnya bersifat statis dan konsisten. Dari komputer manapun, kapanpun halaman login memiliki tampilan visual yang sama. Karena halaman login yang statis itulah cukup dengan membuat halaman yang mirip dengan itu, banyak korban akan tertipu.

Tujuan sign in seal ini adalah membuat halaman login menjadi hal yang pribadi. Setiap komputer memiliki halaman login yang berbeda. Kalau halaman login di tiap komputer berbeda dan tampilan halaman login hanya diketahui oleh pemilik komputer, tentu phishing akan kesulitan melancarkan serangan fake login.

Cara Kerja Yahoo Sign-in Seal

Mari kita lihat bagaimana cara kerja yahoo sign-in seal ini. Yahoo seal mengijinkan membuat seal dalam bentuk gambar maupun teks, yang penting adalah teks dan gambar tersebut unik dan rahasia (tidak mudah ditebak). Setelah seal dibuat, maka seal itu akan selalu muncul setiap kali saya login ke yahoo.

Semula saya berpikir ini pasti pakai cookie, namun ketika saya coba menghapus semua cookie dari browser saya, seal yahoo tidak ikut terhapus. Dia tetap survive dari penghapusan cookie. Kemudian ketika saya coba buka halaman login yahoo di Opera pada komputer yang sama, maka seal itu lagi-lagi ikut muncul, padahal saya bikin seal itu di Firefox.

Jadi kalau saya rangkum keunikan seal Yahoo adalah:

  1. Survive from Cookie Removal
  2. Cross-Browser Appearance

Bagaimana caranya seal Yahoo bisa survive dari penghapusan cookie dan bisa muncul di semua browser? Jawabannya adalah dengan Flash. Flash memiliki fitur semacam cookie yaitu Local Shared Object. Data ini disimpan dalam file berekstensi SOL. Semua browser ketika memuat suatu URL berhak mengakses shared object di domain yang sama dengan flash. File flash yang dipakai yahoo untuk mengambil data dari cache adalah dataCache.swf yang URLnya di https://login.yahoo.com/login/dataCache.swf. Setelah dibuka dengan flash decompiler, source code dari file dataCache.swf ada pada gambar di bawah ini:

Script dataCache.swf

Script dataCache.swf

dataCache.swf mendefinisikan fungsi untuk menyimpan objek ke dalam cache dan untuk mengambil objek dari cache. Kemudian Fungsi ini didaftarkan dengan fungsi addCallback agar bisa dipanggil dari javascript. Jadi tugas flash hanya menyimpan dan mengambil objek dari cache untuk selanjutnya ditampilkan oleh javascript. Dari source code tersebut juga terlihat nama shared object yang dipakai, yaitu loginCache. File SOL tersebut disimpan dalam filesystem umumnya di C:\Documents and Settings\<username>\Application Data\Macromedia\Flash Player\#SharedObjects\<random>\login.yahoo.com\loginCache.sol.

Dengan program SOL reader file loginCache.sol di komputer saya terbaca isinya sebagai berikut:

YLS: YLS=v=1&p=0&ap=1232341233149
F: F=a=kSmT8qEMvTDDtBUE14BdySfZq8q2aQRUcFYEd.G7P36yFSIIg4GlIlYkiKTXaV.WuC25JHgQ0NYUWkX1TkXEBVHzcw–&b=DtKN
YL: YL=v=1&c=J63kKW2fjWIeaRIMD_Q8qr9qd.RtqZMMXNNQy1rLiWG3ySvsMdTyPYqU7WJGWdPXwIPGZ4q9dzr62Th3hQNEodw3kE8DEDEuipITKP3EGBpUw9tHEHXu2E_hqfPGhStp0ExeJoff9L0J_.T5MmRyI4Q2H6PgOq5Eae6Shg–

Jadi ada 3 object di file loginCache.sol yaitu YLS, F dan YL. Kalau kita lihat cookie yang ada pada halaman login.yahoo.com ternyata ketiga ada cookie dengan nama YLS, F dan YL. Jadi bila shared object sudah ada isinya, maka isi dari shared object tersebut akan diambil untuk nilai cookie. Pada waktu pertama kali membuat seal, shared objek diinisialisasi dengan cookie yang di-set dari server yahoo untuk selanjutnya diambil setiap kali login. Jadi menghapus cookie di browser tidak ada gunanya karena yahoo memakai data yang di shared object. Bila cookie terhapus, data di shared object yang akan diambil sebagai cookie.

Seal berupa text akan dikirim ke server yahoo untuk dibuat gambar di URL yahoofs.com. Sedangkan seal berupa image, imagenya akan diupload dan diletakkan di URL yahoofs.com. Semua seal baik text maupun gambar akan diubah menjadi format gif. Contoh URL seal:

https://a323.yahoofs.com/login/f2509e9b428b3bd6bcf1216a0b274e3e/72612323559882h6u81l4n8f73.gif?lowLEdJBQiTA08EX

Url tersebut menghasilkan halaman login seperti ini:

text seal

text seal

May be for security reason, setelah login berhasil kita tidak bisa lagi membuka gambar seal dengan URL yahoofs.com di atas karena akan diredirect ke URL yang tidak eksis ini:

http://lovrf.yahoo.com/login/f2509e9b428b3bd6bcf1216a0b274e3e/72612323559882h6u81l4n8f73.gif

Gambar seal disimpan di server yahoo, bukan di komputer pengguna. Di komputer pengguna cuma menyimpan cookie untuk mengambil gambar seal di server.

Perhatikan bahwa URL tersebut dibungkus dalam https. Ini penting mengingat seal harus dijaga kerahasiaan. Sebab bila seal diketahui orang lain, maka dia bisa melancarkan phishing attack dengan membuat fake login page yang mengandung gambar seal kita. Karena halaman loginnya mengandung segel kita, maka kita akan tertipu dan meyakini bahwa itu halaman login yang asli.

Stealing Seal

Saya sudah mencoba mengkopi file dataCache.sol ke PC lain, hasilnya adalah gambar seal saya muncul di PC itu.

Untuk bisa sukses menipu korban attacker harus membuat fake login page yang semirip mungkin. Dengan adanya seal pada halaman login ini membuat attacker harus menduplikasi gambar seal ini di halaman fake loginnya. Kunci dari seal adalah pada file dataCache.sol. Untuk mencuri seal korban agar muncul di komputer saya, maka saya harus mengkopi file dataCache.sol ini dan ditaruh pada folder yang benar di komputer saya. Dengan cara ini seal korban akan muncul di komputer saya. Mengkopi file dataCache.sol ini tidak bisa dilakukan melalui web karena dilindungi oleh https. Jadi harus cari cara lain, misalkan dengan open shared folder di windows, ftp atau bug lain yang ada di komputernya.

Menghapus Seal

Karena data cache seal disimpan di cookie dan shared object, maka untuk menghapus seal Yahoo yang harus dilakukan adalah:

  1. Menghapus cookie dari browser
  2. Menghapus local shared object file (*.SOL) yang ada di C:\Documents and Settings\<username>\Application Data\Macromedia\Flash Player\#SharedObjects\<random>\login.yahoo.com\loginCache.sol

Kesimpulan

Menurut saya sign in seal yahoo sangat membantu dalam membatasi ruang gerak phisher. Dengan adanya seal ini attacker tidak bisa membuat fake login page yang bersifat umum  (1 fake login untuk semua calon korban). Attacker harus bekerja ekstra untuk mengetahui seal calon korbannya sebelum bisa membuat fake login page. Melalui sniffing jaringan seal tidak mungkin disniff karena dilindungi oleh https. Jadi sebaiknya anda pakai seal ini, walaupun buka silver bullet solution setidaknya memperkecil kemungkinan serangan phisher untuk mencuri password yahoo anda.

Write a Comment

Comment

  1. WAAAAAA…. BANG…
    dengan penjelasan file .sol d atas sekarang ane bisa nelpon ke mana aj d bumi… sepuasnya…. xD

    makasih banyak bang….