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 all
Untuk 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_login
Berikutnya, 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 options
Nilai
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/24
Karena modul
auxiliary tidak membutuhkan
payload, saya dapat langsung menjalankannya dengan memberikan perintah:
msf auxiliary(cctv_dvr_login) > exploit
Metasploit 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) > exploit
Metasploit 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).