Cara Menggunakan Skrip Nmap Script Engine (NSE) di Linux


Nmap adalah pemindai dan alat eksplorasi keamanan jaringan baris perintah yang populer, kuat, dan lintas platform. Ini juga dapat membantu Anda mendapatkan gambaran umum tentang sistem yang menghubungkan jaringan Anda; Anda dapat menggunakannya untuk mengetahui semua alamat IP host aktif, memindai port terbuka dan layanan yang berjalan pada host tersebut, dan banyak lagi.

Salah satu fitur menarik dari Nmap adalah Nmap Script Engine (NSE), yang menghadirkan lebih banyak fleksibilitas dan efisiensi. Ini memungkinkan Anda untuk menulis skrip Anda sendiri dalam bahasa pemrograman Lua, dan mungkin berbagi skrip ini dengan pengguna Nmap lain di luar sana.

Baca Juga: 29 Contoh Praktis Perintah Nmap untuk Linux

Ada empat jenis skrip NSE, yaitu:

  • Skrip prerule – adalah skrip yang dijalankan sebelum operasi pemindaian Nmap apa pun, dijalankan ketika Nmap belum mengumpulkan informasi apa pun tentang target.
  • Skrip host – adalah skrip yang dieksekusi setelah Nmap melakukan operasi normal seperti penemuan host, pemindaian port, deteksi versi, dan deteksi OS terhadap host target.
  • Skrip layanan – adalah skrip yang dijalankan terhadap layanan tertentu yang mendengarkan pada host target.
  • Skrip postrule – adalah skrip yang dijalankan setelah Nmap memindai semua host targetnya.

Kemudian skrip-skrip ini dikelompokkan dalam berbagai kategori termasuk untuk otentikasi (auth), penemuan host (siaran), serangan brute force untuk menebak kredensial otentikasi (brute<), menemukan lebih banyak tentang jaringan (penemuan), menyebabkan penolakan layanan (hal yang harus dilakukan), mengeksploitasi beberapa kerentanan (eksploitasi) , dll. Sejumlah skrip termasuk dalam kategori default.

Catatan: Sebelum melangkah lebih jauh, Anda harus memperhatikan poin-poin penting berikut:

  • Jangan mengeksekusi skrip dari pihak ketiga tanpa memeriksanya secara kritis atau hanya jika Anda memercayai penulisnya. Hal ini karena skrip ini tidak dijalankan di kotak pasir sehingga dapat merusak sistem Anda atau mengganggu privasi Anda secara tidak terduga atau berbahaya.
  • Kedua, banyak dari skrip ini yang mungkin dijalankan sebagai skrip prerule atau postrule. Mengingat hal ini, disarankan untuk menggunakan prerule untuk tujuan konsistensi.
  • Nmap menggunakan database scripts/script.db untuk mengetahui skrip dan kategori default yang tersedia.

Untuk melihat lokasi semua skrip NSE yang tersedia, jalankan utilitas loc di terminal, seperti ini:

locate *.nse

/usr/share/nmap/scripts/acarsd-info.nse
/usr/share/nmap/scripts/address-info.nse
/usr/share/nmap/scripts/afp-brute.nse
/usr/share/nmap/scripts/afp-ls.nse
/usr/share/nmap/scripts/afp-path-vuln.nse
/usr/share/nmap/scripts/afp-serverinfo.nse
/usr/share/nmap/scripts/afp-showmount.nse
/usr/share/nmap/scripts/ajp-auth.nse
/usr/share/nmap/scripts/ajp-brute.nse
/usr/share/nmap/scripts/ajp-headers.nse
/usr/share/nmap/scripts/ajp-methods.nse
/usr/share/nmap/scripts/ajp-request.nse
/usr/share/nmap/scripts/allseeingeye-info.nse
/usr/share/nmap/scripts/amqp-info.nse
/usr/share/nmap/scripts/asn-query.nse
...

Skrip NSE dimuat menggunakan flag --script, yang juga memungkinkan Anda menjalankan skrip Anda sendiri dengan memberikan kategori, nama file skrip, atau nama direktori tempat skrip Anda berada.

Sintaks untuk mengaktifkan skrip adalah sebagai berikut:

nmap -sC target     #load default scripts
OR
nmap --script filename|category|directory|expression,...   target    

Anda dapat melihat deskripsi skrip dengan opsi --script-help. Selain itu, Anda dapat meneruskan argumen ke beberapa skrip melalui opsi --script-args dan --script-args-file, yang terakhir digunakan untuk memberikan nama file, bukan argumen baris perintah.

Untuk melakukan pemindaian dengan sebagian besar skrip default, gunakan tanda -sC atau alternatifnya gunakan --script=default seperti yang ditunjukkan.

nmap -sC scanme.nmap.org
OR
nmap --script=default scanme.nmap.org
OR
nmap --script default scanme.nmap.org
Contoh Keluaran
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:36 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.0027s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
80/tcp open  http
|_http-title: Go ahead and ScanMe!

Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds

