Mengalahkan Virtual Keyboard/On-Screen Keyboard

Sebelum memulai baca artikel ini, pembaca seharusnya sudah mengetahui tentang apa itu On Screen Keyboard (OSK) dan Virtual Keyboard (VK). Jika saja Anda belum pernah mendengar dan/atau mengetahui tentangnya, berikut adalah pengertian singkat. OSK dan VK adalah seperangkat keyboard berbasis aplikasi/software dan digunakan sebagai layer keamanan tambahan dari ancaman Keylogger (software yang berfungsi menyimpan keystroke).

Kedua keyboard (OSK dan VK) memiliki fungsi yang sama seperti keyboard biasa, tetapi penggunaannya harus menggunakan mouse untuk melakukan klik pada tombolnya, dan bukannya mengetik manual dengan jari seperti biasanya.

Penggunaan OSK dan VK digunakan oleh banyak perusahaan besar untuk melindungi nasabah dari ancaman keylogger. Dalam hal OSK dan VK, tidak ada keystroke yang dihasilkan. Menghasilkan input dari karakter-karakter yang ditentukan dari klik yang dilakukan user.

Banyak perusahaan mempromosikan pelayanan mereka dengan memberikan mekanisme proteksi seperti ini, yang mana akan membuat para pelanggannya memiliki kesadaran keamanan yang palsu. Tetapi bagaimanapun juga, mekanisme ini dapat meningkatkan sedikit keamanan bagi penggunanya, tetapi apakah pengguna tetap harus waspada akan adanya ancaman. Apakah artinya semua ini? Jangan mempercayakan aspek keamanan yang Anda miliki terhadap hal seperti OSK dan VK ini.

Berikut adalah beberapa buah perusahaan yang menggunakan OSK ataupun VK ini untuk membuat para penggunanya merasa aman. Beberapa perusahaan tersebut adalah http://www.ragnarok.co.id (ini contoh yang saya ambil untuk Indonesia) dan Citibank (contoh yang saya ambil untuk pembuktian skala International).

Contoh yang menarik bukan? Dengan cakupan dari situs yang sangat serius (eBanking) dan situs yang terbilang tidak begitu serius (Online Gaming). Hahaha.

Selalu ada cara yang berbeda untuk mengelakkan dan mengalahkan keylogger, OSK dan VK adalah teknik yang digunakan untuk mengelak keylogger. Sepengetahuan saya, hanya ada dua cara untuk mengalahkan OSK dan VK. Yang pertama adalah dengan merecord 10×10 pixel area mouse klik, dan satu lagi dengan mengambil nilai yang ada pada input box (hasil input dari VK/OSK) melalui COM (Component Object Model). Saya akan membahas secara detail tentang kedua cara tersebut. Jika dibandingkan dengan cara pertama, cara kedua akan lebih efektif dalam mengalahkan OSK dan VK.

Cara yang pertam memiliki gambaran sekiranya seperti ini:

Dengan cara ini, setiap kali user mengklik layar, sebuah persegi 10×10 pixel (besar pixel bervariasi berdasarkan setting masing-masing keylogger) direkam oleh keylogger-nya dan disimpan dalam sekuensi teratur.

Teknik ini pertama kali ditemukan pada tahun 1997 dan digunakan secara luas oleh beberapa jenis keylogger dan malware. Salah satu worm terkenal yang menggunakan teknik keylogger ini adalah W32/Dumaru Family. Serangan ini ditargetkan pada keypad E-gold. Masih banyak jenis malware yang juga mengimplementasikan teknik ini.

Walau demikian, tidak berarti keylogger ini adalah sempurna. User yang pintar tetap bisa menipu keylogger jenis ini untuk merekam password yang salah. Kita ambil contoh, misalnya password saya adalah s3cur3. Untuk mengetahui keylogger ini, user bisa mengklik tombol berikut di VK:

182 [clear all]3[backspace]s5[backspace]3cur3

Trik diatas akan membuat keylogger merekam password yang salah (1823s5cur3), kecuali keylogger ini mampu merekam semua perubahan yang terjadi dan mengekstrak password sebenarnya.

