Vai al contenuto

Prossima edizione 6 luglio 2026

Torna al blog

Tutorial Nmap: scansione di rete da zero alla scoperta

Finestra del terminale che mostra risultati di scansione Nmap con porte aperte e versioni dei servizi evidenziate su sfondo scuro

Impara Nmap da zero con esempi pratici di comandi. Padroneggia la scoperta degli host, la scansione delle porte, il rilevamento dei servizi, il fingerprinting del SO e gli script NSE in questo tutorial pratico per principianti.

Daute Delgado
13 min di lettura
  • Offense
  • Detection
  • Skills
  • Mindset
  • Confidence
Condividi questo articolo:

TL;DR

Nmap è lo strumento di scansione di rete più utilizzato nella cybersecurity, impiegato da oltre l'80% dei penetration tester per la ricognizione. Questo tutorial guida i principianti attraverso ogni tecnica essenziale di Nmap: scoperta degli host con ping sweep, scansioni TCP connect e SYN stealth, scansione UDP, rilevamento delle versioni dei servizi, fingerprinting del sistema operativo e automazione con il Nmap Scripting Engine (NSE). Ogni concetto include comandi terminale reali che puoi eseguire nel tuo laboratorio.

L'incarico doveva essere di routine. Elena, una penetration tester junior alla sua prima valutazione professionale, era seduta in una sala conferenze con il suo laptop collegato alla rete ospiti del cliente. Il suo team leader le aveva illustrato il perimetro: una sottorete /24, 254 host possibili, enumerazione completa delle porte. Aveva studiato la metodologia durante la formazione, letto la documentazione e superato l'esame di certificazione. Ora doveva trovare le macchine attive, capire cosa stavano eseguendo e documentare ogni servizio esposto prima che il team offensivo potesse iniziare lo sfruttamento.

Aprì un terminale e digitò il suo primo comando Nmap. In pochi secondi, i risultati iniziarono a scorrere. Host 10.0.1.12: porte 22, 80, 443 aperte. Host 10.0.1.35: porte 21, 139, 445 aperte. Una condivisione file SMB su un server non aggiornato. Un'applicazione web che eseguiva una versione obsoleta di Apache. Una porta database esposta all'intera sottorete. In 20 minuti, Elena aveva mappato la superficie d'attacco che avrebbe guidato l'intero incarico. La rete le aveva detto tutto ciò che aveva bisogno di sapere. Doveva solo fare le domande giuste.

Questo è ciò che fa Nmap. Traduce il concetto astratto di sicurezza di rete in dati concreti e utilizzabili. Ogni porta aperta è una porta d'ingresso. Ogni servizio in esecuzione è una conversazione in attesa di iniziare. Nmap ti aiuta a trovarli tutti.

Cosa fa effettivamente Nmap

Nmap, abbreviazione di Network Mapper, è uno strumento open source creato da Gordon Lyon nel 1997. Invia pacchetti appositamente progettati agli host target e analizza le risposte per determinare quali host sono attivi, quali porte sono aperte, quali servizi sono in esecuzione e spesso quale sistema operativo utilizza il target.

A differenza degli strumenti di monitoraggio passivo come Wireshark, Nmap è uno scanner attivo. Genera traffico e osserva come reagisce il target. Questo lo rende indispensabile per il penetration testing, l'auditing di rete e le valutazioni di sicurezza, ma significa anche che devi avere l'autorizzazione prima di scansionare qualsiasi rete che non possiedi.

Installa Nmap da nmap.org o tramite il gestore di pacchetti del tuo sistema. Su Kali Linux è preinstallato. Su Ubuntu o Debian, esegui:

bash
sudo apt install nmap

Su macOS con Homebrew:

bash
brew install nmap

Verifica l'installazione:

bash
nmap --version

Dovresti vedere la versione 7.90 o successiva. Con Nmap installato, sei pronto per iniziare la scansione.

Scoperta degli host: trovare i target attivi

