Metasploit Framework merupakan framework yang paling umum dipakai untuk menguji sebuah exploit. Mengapa dibutuhkan framework dalam membuat kode program exploit? Biasanya kode program exploit memiliki operasi yang umum seperti mengirim request HTTP, membuat server web sebagai pancingan bagi korban, dan sebagainya. Dengan adanya sebuah framework yang universal dan lengkap, tugas membuat kode program exploit menjadi lebih mudah. Selain itu, hal ini juga mempermudah pihak lain untuk menguji exploit yang telah ditulis dengan mudah.
Berdasarkan situs resminya, Metasploit terdiri atas beberapa versi, yaitu Framework, Community, Express, dan Pro. Seluruh versi selain versi Framework memiliki interface berbasis web yang dapat dipakai dengan mudah. Dari seluruh versi yang ada, hanya versi Framework dan Community yang gratis. Selain itu, pengguna versi Community perlu melakukan registrasi terlebih dahulu. Pada artikel ini, saya akan memakai versi Framework yang hanya menyediakan CLI (tampilan berbasis teks). Untuk menjalankannya, saya memilih menu Kali Linux, Exploitation Tools, Metasploit, metasploit framework.
Modul pada Metasploit dikategorikan menjadi encoder, nop generator, exploit, payload, dan auxiliary. Modul exploit mewakili sebuah celah keamanan yang akan diujikan. Celah keamanan ini memungkinkan penyerang untuk mengakses sistem yang diserang. Untuk itu dibutuhkan modul payload yang akan dikerjakan bila modul exploit berhasil menjalankan tugasnya, biasanya berupa shell. Modul auxiliary adalah sesuatu yang mirip seperti exploit tetapi tidak memiliki payload sehingga penyerang tidak dapat bermain-main dengan sistem sasaran secara leluasa (setidaknya untuk saat tersebut ;). Contohnya adalah operasi scanning, serangan yang hanya melumpuhkan server, membuat server palsu atau melakukan password cracking secara offline. Modul nop generator dan encoder dipakai untuk mengelabui sistem pertahanan milik sasaran (seperti antivirus dan IDS/IPS) sehingga sasaran tidak mengetahui bahwa dirinya sedang diserang.
Untuk melihat seluruh modul yang ada, saya dapat memberikan perintah seperti:
msf > show allUntuk melihat modul untuk kategori tertentu, saya dapat memberikan perintah seperti:
msf > show exploits ... msf > show auxiliary ... msf > show payloads ... msf > show encoders ... msf > show nops ...Sebagai latihan, saya akan mencoba mencari IP yang mewakili CCTV DVR di jaringan saya. Saat ini, sudah banyak CCTV DVR yang dapat diakses melalui web. Seberapa besar tingkat keamanan yang diberikan oleh perangkat CCTV DVR yang langsung terkoneksi ke internet? Untuk mencari tahu IP apa saja yang mewakili CCTV DVR, saya perlu menggunakan modul auxiliary
scanner/misc/cctv_dvr_login
dengan memberikan perintah berikut ini:msf > use scanner/misc/cctv_dvr_loginBerikutnya, saya perlu melakukan konfigurasi untuk modul tersebut. Untuk melihat apa saja yang dapat diatur, saya memberikan perintah berikut ini:
msf auxiliary(cctv_dvr_login) > show optionsNilai
RHOSTS
saat ini masih kosong. Saya perlu mengisinya dengan nilai IP yang perlu di-scan. Sebagai contoh, bila saya ingin men-scan IP pada range 192.168.1.0 hingga 192.168.1.255, maka saya dapat memberikan perintah berikut ini:msf auxiliary(cctv_dvr_login) > set rhosts 192.168.1.0/24Karena modul auxiliary tidak membutuhkan payload, saya dapat langsung menjalankannya dengan memberikan perintah:
msf auxiliary(cctv_dvr_login) > exploitMetasploit akan melakukan proses scanning.. Hasilnya adalah tidak ada IP CCTV yang ditemukan!! Hal ini karena perangkat CCTV DVR yang populer di wilayah geografi saya berbeda dengan yang ditemui si pembuat modul. Saya melihat bahwa perangkat CCTV DVR disini sering kali men-ekspos port 554 untuk keperluan streaming. Oleh sebab itu, saya dapat memeriksa apakah sebuah IP membuka port 554 dengan memakai modul auxiliary
scanner/portscan/tcp
memberikan perintah berikut ini:msf auxiliary(cctv_dvr_login) > back msf > use scanner/portscan/tcp msf auxiliary(tcp) > show options ... msf auxiliary(tcp) > set ports 554 msf auxiliary(tcp) > set rhosts 192.168.1.0/24 msf auxiliary(tcp) > set threads 5 msf auxiliary(tcp) > exploitMetasploit pun melaporkan IP dengan port TCP 554 yang terbuka. Kemungkinan besar IP tersebut adalah IP khusus untuk CCTV DVR.
Saya sudah menemukan IP target. Langkah berikutnya adalah menebak password yang dipakai untuk login. Karena proses authentication biasanya dilakukan dengan menggunakan standar dari HTTP, maka saya dapat menggunakan modul auxiliary
scanner/http/http_login
seperti berikut ini:msf auxiliary(tcp) > back msf > use scanner/http/http_login msf auxiliary(http_login) > show options ...Sebuah merk CCTV DVR populer di wilayah geografi saya memiliki halaman administrasi berbasis web yang dilengkapi dengan proses login dan captcha. Sekilas terlihat bahwa proses bruteforce atau dictionary attack adalah hal yang tidak mungkin, bukan? Tapi masalahnya CCTV DVR tersebut juga mempublikasi situs web khusus untuk perangkat mobile yang dapat diakses tanpa captcha. Contoh URL yang dapat di-brute force tanpa harus melalui captcha adalah /cgi-bin/guest/Video.cgi?media=JPEG&channel=1. Oleh sebab itu, saya segera melakukan pengaturan seperti berikut ini:
msf auxiliary(http_login) > set auth_uri /cgi-bin/guest/Video.cgi?media=JPEG&channel=1 msf auxiliary(http_login) > set blank_passwords false msf auxiliary(http_login) > set rhosts 192.168.1.135,200,300 msf auxiliary(http_login) > set stop_on_success true msf auxiliary(http_login) > exploit ...Pada perintah di atas, Metasploit akan mencoba melakukan dictionary attack untuk HTTP authentication pada IP 192.168.1.135, 192.168.1.200, dan 192.168.1.300. Bila berhasil, maka saya dapat dengan mudah login ke IP tersebut melalui browser untuk melihat live streaming maupun hasil rekaman CCTV. Pada percobaan ini, saya menemukan cukup banyak CCTV DVR yang dapat diakses dengan mudah karena pengguna memakai password default yang mudah ditebak.
Agar proses pencarian menjadi lebih mudah, saya dapat membuat sebuah modul baru dalam bahasa pemograman Ruby yang dapat mencari IP milik beberapa brand CCTV DVR yang populer (contoh di atas hanya berdasarkan pada perilaku sebuah brand terkenal) dan berusaha untuk login melalui web. Dengan demikian, saya tidak perlu mengulangi langkah di atas lagi setiap kali ingin melakukan pencarian. Ini adalah kelebihan Metasploit sebagai sebuah framework.
Kesimpulannya: Produsen CCTV DVR harus meningkatkan keamanan produknya. Sudah bukan rahasia lagi bila banyak firmware (istilah untuk program yang berjalan di hardware/elektronik) yang ditulis dengan kualitas rendah. Bug dan kesalahan ketik dapat dijumpai dengan mudah pada firmware yang beredar di pasaran. Masalahnya, pengguna akan jarang melakukan update firmware bila ada perbaikan bug (apa ini strategi pasar agar mereka membeli produk baru yang lebih aman? ;) Pihak yang melakukan instalasi CCTV juga sebaiknya mengedukasi pengguna agar menggunakan password yang lebih aman dan lebih sulit ditebak. Selain itu, mengakses sistem milik orang lain tanpa seizin pemiliknya adalah perbuatan ilegal (mungkin pengecualiannya adalah bila segera memberi tahu pihak terkait atas celah keamanan yang dimilikinya).