Cara kedua untuk mengalahkan keylogger tersebut, yakni dengan menyadap langsung COM pada internet explorer. Pada pertengahan tahun 2005 lalu, saya mendengar seorang ahli keamanan asal India melakukan riset mengenai cara lain mengalahkan OSK dan VK, yakni dengan membuat keylogger yang langsung bisa merekam segala hal yang terjadi langsung.

Jika Anda membaca lebih detail tentang artikel ini, Anda akan menyadari kalau keylogger ini susah untuk ditipu. Dalam kasus ini, keylogger akan menyadap langsung ke Internet Explorer dengan membuat suatu COM call dan memonitor input box password secara langsung. Jadi, tidak ada logging sebelum ada FORM Post terjadi.

Sebelum saya bercerita panjang lebar tentang bagaimana mengalahkan proteksi OSK dan VK, sebaiknya saya menceritakan dulu sedikit tentang cara kerja VK. Code snipet untuk VK ada pada ilustrasi berikut ini. Ini secara tidak langsung akan menjelaskan kepada Anda, cara kerja sebuah VK dalam mengemulasi klik user menjadi input seperti yang dilakukan pada keyboard.

<area shape=rect coords=”90,60,116,87″ href=”#” on click=”write_pin(’.’)”>

<area shape=rect coords=”120,60,145,87″ href=”#” on click=”write_pin(’<’)”>

<area shape=rect coords=”150,60,176,87″ href=”#” on click=”write_pin(’,’)”>

<area shape=rect coords=”240,60,296,87″ href=”#” on click=”backSpacer();”>

<area shape=rect coords=”300,60,355,87″ href=”#” on click=”clearAll();”>

<area shape=rect coords=”270,90,296,116″ href=”#” on click=”write_pin(’0′)”>

<area shape=rect coords=”300,90,326,117″ href=”#” on click=”write_pin(’p’)”>

<area shape=rect coords=”45,120,71,147″ href=”#” on click=”write_pin(’A’)”>

<area shape=rect coords=”75,120,101,147″ href=”#” on click=”write_pin(’S’)”>

<area shape=rect coords=”105,120,131,147″ href=”#” on click=”write_pin(’D’)”>

<area shape=rect coords=”135,120,161,147″ href=”#” on click=”write_pin(’F’)”>

<area shape=rect coords=”165,120,191,147″ href=”#” on click=”write_pin(’G’)”>

<area shape=rect coords=”195,120,221,147″ href=”#” on click=”write_pin(’H’)”>

<area shape=rect coords=”225,120,251,147″ href=”#” on click=”write_pin(’J’)”>

<area shape=rect coords=”255,120,281,147″ href=”#” on click=”write_pin(’K’)”>

<area shape=rect coords=”285,120,311,147″ href=”#” on click=”write_pin(’L’)”>

<area shape=rect coords=”210,29,236,57″ href=”#” on click=”write_pin(’|’)”>

<area shape=rect coords=”180,29,206,57″ href=”#” on click=”write_pin(’[‘)”>

<area shape=rect coords=”300,30,326,57″ href=”#” on click=”write_pin(‘\’)”>

<area shape=rect coords=”240,30,266,57″ href=”#” on click=”write_pin(‘:’)”>

<area shape=rect coords=”270,30,296,57″ href=”#” on click=”write_pin(‘;’)”>

<area shape=rect coords=”330,30,356,57″ href=”#” on click=”write_pin(‘\”|”>

document.write ‘<TD><A href=”#” on click=”write_pin(‘+numArray[0]+’)”><IMG SRC=”/IbsImages/login/’+numArray[0]+’.gif” WIDTH=”26″ HEIGHT=”27″ BORDER=”0″ hspace=2></A></TD><TD><A href=”#” on click=”write_pin|’+numArray[1]+’)”><IMG SRC=”/lbsImages/login/’+numArray[1]+’.gif” WIDTH=”26″ HEIGHT=”27″ BORDER=”0″ hspace=2></A></TD><TD><A href=”#” on click=”write_pin”(’+numArray[2]+’|”>

