Soal ini ada dalam kategori forensik dengan nilai 200. Petunjuknya adalah sebagai berikut:
Kita diberi file PCAP. Biasanya PCAP yang diberikan adalah dalam kategori jaringan, tapi kali ini dalam kategori USB. Dengan membuka file PCAPnya menggunakan wireshark, didapatkan bahwa benda yang dimaksud adalah sebuah USB Mouse.
Proses berikutnya adalah mencari tahu mengenai protol USB Mouse ini. Saya mendapatkan informasi dari dua URL ini:
http://wiki.osdev.org/Mouse_Input
http://www.usbmadesimple.co.uk/ums_5.htm
Setelah memahami protokolnya, saya mulai membuat decodernya dalam Python. Protokol mouse USB sangat mudah, byte pertama berhubungan dengan status tombol mana yang diklik, byte kedua dan ketiga menyatakan perpindahan koordinat relatif (x, y), dan byte terakhir menyatakan status scroll wheel (untungnya tidak dipakai di soal ini).
Untuk mengekstrak data dari PCAP saya menggunakan command line tshark:
tshark -r challenge.pcapng -Y "usb.transfer_type==0x01 && usb.endpoint_number.direction == 1 && usb.device_address==12 && usb.urb_type==URB_COMPLETE" -T fields -e usb.capdata > mousedata.txt
Saya memfilter hanya paket yang arahnya ke komputer, yang URB typenya URB_COMPLETE dan saya ambil datanya saja (4 byte untuk tiap transaksi).
Persoalannya adalah: apa yang dilakukan dengan USB mouse ini? apakah menggambar sesuatu? Ketika saya plot dengan program python saya, hasilnya seperti ini:
Saya menggambar gerakan mouse, dengan alternasi warna setiap kali setelah klik. Saya juga menggambar di mana posisi klik, ternyata dari gambar di atas bisa dilihat bahwa USB mouse tersebut digunakan untuk mengetik keyboard virtual.
Lebih jelasnya seperti ini (saya remove gerakan mousenya karena tidak penting):
Perhatikan bahwa itu berbentuk seperti keyboard. Dengan memperkirakan posisi keynya, didapatkan pesan:
the quick brown fox jumps ovver the lazy dog thekeyisiheardyoulikedsketchyetchingglastyear
Perhatikan bahwa ovver salah ketik (v terketik dua kali), ternyata bagian flagnya juga ada yang terketik dua kali (huruf g). Jadi flagnya adalah
iheardyoulikedsketchyetchinglastyear
(I heard you liked sketchy etching last year).
Source code solusinya:
Untuk Anda yang penasaran darimana saya tahu protokol USB, saya pernah mengimplementasikan remote control receiver USB berdasarkan library http://www.obdev.at/products/vusb/index.html
bahasa python-nya udh level dewa.. (y) ..
ReplyDelete