← Tutti i cheatsheet

eJPT · Vulnerability Assessment

Nmap NSE Scripts

Difficoltà: Intermediate Time to Master: 1.5h Prerequisiti: ../02-Footprinting-Scanning/01-Nmap-Fundamentals.md Lab: INE PTS labs / TryHackMe, Nmap


Obiettivo

Nmap non finisce con -sV -sC. Il Scripting Engine (NSE) è la parte che spesso resta inesplorata finché non ti serve davvero: centinaia di script già pronti che vanno dal semplice banner grabbing al check di CVE specifici, passando per enumeration e persino tentativi di exploit attivo. Impara a scegliere lo script giusto per la categoria giusta e nmap diventa il ponte diretto tra il footprinting che hai già fatto e il vulnerability assessment che stai per fare.


Concetti chiave

Categorie di script NSE

Categoria Cosa fa Esempio
safe non invasivo, sicuro da lanciare sempre banner, http-title
vuln verifica presenza di CVE/vulnerabilità note smb-vuln-ms17-010
auth prova bypass/enumerazione di autenticazione ftp-anon, smb-enum-users
brute password brute force ssh-brute, ftp-brute
discovery enumerazione di risorse/servizi smb-enum-shares
exploit tenta lo sfruttamento attivo http-shellshock

Attenzione a brute e exploit: non sono script “di lettura” come gli altri, tentano attivamente qualcosa contro il target. Vanno usati solo con autorizzazione esplicita, mai su host di produzione senza uno scope confermato per iscritto.

Percorso script e aggiornamento database

ls /usr/share/nmap/scripts/ | grep smb
nmap --script-updatedb

Strumenti

Tool Comando base Output Note
nmap –script nmap --script <categoria/nome> -p <porte> target output testuale per script combinabile con -sV per script version-dependent
nmap –script-args nmap --script smb-enum-shares --script-args smbuser=admin,smbpass=pass target output con credenziali fornite utile per script che richiedono auth

Payload / Esempi

Esempio 1: scan vulnerabilità generico su tutte le porte comuni

nmap --script vuln -p 21,22,80,139,443,445,3389 -oN nse-vuln.txt 10.10.10.5

Output atteso:

445/tcp open  microsoft-ds
| smb-vuln-ms17-010:
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0143

Spiegazione: --script vuln esegue tutti gli script della categoria contro le porte indicate; MS17-010 (EternalBlue) è uno dei check più comuni su macchine lab Windows datate.

Esempio 2: enumeration SMB con script discovery

nmap --script smb-enum-shares,smb-enum-users -p 445 10.10.10.5

Spiegazione: combina più script in una singola scansione separandoli con virgola; utile per raccogliere più informazioni in un solo comando.

Esempio 3: script auth per FTP anonymous

nmap --script ftp-anon -p 21 10.10.10.5

Output atteso:

21/tcp open  ftp
| ftp-anon: Anonymous FTP login allowed (FTP code 230)

Spiegazione: conferma rapidamente se il login anonimo è permesso, prima di passare a un client FTP manuale per esplorare i file.


Evasion / Bypass Techniques

Gli script NSE ereditano i timing template di nmap (-T0..-T5): su target con IDS/IPS attivo, rallentare con -T2 e usare --script safe riduce le probabilità di essere rilevati o bloccati durante l’enumeration iniziale.


Lab Hands-On

Lab 1: TryHackMe, Nmap (sezione NSE)

Obiettivo: applicare script NSE di categorie diverse su una macchina lab multi-servizio Difficulty: Facile Time: 40 min

Walkthrough breve:

  1. Esegui uno scan -sV -sC di base per identificare i servizi
  2. Per ogni servizio interessante, cerca script dedicati con ls /usr/share/nmap/scripts/ | grep <servizio>
  3. Lancia --script vuln sulle porte trovate e documenta ogni CVE riportato

Common Mistakes

  • Lanciare script brute/exploit senza autorizzazione -> può bloccare account o causare crash del servizio
  • Dimenticare --script-updatedb dopo aver aggiunto script custom -> nmap non li trova
  • Fidarsi di un singolo script vuln senza verifica manuale -> falsi positivi esistono, specialmente su versioni patchate a mano


Connessioni


Checklist di padronanza

  • Conosco le principali categorie di script NSE
  • So lanciare --script vuln e interpretare l’output
  • So combinare più script in un solo comando
  • So quando NON usare script intrusivi senza autorizzazione