Sekarang Anda memiliki gambaran tentang cara kerja VK/OSK, satu hal penting lagi adalah mengetahui bagaimana nilai-nilai yang diinput daapt diakses dengan menggunakan COM. Setiap halaman terdapat beberapa item yang disebut sebagai web element. Contoh web element adalah input box, frame, button, dan lain-lain. Setiap element memiliki atribut-atribut seperti name, size, type, value, dan lain-lain.

Dengan COM, berbagai web element beserta nilainya bisa diakses. Untuk mengetahui lebih lanjut mengenai web element dan atributnya, Anda bisa menggunakan DOM Explorer untuk melihat detailnya.

Pada bagian ini, selain membahas berbagai hal mengenai keamanan dengan menggunakan VK dan OSK, bagaimana menembusnya dengan menggunakan keylogger yang melakukan penyadapan langsung dari tiap elemen sebuah situs, juga akan sedikit memberikan bocoran bagaimana keylogger tersebut dibuat oleh ahli keamanan asal India yang menemukannya tersebut. Hehehe.

Mulai dari sini akan ada sedikit pembahasan mengenai programming – Mohon maaf apabila bahasa yang digunakan sedikit jelek dan mungkin agak sulit dimengerti, dikarenakan ini kali pertama saya menulis mengenai programming langsung pada sebuah artikel yang tayang secara online di situs ini. Hehehe.

Tahap pertama adalah untuk mengidentifikasi elemen ID sebuah situs, dan akan digunakan program key-logger untuk mengambil nilai yang bersangkutan dari input box.

Ada berbagai cara yang dapat digunakan untuk mengidentifikasi elemen ID, dalam kasus ini saya akan mencoba untuk memasukkan angka acak ke input box dengan menggunakan VK/OSK dan mencoba menemukan nilai yang saya masukkan kembali dengan key-logger. Setelah memasukkan nilai ke input box, kita akan mendapatkan element ID-nya. Mari kita lakukan secara bertahap untuk lebih jelasnya. Pertama masukkan angka secara acak ke input box menggunakan OSK/VK. Dalam kasus ini saya memasukkan 4980, seperti yang ditunjukkan berikut ini.

—————————————————————————————–

Use your keyboard to enter your 16 digit ATM/Debit Card Number or Credit Card Number or Loan ID or World Money Card

> 4980

[] Save my card number and create username

Enter your Password by clicking on virtual keyboard

o IPIN O QPIN

> [ ]

Internet Password is not case sensitive.

[> LOGIN]

——————————————————————————————

Sekarang kita perlu mengubah dan menambah beberapa baris code di function RetrieveInfo untuk mengidentifikasi elemen ID. Kode lengkap bisa dilihat di http://www.th0r.info/blog/. Compile dan jalankan program tersebut untuk melihat elemen ID input box (yang tadi telah kita masukkan nilainya). Dalam kasus ini, elemen ID yang didapatkan adalah 66.

Seperti halnya di atas, kita akan memasukkan angka acak di IPIN imput box. Dalam kasus ini saya memasukkan S3CURITY (tentu dengan menggunakan Virtual Keyboard yang telah disediakan pihak Citibank).

Modifikasi dan tambahkan beberapa baris code untuk mengidentifikasi element ID. Compile dan jalankan program untuk mendapatkan elemen ID. Dalam kasus ini, elemen ID yang didapatkan adalah 81. Hal ini bisa Anda lihat pada kotak dialog box yang muncul.

Sekarang kita sudah mengetahui elemen ID dari input box melalui dua langkah di atas. Source code lengkap VB (Advance Virtual Keyboard (VK) Logger) bisa Anda lihat pada http://www.th0r.info/blog/

Kita tahu bahwa tidak ada solusi 100% guna mengamankan hal seperti ini, yang bisa kita lakukan hanyalah mencari solusi yang dapat meminimalkan resiko ancaman tersebut. Umumnya masalah pencurian password selalu kembali pada kelemahan mendasar, yakni kenyataan penggunaan password yang dapat dengan sangat mudah dicuri dengan menggunakan keylogger seperti yang kita bahas.

