KALI/SANA NMAP-NSE-01
MESIN LUA + NSELIB SKRIP 600+ BAWAAN DB — SCOPE 172.16.20.0/24
WORKBENCH SIAP
Skrip di Database
—
kurasi untuk target lab
Dengan Argumen
—
buka Args Builder di bawah
Kategori
13
safe sampai dos
Layanan Terkurasi
—
http · ssh · smb · db · dst
01Konsep & Arsitektur

NSE: Mesin Lua di Dalam Nmap

NSE menanamkan interpreter Lua ke dalam nmap. Setiap skrip adalah berkas .nse yang mendeklarasikan kapan jalan (rule) dan apa yang dilakukan (action). Kemampuan bersama hidup di nselib — http, ssh, unpwdb, smbauth — sehingga skrip baru dibangun dari blok yang teruji.

Siklus Hidup Skrip — Kapan Action Dieksekusi
PRERULEsebelum discovery — tanpa target; skrip broadcast & external
HOSTRULEper host hidup — tes tingkat host
PORTRULEper port terbuka — mayoritas skrip layanan
ACTION()logika skrip dieksekusi
OUTPUTbaris indent di bawah port/host

Rule memakai shortport (mis. shortport.http = 80/443/8080 atau service http). Satu skrip = satu rule; action dipanggil untuk setiap pasangan host/port yang lolos. Konsekuensinya: skrip portrule tak akan jalan pada port yang nmap anggap closed/filtered — pastikan -p eksplisit.

ekosistem di disk
ls /usr/share/nmap/scripts/ | wc -l       # 600+ berkas .nse
grep 'wordpress' /usr/share/nmap/scripts/script.db
Entry { filename = "http-wordpress-enum.nse", categories = { "discovery", "intrusive" } }
nmap --script-updatedb                        # setelah menambah skrip sendiri
02CLI Reference

Sintaks Pemilihan Skrip — Bahasa Lengkapnya

Semua cara memilih & mengendalikan skrip dari baris perintah. Kuasai tabel ini dan seluruh 600+ skrip menjadi milikmu tanpa menghafal satu per satu.

SintaksArtiContoh
-sCJalankan kategori defaultnmap -sC -p22,80 target
-sVMemicu skrip kategori version otomatisnmap -sV -p3306 target
--script KATEGORISatu/daftar kategori--script default,safe
--script SKRIP,SKRIPDaftar skrip spesifik--script http-title,http-headers
--script 'http-*'Wildcard — semua skrip berawalan http---script 'http-*' -p80
--script "ekspresi"Boolean: and / or / not / all--script "not (dos or exploit)"
--script /path/x.nseBerkas skrip langsung (tanpa updatedb)--script ~/nse/lab-banner.nse
--script-args k=v,k2=vArgumen inline, dipisah koma--script-args path=/login.php
--script-args-file fArgumen dari berkas (kamus panjang)--script-args-file brute.txt
--script-help SKRIPTampilkan description + usage--script-help http-brute
--script-traceTampilkan semua trafik yang dikirim skripdebugging & audit jejak
--script-timeout 60sBatas waktu per skripwajib utk fuzzer/brute
--script-updatedbPerbarui index script.dbsetelah menambah skrip
grep script.dbCari skrip per kata kuncigrep oracle script.db
KUTIP & SHELL

Wildcard 'http-*' dan boolean "not (dos or exploit)" berisi karakter yang dibaca shell — selalu beri kutip, atau shell akan meng-expansi sendiri sebelum sampai ke nmap.

03Taksonomi

13 Kategori — Kertas Izin Setiap Skrip

Kategori adalah kontrak perilaku. default jalan via -sC, version via -sV; sisanya dipanggil eksplisit. Klik kartu — warna risiko menyatakan seberapa keras skrip 'berbicara' ke target.

KOMBINASI BERBAHAYA

--script all menjalankan SEMUA kategori termasuk dos dan exploit. Bahkan di lab, panggil per kategori/skrip agar dampak terkendali dan output terbaca.

04Anatomi Skrip Lua

Bedah Sebuah .nse — Klik Setiap Bagian

lab-banner.nse — skrip asli yang bisa dijalankan (Bab 08). Klik segmen untuk membaca perannya; setiap bagian wajib ada pada skrip yang sah.


      
kode struktur wajib string komentar ▼ KLIK SEGMEN
05Args Builder

Skrip + Argumen = Perintah Lengkap

Pilih skrip, isi argumennya — builder menyusun perintah final dengan meter risiko dan catatan konteks. Kasus unggulan: http-brute pada login DVWA (path=/login.php, uservar=username, passvar=password).

Skrip
Target
Port
Timing
nmap
Risiko / Kebisingan0
06Script Database

Database Skrip Terurat

Dipilih dari 600+ bawaan: relevan untuk lab KALI/SANA, dikelompokkan per layanan. Filter grup, cari kata kunci, salin perintah. Kartu beraksen kiri sesuai risiko: hijau aman · amber menengah · magenta berat.

07Brute via NSE

Motor Kredensial Bawaan: unpwdb & login

Kategori brute memakai library login + kamus unpwdb. Kuatnya di lab: kredensial default & enumerasi awal. Lemahnya: lebih lambat dari hydra dan minim tuning.

urutan yang benar — cek pintu sebelum ditakar
# kamus bawaan nmap:
/usr/share/nmap/nselib/data/usernames.lst
/usr/share/nmap/nselib/data/passwords.lst