Prima di scansionare le porte, devi sapere quali host sulla rete sono effettivamente attivi. Scansionare tutte le 65.535 porte su 254 indirizzi quando esistono solo 12 macchine spreca tempo e genera rumore inutile. La scoperta degli host restringe il campo.

La tecnica di scoperta più semplice è un ping sweep, che invia richieste echo ICMP a ogni indirizzo in un intervallo e annota quali rispondono:

bash
nmap -sn 192.168.1.0/24

Il flag -sn indica a Nmap di saltare la scansione delle porte e verificare solo se gli host sono attivi. L'output mostra ogni host che risponde con il suo indirizzo IP e, quando disponibile, il suo hostname e indirizzo MAC. Su una rete domestica tipica, questo termina in meno di 5 secondi.

Alcuni host bloccano l'ICMP. Quando il ping fallisce, Nmap usa tecniche aggiuntive. Il comando seguente combina la scoperta ARP (efficace su reti locali), le sonde TCP SYN alla porta 443, le sonde TCP ACK alla porta 80 e le richieste di timestamp ICMP:

bash
sudo nmap -sn -PE -PS443 -PA80 -PP 192.168.1.0/24

Il prefisso sudo è importante qui. Diversi metodi di scoperta richiedono l'accesso ai raw socket, che solo gli account root o amministratore possono utilizzare.

Scansione TCP: scansioni Connect e SYN Stealth

Una volta che sai quali host sono attivi, la scansione delle porte rivela quali servizi sono in ascolto per connessioni. La scansione TCP è l'approccio più comune perché TCP alimenta la maggior parte dei servizi di rete: server web, SSH, database, email e altro.

Scansione TCP Connect

La scansione TCP connect è il metodo più diretto. Nmap completa un handshake a tre vie completo (SYN, SYN-ACK, ACK) con ogni porta. Se la connessione riesce, la porta è aperta. Se il target restituisce un pacchetto RST, la porta è chiusa.

bash
nmap -sT 192.168.1.10

Questa scansione non richiede privilegi speciali perché usa il meccanismo di connessione normale del sistema operativo. Il compromesso è la visibilità: una connessione TCP completa appare nei log del server, nei registri del firewall e negli alert IDS/IPS. Se la discrezione è importante, usa una scansione SYN al suo posto.

Scansione SYN Stealth

La scansione SYN, chiamata anche scansione half-open, è il default di Nmap quando lo esegui con privilegi root. Invia un pacchetto SYN e attende una risposta senza completare l'handshake:

bash
sudo nmap -sS 192.168.1.10

Se il target risponde con SYN-ACK, la porta è aperta. Nmap invia immediatamente un RST per chiudere la connessione prima che venga completamente stabilita. Se il target risponde con RST, la porta è chiusa. Se non c'è risposta dopo diverse ritrasmissioni, la porta viene marcata come filtrata, il che significa che un firewall o filtro di pacchetti probabilmente sta bloccando il traffico.

Una scansione SYN predefinita verifica 1.000 delle porte TCP più comunemente utilizzate. Per scansionare tutte le 65.535 porte:

bash
sudo nmap -sS -p- 192.168.1.10

Il flag -p- significa «tutte le porte». Puoi anche specificare intervalli personalizzati. Scansiona solo le porte web e database principali:

bash
sudo nmap -sS -p 21,22,80,443,3306,5432,8080,8443 192.168.1.10

Scansione UDP: il protocollo dimenticato

Molte valutazioni di sicurezza si concentrano esclusivamente su TCP e tralasciano servizi critici in esecuzione su UDP. DNS (porta 53), SNMP (porta 161), DHCP (porta 67/68) e NTP (porta 123) si basano tutti su UDP. Un servizio SNMP vulnerabile con community string predefinite può esporre l'intera configurazione di rete a un attaccante.

La scansione UDP è fondamentalmente più lenta del TCP perché non c'è handshake. Nmap invia un pacchetto UDP alla porta target. Se la porta è chiusa, il target restituisce un messaggio ICMP «port unreachable». Se la porta è aperta, può rispondere con dati, o può non inviare nulla. Quel silenzio rende la scansione UDP un gioco di attesa dei timeout.