Dengan dua faktor autentifikasi, hal ini dapat dihindari, walau tentu tidak sepenuhnya. Misalnya jika password Anda terdapat beberapa digit angka, dan angka tersebut adalah angka yang akan berubah setiap beberapa menit (Password Token Technique), maka kemungkinan password Anda bisa tercuri akan jauh lebih kecil.

Sebenarnya password token (cara yang saya jelaskan di atas) sudah ada sejak tahun 1980-an. Tetapi baru mendapat perhatian publik belakangan ini. Beberapa Bank telah memperkenalkan sistem ini kepada para pelanggannya, dan lebih banyak lagi Bank yang sedang melakukan penelitian terhadap sistem ini.

Dari insiden ini, kita dapat melihat bahwa publik (terutama Bank) telah menyadari kelemahan dan celah keamanan yang berkenaan dengan password itu sendiri, namun demikian, mereka tidak dapat memberikan keamanan yang dibutuhkan para pelanggannya secara mutlak. Semoga metode dua faktor autentifikasi akan menyelesaikan masalah mereka.

Suatu fakta yang tidak dapat dielakkan adalah bahwa manusia merupakan bagian paling lemah dan/atau rawan dari sebuah sistem keamanan. Meningkatnya kasus penipuan membuat para pengusaha, khususnya Bank, sadar akan pentingnya arti keamanan dan bahaya apa yang akan mereka hadapi apabila tidak membenahi sistem keamanan mereka.

Menurut pengetahuan pribadi saya, pengguna sendirilah yang harus bertanggungjawab dalam kebanyakan kasus penipuan. Sejumlah tindakan penyuluhan keamanan telah dilakukan oleh pihak Bank kepada penggunanya dengan tujuan untuk memberitahukan kepada mereka tentang pentingnya perlindungan diri dari malware itu vital. Beberapa tips tersebut bisa dijabarkan sebagai berikut:

– Jangan melakukan transaksi e-banking di komputer umum.

– Lakukan transaksi e-banking hanya dengan komputer pribadi Anda, dan pastikan antivirus dan firewall Anda telah diaktifkan.

– Hanya menerima lisensi firewall dan antivirus asli, karena Anda akan mendapatkan update-update terbaru (antivirus dan firewall).

– Secara rutin mengganti IPIN dan/atau password Anda.

– Periksa sertifikat SSL pada saat Anda membuka situs Bank maupun situs penting lainnya yang berhubungan dengan finansial, seperti Paypal dan eBay.

– Jangan pernah menggunakan hyperlink untuk membuka alamat situs Bank Anda, ketiklah sendiri secara manual URL tersebut langsung pada browser Anda.

– Kapan pun Anda melihat kejanggalan yang terjadi, jangan ragu-ragu untuk menghubungi pihak Bank dan minta penjelasan dari mereka.

Selain itu, perlu Anda perhatikan, apabila sebuah Bank tertentu memberikan Anda pernyataan seperti “Anda bertanggungjawab penuh atas akses data ke informasi penting yang ada pada sistem eBanking kami,” tidak ada salahnya mencurigai pihak Bank tersebut. Hahaha.

Bukan saya berusaha menjelek-jelekkan pihak manapun tapi hingga saat ini saya belum pernah menemukan Bank yang mengatakan data apapun yang ada pada eBanking adalah tanggungjawab para pelanggan mereka. Namun apabila hal seperti ini terjadi, bisa saja kita indikasikan bahwa ada seseorang yang memiliki akses ke/didalam Bank tersebut yang mungkin akan melakukan pencurian data pribadi dan informasi milik para pelanggan mereka – pemilik perusahaan, maupun karyawan mungkin saja melakukan hal semacam itu.

Oleh karena itu, pilih tempat Anda melakukan transaksi dan menyimpan uang dengan benar. Pilihlah perusahaan yang menurut Anda benar-benar kompeten. =)

Iklan