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:
- Esegui uno scan
-sV -sCdi base per identificare i servizi - Per ogni servizio interessante, cerca script dedicati con
ls /usr/share/nmap/scripts/ | grep <servizio> - Lancia
--script vulnsulle porte trovate e documenta ogni CVE riportato
Common Mistakes
- Lanciare script
brute/exploitsenza autorizzazione -> può bloccare account o causare crash del servizio - Dimenticare
--script-updatedbdopo 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
Link Utili
Connessioni
- Prerequisito: ../02-Footprinting-Scanning/01-Nmap-Fundamentals.md
- Prossimo Step: 03-CVE-CVSS-Scoring.md
- Combinazione con: 01-Vulnerability-Scanning-Nessus.md
Checklist di padronanza
- Conosco le principali categorie di script NSE
- So lanciare
--script vulne interpretare l’output - So combinare più script in un solo comando
- So quando NON usare script intrusivi senza autorizzazione