03 Januari 2021

Nmap Scripting Engine (NSE), Senjata Rahasia Nmap

Apa itu NSE?

Seperti yang sudah dijelaskan pada artikel sebelumnya, nmap merupakan port scanning yang sangat sederhana, namun sangat powerfull. Oleh sebab itu, penggunaan nmap sangat umum digunakan. Baik itu digunakan oleh pentester, hacker atau netwrok engineer untuk melakukan troubleshoot. Nmap, sebenarnya tidak hanya dapat digunakan untuk melakukan port scanning. Ada banyak fitur-fitur nmap yang menyebabkan nmap dapat digunakan untuk berbagai macam kebutuhan seperti melakukan vulnerability scanning atau bahkan dapat digunakan untuk melakukan exploitasi. Fitur yang membuat nmap dapat melakukan hal-hal tersebut adalah nmap script engine atau yang biasa disingkat dengan NSE. NSE pada dasarnya adalah digital library dari script nmap yang akan menolong kita untuk menggali informasi lebih jauh mengenai target scanning. Script-script pada NSE ditulis dengan bahasa pemrograman Lua dan ada sekitar 600 script yang siap pakai pada NSE. Selain itu, kita juga dapat membuat script NSE sendiri sesuai dengan kebutuhan kita. Dengan begitu, penggunaan nmap makin flexibel dan powerfull dengan adanya NSE ini. Bisa dibayangkan, kita bisa membuat scan engine sendiri dengan menggunakan nmap sebagai mesin scanningnya. Untuk dapat melihat script-script NSE pada nmap kamu dapat membuka directory /usr/share/nmap/scripts 

Gambar 1. Script NSE pada nmap

Gambar 1 di atas, contoh beberapa dari isi directory /usr/share/nmap/scripts yang merupakan script NSE yang dapat digunakan.

Ketika kita berbicara mengenai script NSE, ada 4 jenis dari script NSE yang dapat kita gunakan untuk memaximalkan penggunaan nmap. Jenis script ini dibedakan berdasarkan target dan fase dari scanning yang dilakukan. Berikut ini adalah jenis-jenis dari script NSE.

1. Prerule Script. Script jenis ini merupakan script yang dijalankan sebelum operasi scanning dilakukan, dimana pada saat itu nmap tidak mempunya data terkait target

2. Host Script. Script jenis ini berjalan ketika default scan nmap telah selesai melakukan ekplorasi, deteksi, port scanning atau software discovery. 

3. Service Script. Script jenis merupakan script yang dijalankan pada service tertentu dan listening port pada target. Dalam ini termasuk adalah script http service yang dapat dijalankan pada web server.


4. Postrule Script. Script jenis yang akan berjalan pada saat semua proses operasi scanning nmap telah selesai dilakukan (termasuk host script telah selesai dilakukan). Biasanya script jenis berguna untuk melakukan parsing, formatting atau menampilkan hasil dari scanning.

Selain 4 jenis script NSE yang sudah disebutkan di atas, script NSE juga dapat dibedakan berdasarkan beberapa kategori. Pembagain kategori ini berdasarkan fungsi-fungsi dari scriptnya. Berikut ini adalah kategori dari script NSE.

1. Auth. Script kategori ini adalah semua script yang terkait dengan proses authentikasi dan beberapa terkait dengan bypass proses authentikasi. Jenis-jenis dari script NSE untuk kategori auth dapat dilihat disini

2. Broadcast. Script pada kategori ini digunakan untuk mengidentifikasi host yang belum teridentifikasi pada jaringan lokal. Contoh script ini adalah broadcast-ataoe-discover, broadcast-avahi-dos atau broadcast-dns-service-discovery. Untuk lebih lengkapnya dapat dilihat disini

3. Brute.  Script kategori ini terkait dengan script untuk melakukan proses bruteforce untuk menebak credential autentikasi. nmap mengandung banyak bruteforce dari berbagai protokol, seperti http-brute, oracle-brute, snmp-brute. Untuk lengkapnya dapat dilihat disini

4. Default (-sC). Script ketegori ini terkait dengan script-script yang umum digunakan untuk melakukan port scanning. untuk dapat menggunakan kategori ini dapat menggunakan opsi -sC pada nmap atau menggunakan --script default. Hasilnya akan sama. Untuk script-script apa saja yang terkait dengan kategori default dapat dilihat disini 

5. DOS. Script kategori ini digunakan untuk melakukan testing availability dari sistem dengan cara melakukan serangan denial of service (dos). contoh dari script NSE terkait dos adalah http-slowloris, ipv6-ra-flood atau smb-flood. untuk lengkapnya dapat dilihat disini

6. Exploit. Script kategori ini adalah script yang ditujukan untuk melakukan exploitasi vulnerability yang ada pada suatu sistem. Contoh scriptnya adalah http-shellschock, http-barracuda-dir-traversal atau http-dombased-xss. Untuk lengkapnya dapat dilihat disini.

7. Safe. Script pada kategori ini didesain agar tidak menyebabkan kerusakan pada target yang discan dan tidak menggunakan banyak bandwith atau resource untuk dalam melakukan scanning atau exploitasi suatu vulnerability sehingga penggunaanya aman/safe. contoh dari script adalah acarsd-info, address-info atau ajp-headers. Untuk lebih lengkapnya dapat dilihat disini

8. Intrusive. Kebalikan dari kategori safe, script kategori ini tidak di desain dengan aman. Penggunaannya dapat menyebabkan crash pada sistem serta menggunakan resource yang sangat signficant. Contoh script ini adalah afp-brute, backorifice-brute atau cics-enum. Untuk lebih lengkapnya dapat dilihat disini