bash
sudo nmap -sU --top-ports 100 192.168.1.10

Il flag --top-ports 100 limita la scansione alle 100 porte UDP più comunemente utilizzate, riducendo drasticamente il tempo di scansione. Una scansione UDP completa di 65.535 porte può richiedere oltre un'ora su un singolo host. Per valutazioni approfondite, combina TCP e UDP:

bash
sudo nmap -sS -sU -p T:1-1000,U:53,67,68,123,161,162,500 192.168.1.10

Questo scansiona le 1.000 porte TCP principali e porte UDP specifiche ad alto valore in un singolo passaggio.

Rilevamento delle versioni dei servizi

Sapere che la porta 8080 è aperta ti dice molto poco. Sapere che esegue Apache Tomcat 9.0.43 ti dice esattamente quali CVE verificare. Il rilevamento delle versioni trasforma una lista di porte aperte in un inventario di software che puoi ricercare, testare e riportare.

bash
sudo nmap -sV 192.168.1.10

Il flag -sV attiva le sonde di servizio di Nmap. Per ogni porta aperta, Nmap invia una serie di richieste specifiche del protocollo e confronta le risposte con un database di oltre 11.000 firme di servizi. L'output include il nome del servizio, il numero di versione e talvolta dettagli aggiuntivi come la distribuzione del SO o l'hostname configurato.

Puoi controllare l'intensità del rilevamento. Il livello predefinito (7 su 9) bilancia precisione e velocità. Per la massima precisione su target critici:

bash
sudo nmap -sV --version-intensity 9 192.168.1.10

Per scansioni più veloci durante la ricognizione iniziale, riduci l'intensità:

bash
sudo nmap -sV --version-light 192.168.1.10

Il rilevamento delle versioni è dove Nmap passa dalla ricognizione all'intelligence utilizzabile. Uno scanner di vulnerabilità incrocia la stringa di versione esatta con database come la National Vulnerability Database (NVD). Trovare OpenSSH 7.4 su un server nel 2026 ti dice immediatamente che quel sistema è anni indietro nelle patch di sicurezza.

Rilevamento del SO e fingerprinting

Nmap identifica i sistemi operativi analizzando differenze sottili nel modo in cui gli stack TCP/IP sono implementati. Windows, Linux, macOS e i dispositivi di rete rispondono tutti ai pacchetti appositamente progettati in modi leggermente diversi. Queste differenze formano un'impronta che Nmap confronta con il suo database.

bash
sudo nmap -O 192.168.1.10

Il rilevamento del SO funziona meglio quando esistono almeno una porta aperta e una chiusa sul target. Senza entrambe, Nmap non può inviare l'intera gamma di pacchetti sonda necessari per un fingerprinting preciso. L'output include la famiglia del SO, la stima della versione e una percentuale di confidenza.

Per una scansione iniziale completa che combina scansione SYN, rilevamento delle versioni e rilevamento del SO:

bash
sudo nmap -sS -sV -O 192.168.1.10

Oppure usa il flag -A, che abilita rilevamento del SO, rilevamento delle versioni, scansione degli script e traceroute in un singolo comando:

bash
sudo nmap -A 192.168.1.10

Il flag -A è chiamato modalità «aggressiva». Genera traffico di rete significativo e richiede più tempo, quindi usalo su target specifici piuttosto che su intere sottoreti.

Il Nmap Scripting Engine

Il Nmap Scripting Engine (NSE) estende Nmap da uno scanner di porte a una piattaforma completa di ricognizione. Scritto in Lua, NSE include oltre 600 script organizzati in categorie: auth per i test di autenticazione, vuln per il rilevamento di vulnerabilità, discovery per l'enumerazione di rete, brute per i test di credenziali e altro.

Esegui il set predefinito di script contro un target:

bash
sudo nmap -sC 192.168.1.10

Il flag -sC è equivalente a --script=default e esegue script considerati sicuri e utili per la maggior parte delle valutazioni. Gli script predefiniti includono il fingerprinting delle chiavi SSH, l'estrazione dei titoli HTTP, l'analisi dei certificati SSL e l'enumerazione delle condivisioni SMB.