# 1. kredensial default / anonymous DULU (cepat, senyap):
nmap -p21  --script ftp-anon 172.16.20.201
nmap -p3306 --script mysql-empty-password 172.16.20.201
nmap -p80  --script http-default-accounts 172.16.20.201

# 2. brute terkontrol — kamus pendek + timeout:
nmap -p80 --script http-brute \
  --script-args path=/login.php,uservar=username,passvar=password \
  --script-timeout 120s 172.16.20.201

# DISIPLIN: hanya unit milikmu · kamus 50–200 entri · selalu --script-timeout
ATURAN BRUTE DI LAB

Brute hanya terhadap unit yang ditugaskan, dengan kamus pendek, sesuai tahapan instruktur. Di dunia nyata, brute massal = pelanggaran + pasti membangunkan SOC (auth.log & fail2ban — lihat Bab 09).

08Menulis Skrip Sendiri

Dari Nol ke lab-banner.nse — Empat Langkah

  1. Simpan berkas skrip
    mkdir -p ~/nse && nano ~/nse/lab-banner.nse

    Tidak harus di folder bawaan — nmap menerima path langsung.

  2. Tulis isi skrip (salin dari Bab 04)

    Struktur minimal: description · categories · rule · action. Lib: http, shortport, stdnse.

  3. Uji tanpa jaringan
    nmap --script-help ~/nse/lab-banner.nse

    Error Lua & metadata muncul di sini — sebelum satu paket dikirim.

  4. Jalankan ke unit-mu
    nmap -p80 --script ~/nse/lab-banner.nse 172.16.20.20X

    Permanen: salin ke /usr/share/nmap/scripts/ lalu --script-updatedb.

LIBRARY YANG LAYAK DIPELAJARI

http (get/post/header) · shortport · stdnse · unpwdb+login · smbauth · target. Sumber belajar terbaik: kode 600+ skrip bawaan & nmap.org/book/nse.

09Jejak NSE di Log — Blue

Penyerang Skrip = Penyerang yang Meninggalkan Tanda Tangan

Skrip HTTP NSE membawa UA eksplisit: Nmap Scripting Engine. Mudah dipalsukan — tapi pola volume keluarga skrip tidak bisa disembunyikan.

Keluarga SkripArtefak di LogBentuk Sinyal
http-* enum/titleRatusan GET path unik + UA NSEDistribusi path per IP per menit
http-brutePOST berulang ke path samaCount POST per IP — jail form login
ssh-bruteFailed password beruntun (auth.log)Jail sshd maxretry 4
db brute (mysql/mongo)Lonjakan koneksi ke port DB dari 1 IPKoneksi DB dari IP non-aplikasi = kuat
dns-zone-transfernamed: transfer rejectedSatu AXFR dari IP asing = investigasi
vuln-*/exploit-*Error 5xx, payload mencurigakan, crashLonjakan 5xx + signature WAF/IDS
broadcast-* (prerule)Nol di log targetHanya sensor pasif segmen yang melihat
BLUE — ATURAN SIAP-UJI
SURICATA — UA NSE
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"RECON NSE user-agent"; flow:established,to_server; http.user_agent; content:"Nmap Scripting Engine"; sid:1000010; rev:1;)
SIGMA — APACHE NSE
title: NSE HTTP enumeration
logsource:
  product: apache
  service: access
detection:
  sel_ua:
    cs_user_agent|contains: "Nmap Scripting Engine"
  condition: sel_ua
TRIASE 3 LANGKAH

1) UA NSE → catat IP sumber. 2) Korelasi: IP yang sama melakukan SYN scan? 3) Kategori skrip menentukan severitas: http-title senyap vs smb-vuln-* pra-eksploitasi — responsnya berbeda jauh.

RED — MENGURANGI JEJAK (UJI DI LAB)
  • --script-trace — lihat apa yang benar-benar dikirim tiap skrip sebelum mengklaim senyap.
  • Sebagian skrip menerima argumen UA — memalsukan label mudah; pola path beruntun tetap.
  • Batasi kategori: default,safe menghasilkan <10% trafik kategori vuln/intrusive.
  • --script-timeout mencegah satu skrip macet membanjiri target.
  • Realitas: NSE yang jujur sensor-ramah — canary path & baseline menjadi pertahanan terakhir.
10Workflow Lab

Staging NSE: Aman → Berat

  1. Versi dulu — kategori version otomatis
    nmap -sV -T4 --open 172.16.20.20X -oA recon/nse/v0X
  2. Default + safe pada port terpilih
    nmap -sV --script default,safe -p 22,80,443 172.16.20.20X
  3. Discovery spesifik — wildcard HTTP
    nmap -p80 --script 'http-*' --script-timeout 60s 172.16.20.20X

    Wildcard menyentuh kategori berat juga — timeout wajib; persempit bila perlu.

  4. Vuln check — pra-analisis
    nmap -sV --script vuln -p 80,443 172.16.20.20X -oA recon/nse/vuln0X

    Output: kandidat CVE — bukan izin eksploitasi.

  5. Auth — terakhir, terkontrol
    nmap -p21,80,3306 --script ftp-anon,http-default-accounts,mysql-empty-password 172.16.20.20X
11Ujian

Kuis NSE — 8 Soal

0/8TERJAWAB 0/8