9. Malware. Script kategori ini digunakan untuk melakukan pengecekan apakah pada target terdapat malware atau backdoor. Contoh dari script ini adalah auth-spoof, dns-zeustracker atau ftp-proftpd-backdoor. Untuk lebih lengkapnya dapat dilihat disini

10. Fuzzer. Scropt pada kategori ini mengirimkan value atau nilai yang tidak terduga atau acak di setiap paket yang dikirimkan ke sistem target. Teknik ini dapat digunakan untuk mengidentifikasi kerentanan target yang tidak terduga atau tidak diketahui. Contoh dari script ini adalah dns-fuzz, http-form-fuzzer dan http-phpself-xss.

11. Version. Script pada kategori ini digunakan untuk mendeteksi tipe atau versi dari aplikasi atau software yang ada pada target scan. contoh script ini adalah allseeingeye-info, amqp-info atau cccam-version. Untuk lebih lengkapnya dapat dilihat disini 

12. Vuln. Script pada kategori ini digunakan untuk melakukan pengecekan spesifik vulnerability pada target dan hanya memberikan hasil jika pada target jika terdapat vulnerability yang diuji. Contoh script pada kategori ini adalah distcc-cve2004-2687, ftp-libopie atau ftp-vsftpd-backdoor. Untuk lebih lengkapnya dapati dilihat disini


Bagaimana cara menggunakan script NSE?

Setelah mengetahui apa itu NSE dan jenis-jenis dari script, sekarang yang menjadi pertanyaan bagaimana cara menggunakannya? Seperti yang sudah disebutkan di atas, terdapat 600 script NSE. Kita akan bingung pastinya untuk memilih script mana yang akan kita gunakan. Untuk itu pada opsi nmap terdapat opsi "-sC". Fungsi dari opsi ini adalah agar ketika melakukan scanning, nmap akan menggunakan popular script NSE. Berikut ini contoh penggunaan opsi -sC



Gambar 2. Contoh penggunaan opsi -sC

Gambar 2 di atas merupakah contoh scanning dengan menggunakan script NSE dengan memakai opsi -sC. Jika dilihat hasilnya masih seperti hasil scanning nmap pada umumnya karena script NSE yang digunakan merupakan script yang umum digunakan.

Oke, untuk explorer lebih jauh mengenai penggunaan script NSE ini, mari kita cobe menggunakan beberapa script yang lebih spesifik kegunaanya. Untuk bisa melihat semua script NSE yang tersedia, kamu bisa menuju directory dari script-script tersebut seperti yang sudah dijelaskan di atas atau menggunakan script berdasarkan 12 kategori diatas yang sudah dijabarkan. Berikut ini adalah contoh scanning dengan nmap dengan menggunakan kategori script NSE.


Gambar 3. Nmap scan menggunakan kaegori Vuln

Pada gambar 3 diatas merupakan hasil scan menggunakan script kategori Vuln. Dari hasil scan dapat dilihat pada target scan terdapat vulnerability terhadap slowloris dos attack dan CSRF. Namun begitu, tidak dapat serta merta mempercayai hasil scannya. Kita harus melakukan validasi manual dengan mengeksploitasi langsung vulnerabilty pada target scan.


Gambar 4. Nmap scan menggunakan kategori safe

Pada gambar 4 diatas merupakan hasil scan dengan menggunakan kategori safe.

Selain langsung menggunakan nama kategori, kita juga langsung dapat menggunakan jenis script pada tiap kategori atau juga dapat langsung menggunakan nama file dari script. Berikut ini contoh penggunaan script NSE dengan cara tersebut.


Gambar 5. Scanning Nmap dengan menggunakan script http-server-header.nse

Pada gambar 5 di atas adalag contoh scanning nmap dengan menggunakan script http-server-header.nse. Script tersebut digunakan untuk mendeteksi http header pada service yang ada pada target scan. Pada Gambar 5 didapatkan hasil dimana service http yang running pada port 80 memiliki http header.


Gambar 6. Scanning nmap dengan menggunakan script jenis http-title dari kategori default

Pada gambar 6 merupakan hasil scanning nmap dengan menggunakan script janis http-title dari kategori default. Dengan menggunakan script jenis ini maka diharapkan mendapatkan result berupa http title dari service yang running pada target scan. Jika dilihat pada hasil scan tersebut, maka didapatkan service http yang running pada port 80 di target scan mempunya title "Go ahead and scanMe!". Kita dapat menggunakan script ini mengumpulkan informasi mengenai target scan. Biasanya dari informasi tersebut kita akan tau aplikasi apa yang running pada target scan.

Selain menggunakan script-script yang sudah disediakan oleh nmap, kita juga dapat membuat script NSE yang dibutuhkan atau memodif script NSE yang sudah ada. Dengan adanya fitur tersebut, maka akan memudahkan kita untuk melakukan proses scanning ke target, baik itu untuk tujuan information gathering ataupun untuk tujuan exploitasi vulnerability yang ada pada target scan. Bisa dibilang fitur ini merupakan salah satu fitur inti dari nmap. Dengan adanya fitur ini, maka nmap menjadi sangat powerfull meskipun nmap merupakan salah satu tools untuk scanning yang sudah cukup lama digunakan. Ini merupakan senjata rahasia dari nmap yang dapat sangat powerfull untuk melakukan explorasi dan exploitasi target attack.

Untuk penjelasan terkait bagaimana membuat script NSE sendiri akan kita bahas dikesempatan yang lain. semoga artikel ini bisa membuka wawasan kita mengenai penggunaan nmap sebagai scanning tools.


Tidak ada komentar:

Posting Komentar