Punta a categorie di vulnerabilità specifiche:

bash
sudo nmap --script vuln 192.168.1.10

Questo esegue ogni script nella categoria vuln, verificando vulnerabilità note nei servizi rilevati. Tieni presente che alcuni script di vulnerabilità sfruttano attivamente le debolezze (come testare credenziali predefinite), quindi consulta la documentazione degli script prima di eseguirli contro sistemi di produzione.

Esegui script individuali per verifiche mirate. Testa la vulnerabilità EternalBlue SMB (MS17-010):

bash
sudo nmap --script smb-vuln-ms17-010 -p 445 192.168.1.10

Verifica la configurazione SSL/TLS sui server web:

bash
sudo nmap --script ssl-enum-ciphers -p 443 192.168.1.10

Il SANS Institute raccomanda di combinare NSE con il rilevamento delle versioni per la massima copertura:

bash
sudo nmap -sV -sC --script vuln 192.168.1.10

Puoi esplorare la lista completa degli script disponibili su nmap.org/nsedoc.

Formati di output: salvare i risultati

Le valutazioni professionali producono prove. L'output grezzo del terminale è difficile da analizzare, cercare e includere nei report. Nmap supporta molteplici formati di output per scopi diversi.

Output normale in un file di testo:

bash
sudo nmap -sS -sV -oN scan_results.txt 192.168.1.10

Output XML per l'integrazione con altri strumenti (Metasploit, scanner di vulnerabilità, parser personalizzati):

bash
sudo nmap -sS -sV -oX scan_results.xml 192.168.1.10

Output grepable per l'analisi rapida da riga di comando:

bash
sudo nmap -sS -sV -oG scan_results.gnmap 192.168.1.10

Salvare in tutti e tre i formati simultaneamente:

bash
sudo nmap -sS -sV -oA scan_results 192.168.1.10

Il flag -oA crea tre file con il nome base specificato: .nmap (normale), .xml (XML) e .gnmap (grepable). Usa sempre -oA negli incarichi reali. Non sai mai quale formato ti servirà dopo, e riscansionare il target per ottenere un formato di output diverso spreca tempo e genera rumore di rete aggiuntivo.

Mettere tutto insieme: un flusso di lavoro pratico

Un flusso di lavoro Nmap strutturato procede attraverso quattro fasi, ciascuna costruita sui risultati precedenti.

Fase 1: Scoperta degli host. Scansiona l'intervallo target per trovare gli host attivi.

bash
sudo nmap -sn 10.0.1.0/24 -oA discovery

Fase 2: Scansione rapida delle porte. Scansiona gli host scoperti per le porte più comuni.

bash
sudo nmap -sS --top-ports 1000 -iL targets.txt -oA quick_scan

Fase 3: Enumerazione approfondita. Esegui scansioni complete delle porte con rilevamento delle versioni e del SO sui target interessanti.

bash
sudo nmap -sS -sV -O -p- -iL priority_targets.txt -oA deep_scan

Fase 4: NSE mirato. Esegui script di vulnerabilità e enumerazione contro servizi specifici.

bash
sudo nmap -sV --script vuln,auth -p 21,22,80,443,445 -iL priority_targets.txt -oA vuln_scan

Questo approccio per fasi è efficiente e metodico. Eviti di passare ore su scansioni complete di porte di host irrilevanti e costruisci un quadro completo che documenta ogni scoperta per il tuo report.

Temporizzazione e prestazioni

Nmap fornisce modelli di temporizzazione da T0 (paranoico) a T5 (folle). Il predefinito è T3 (normale). Nelle valutazioni interne dove la discrezione è meno critica, aumenta la velocità:

bash
sudo nmap -T4 -sS -sV -p- 192.168.1.10

Nelle valutazioni esterne dove l'evasione IDS è importante, rallenta la scansione:

bash
sudo nmap -T2 -sS -sV 10.0.1.10