Untuk menggunakan skrip untuk tujuan yang tepat, pertama-tama Anda bisa mendapatkan deskripsi singkat tentang fungsi sebenarnya, misalnya, http-headers.

nmap --script-help http-headers scanme.nmap.org
Contoh Keluaran
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:37 IST

http-headers
Categories: discovery safe
https://nmap.org/nsedoc/scripts/http-headers.html
  Performs a HEAD request for the root folder ("/") of a web server and displays the HTTP headers returned.

Memuat Skrip NSE Untuk Melakukan Pemindaian Nmap

Anda dapat memilih atau memuat skrip untuk melakukan pemindaian dengan berbagai metode yang dijelaskan di bawah.

Menggunakan Nama Skrip

Setelah Anda mengetahui fungsi skrip, Anda dapat melakukan pemindaian menggunakan skrip tersebut. Anda dapat menggunakan satu skrip atau memasukkan daftar nama skrip yang dipisahkan koma. Perintah di bawah ini akan memungkinkan Anda melihat header HTTP yang dikonfigurasi di server web di host target.

nmap --script http-headers scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-15 10:39 IST
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.27s latency).
Not shown: 996 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    open     http
| http-headers: 
|   Date: Wed, 15 Nov 2017 05:10:04 GMT
|   Server: Apache/2.4.7 (Ubuntu)
|   Accept-Ranges: bytes
|   Vary: Accept-Encoding
|   Connection: close
|   Content-Type: text/html
|   
|_  (Request type: HEAD)
179/tcp   filtered bgp
31337/tcp open     Elite

Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds

Menggunakan Kategori

Anda juga dapat memuat skrip dari satu kategori atau dari daftar kategori yang dipisahkan koma. Dalam contoh ini, kami menggunakan semua skrip dalam kategori default dan siaran untuk melakukan pemindaian pada host 192.168.56.1.

nmap --script default,broadcast 192.168.56.1

Menggunakan * Wildcard

Ini berguna ketika Anda ingin memilih skrip dengan pola nama tertentu. Misalnya untuk memuat semua skrip dengan nama yang dimulai dengan ssh, jalankan perintah di bawah ini pada terminal:

nmap --script "ssh-*" 192.168.56.1

Menggunakan Ekspresi Boolean

Anda juga dapat memilih skrip menggunakan ekspresi boolean yang dapat Anda buat menggunakan operator dan, atau, dan tidak. Dan nama dalam ekspresi Boolean bisa berupa kategori, nama file dari script.db, atau semuanya.

Perintah berikut akan memuat skrip dari kategori default atau siaran.

nmap --script "default or broadcast" 192.168.56.10

Yang setara dengan:

nmap --script default,broadcast 192.168.56.10

Untuk memuat semua skrip tanpa menyertakan skrip dalam kategori vuln, jalankan perintah ini di terminal.

nmap --script "not vuln" 192.168.56.10

Perintah selanjutnya terlihat sedikit rumit tetapi mudah dimengerti, perintah ini memilih skrip dalam kategori default, atau kategori siaran, tanpa menyertakan skrip dengan nama yang dimulai dengan ssh-:

nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

Yang penting, dimungkinkan untuk menggabungkan kategori, nama skrip, direktori yang berisi skrip khusus Anda, atau ekspresi boolean untuk memuat skrip, seperti ini:

nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

Melewati Argumen ke Skrip NSE

Di bawah ini adalah contoh yang menunjukkan cara meneruskan argumen ke skrip dengan opsi –script-args:

nmap --script mysql-audit --script-args "mysql-audit.username='root', \
mysql-audit.password='password_here', mysql-audit.filename='nselib/data/mysql-cis.audit'"

Untuk meneruskan nomor port, gunakan opsi nmap -p:

nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username='root', \ 
mysql-audit.password='password_here' , mysql-audit.filename='nselib/data/mysql-cis.audit'"

Perintah di atas menjalankan audit konfigurasi keamanan server database MySQL terhadap bagian benchmark CIS MySQL v1.0.2. Anda juga dapat membuat file audit khusus yang berguna untuk audit MySQL lainnya.

Itu saja untuk saat ini. Anda dapat menemukan informasi lebih lanjut di halaman manual Nmap atau lihat Penggunaan NSE.

Untuk mulai menulis skrip NSE Anda sendiri, lihat panduan ini: https://nmap.org/book/nse-tutorial.html

Kesimpulan

Nmap adalah alat yang sangat kuat dan berguna yang dibutuhkan oleh setiap administrator sistem atau jaringan dalam persenjataan keamanannya – NSE menambah efisiensinya.

Dalam artikel ini, kami memperkenalkan Anda pada Nmap Script Engine dan melihat cara menemukan dan menggunakan berbagai skrip yang tersedia dalam berbagai kategori. Jika Anda memiliki pertanyaan, jangan ragu untuk membalas kami melalui formulir komentar di bawah.