Tampilkan postingan dengan label TOOLING. Tampilkan semua postingan
Tampilkan postingan dengan label TOOLING. Tampilkan semua postingan

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.


31 Desember 2020

Nmap, Tools Untuk Menganalisa Service Pada Suatu Host/Server

Pada saat melakukan penetration testing, hal yang pertama kali yang harus dilakukan adalah melakukan recon atau mengumpulkan informasi terkait target. Ada banyak tools yang bisa kita gunakan untuk melakukan recon, salah satunya yang paling umum adalah NMAP atau network mapper. Walaupun tools yang umum digunakan, nmap ini sangat banyak fungsinya. Berikut ini adalah beberapa hal yang bisa dilakukan oleh nmap:

1. Network Discovery

2. Indetifikasi Vulnerability

3. Backdoor Detection

4. Exploitasi Vulnerability


Sebelum lebih jauh membahas bagaimana nmap digunakan dalam aktifitas penetration testing, kita harus tau dulu bagaimana cara kerja dari tools nmap. Pada dasarnya, ketika suatu server digunakan untuk menjalankan aplikasi, maka server tersebut akan membuka port tertentu. Port tersebut merupakan pintu komunikasi dengan aplikasi yang ada pada server. Contohnya jika pada suatu server terdapat aplikasi web, maka biasanya port yang terbuka pada server tersebut adalah 80 (HTTP) atau 443 (HTTPS). Jika server tersebut adalah server email, maka port yang butuh dibuka adalah port 25, 110 atau 465. Dengan mengetahui port apa yang terbuka pada server tersebut, maka kita dapat mengetahui lewat pintu mana kita masuk. Jika pintu-pintu tersebut tidak di maintain dengan baik dari sisi security, maka akan memungkinkan attacker dari luar melakukan exploitasi.

Nmap mempunyai kemampuan untuk mengindetifikasi port apa saja yang terbuka pada suatu server. Untuk dapat mengindetifikasi port yang terbuka, nmap akan mengirimkan paket tertentu pada target lalu melihat responnya. Jika terdapat respon dari port yang dikirimi paket, artinya port tersebut aktif. Jika port tidak memberikan respon pada selang waktu tertentu, maka port tersebut akan dianggap tidak aktif oleh nmap. Mari kita coba melakukan perintah sederhana dari tools nmap ini. 


Gambar 1. Contoh penggunaan nmap yang sederhana

Untuk command di atas, kita hanya menggunakan perintah 

nmap <ip target>

Dengan perintah yang sederhana tersebut, kita bisa mendapatkan informasi port apa saja yang terbuka pada server tersebut. Pada contoh di atas, kita lihat bahwa ada 7 port yang aktif, namun hanya 4 port yang bisa diakses langsung karena berstatus open dan 3 port sisanya tidak bisa diakses karena statusnya closed. Pada contoh gambar 1 di atas, hasil yang diinformasikan masih sangat sedikit informasinya. Untuk dapat memaximalkan penggunaan nmap, kita dapat melihat manual nmap dengan menggunakan perintah 

nmap --help atau man nmap


Gambar 2. Opsi pada nmap

Pada gambar 2, kita bisa lihat terdapat banyak opsi yang bisa kita gunakan ketika menggunakan nmap. Ketika kita butuh informasi yang lebih detail dari hasil scan menggunakan nmap, maka kita dapat menggunakan opsi-opsi tersebut. Berikut ini adalah contoh penggunaan opsi pada nmap dan tujuannya.

1. nmap untuk mendeteksi OS dan Service pada target

untuk melakukan hal ini, maka dibutuhkan opsi -A. opsi -A digunakan untuk mendeteksi OS dan service pada target. Agar proses scanning bisa dilakukan lebih cepat, maka dapat dikombinasikan dengan opsi -T4. Berikut ini adalah contoh penggunaannya.

Gambar 3. Nmap untuk mendeteksi OS dan service

Dari hasil scan di atas, kita bisa mendapatkan informasi yang lebih detail dari port yang aktif pada target seperti jenis web server yang digunakan, versinya, SSL detail dan kemungkinan OS yang digunakan oleh server.

2. nmap untuk mendeteksi versi dari service/daemon

untuk mendapatkan informasi mengenai versi dari service/daemon yang aktif pada target dapat menggunakan -sV. Berikut ini adalah contoh penggunaan opsi -sV


Gambar 4. Nmap untuk mendeteksi versi dari service pada target

Dari hasil di scan nmap pada gambar 4, kita dapat melihat informasi dari service yang running pada target.


3. Melakukan scan menggunakan protokol TCP atau UDP
Pada saat melakukan scan dengan nmap, kita bisa memilih untuk menggunakan protokol TCP saja atau UDP saja. Biasanya ini dilakukan ketika kita mau menghindari blocking firewall atau mau mempercepat proses scan. Jika mau melakukan scanning hanya dengan menggunakan protokol TCP saja, maka kita dapat menggunakan opsi -sT dan untuk protokol UDP saja dapat menggunakan opsi -sU. Berikut ini contoh penggunaan opsi -sT dan -sU


Gambar 5. Scanning nmap menggunakan opsi -sT

Gambar 6. Scanning nmap menggunakan opsi -sU

Dari dua hasil scan di atas, dapat kita lihat terdapat perbedaan. Pada gambar 5 yang merupakan scanning dengan protokol TCP memberikan hasil. Ini berbeda ketika scanning menggunakan protokol UDP, tidak memberikan hasil. Ini artinya, service pada target hanya berjalan menggunakan protokol TCP.

4. Scannig port tertentu
Pada saat melakukan scanning dengan nmap, pada dasarnya nmap akan melakukan scanning ke semua port (port 1-65535). Hal tersebut menyebabkan proses scanning menjadi lama. Agar dapat melakukan efesiensi pada saat melakukan scanning, kita dapat memilih port tertentu. Untuk melakukan hal tersebut kita dapat menggunaka opsi -p diikuti dengan port yang mau di scan


Gambar 7. Scanning nmap dengan spesifik port

Dari hasil scanning di atas, dapat kita lihat scanning hanya menargetkan port 22,80,443 dan 501. Jika dibandingkan dari sisi waktu, scanning dengan spesific port jauh lebih cepat dari pada scanning tanpa menggunakan spesific port. Untuk opsi di atas, dapat dikombinasikan dengan perintah lain sehingga dapat memberikan result yang lebih detail.


Dengan memperhatikan opsi-opsi pada tools nmap, kita dapat melakukan analisa terhadap semua port yang digunakan oleh service pada target. Hasil analisa tersebut dapat dijadikan data awal sebelum melakukan penetrasi testing. Misalnya, ketika kita sudah tau aplikasi apa yang aktif pada target dan versi dari aplikasi tersebut, kita dapat mencari vulnerability terkait versi aplikasi tersebut. Jika kita belum menemukan vulnerability pada aplikasi tersebut, setidaknya kita bisa mempunyai bayangan proses apa saja yang sedang berlangsung pada target sehingga kita bisa melakukan recon lebih lanjut terhadap target pentest.

Ada banyak fungsi dari nmap yang bisa kita explorer selain melakukan analisa service seperti telah disebutkan di atas. Next time, kita akan bahas bagaimana melakukan hal-hal tersebut.