Il modello T4 è il più comunemente utilizzato nelle valutazioni professionali. Fornisce un aumento significativo di velocità senza sovraccaricare le reti target. Evita T5 sulle reti di produzione perché la temporizzazione aggressiva può causare perdita di pacchetti e produrre risultati imprecisi.

Errori comuni da evitare

I principianti spesso commettono gli stessi errori quando iniziano con Nmap. Eseguire scansioni di tutte le porte senza partire dalla scoperta degli host spreca tempo e larghezza di banda. Dimenticare il prefisso sudo fa sì che Nmap ricada sulle scansioni TCP connect invece delle scansioni SYN più veloci. Scansionare senza salvare l'output significa perdere risultati che non puoi riprodurre. Ignorare UDP lascia un punto cieco che gli attaccanti non ignoreranno. Usare temporizzazione aggressiva (T5) su reti congestionate produce risultati inaffidabili perché i timeout generano falsi negativi.

L'errore più significativo è trattare Nmap come uno strumento punta e clicca piuttosto che comprendere cosa fa ogni tipo di scansione a livello di pacchetto. Quando capisci che una scansione SYN funziona manipolando l'handshake TCP, puoi prendere decisioni informate su quale tipo di scansione si adatta a ogni situazione. Quando capisci che la scansione UDP si basa sulle risposte ICMP dalle porte chiuse, comprendi perché richiede così tanto tempo e come ottimizzarla.

Cosa praticare dopo

Nmap è uno strumento che si impara usandolo. Configura un laboratorio domestico con macchine virtuali che eseguono diversi sistemi operativi e servizi. Scansionali sistematicamente. Confronta i risultati delle scansioni SYN con quelli delle scansioni connect e osserva le differenze nelle tue catture Wireshark. Esegui il rilevamento delle versioni contro servizi noti e verifica la precisione. Esplora gli script NSE leggendo la loro documentazione e testandoli contro macchine intenzionalmente vulnerabili come Metasploitable 2 o DVWA.

Impara la riga di comando Linux se non l'hai già fatto, perché tutta la potenza di Nmap viene dal concatenarlo con altri strumenti a riga di comando. Convoglia l'output grepable verso awk per estrarre campi specifici. Usa diff per confrontare i risultati delle scansioni nel tempo e rilevare nuovi servizi. Alimenta l'output XML in framework come Metasploit per i flussi di lavoro di sfruttamento.

Elena completò il suo primo incarico con un report di 47 pagine che documentava ogni host, ogni porta aperta, ogni versione di servizio obsoleta e ogni vulnerabilità che il team aveva sfruttato. Nmap aveva fornito le fondamenta per tutto questo. Lo strumento non aveva richiesto mesi di studio o competenze di programmazione avanzate. Aveva richiesto un terminale, un target che aveva il permesso di scansionare e la volontà di digitare comandi e leggere l'output. La rete ti dice tutto. Devi solo sapere come ascoltare.

Sull'Autore
Daute Delgado, Founder & Bootcamp Director at Unihackers
Daute Delgado

Fondatore di Unihackers

Un decennio a difendere compagnie aeree, SOC e organizzazioni internazionali

Daute ha fondato Unihackers dopo un decennio passato a difendere compagnie aeree, SOC gestiti e organizzazioni internazionali. È Associate C|CISO e voce ricorrente su IA e cybersecurity nei media internazionali. Silver Winner ai Cyber Security Excellence Awards 2021. Insegna come avrebbe voluto che insegnassero a lui: senza rumore, su quello che fanno davvero gli attaccanti, formando professionisti utili dal primo giorno.

Vedi profilo
Inizia il tuo percorso

Pronto ad iniziare la tua carriera nella cybersecurity?

Unisciti a centinaia di professionisti che sono passati alla cybersecurity con il nostro programma pratico.

Inizia il tuo percorso

Pronto ad iniziare la tua carriera nella cybersecurity?

Unisciti a centinaia di professionisti che sono passati alla cybersecurity con il nostro programma pratico.

Ore
360+
Posizioni UE aperte
300K+
Stipendio medio
$85K
Esplora il programma