Come funziona lo scanner Nmap?
Nmap è uno scanner di porte molto efficace, noto come lo strumento de-facto per trovare porte e servizi aperti.
Nmap esegue diverse fasi al fine di raggiungere il suo scopo:
Nmap host discovery
La prima fase di una scansione delle porte è host discovery. Qui lo scanner tenta di verificare se l’host di destinazione è attivo prima di sondare effettivamente le porte aperte., Questa fase è necessaria principalmente durante la scansione di una vasta gamma di indirizzi IP al fine di ottimizzare il tempo per l’intera scansione. Non ha alcun senso perdere tempo a sondare le porte aperte su un host “morto” (es. non c’è server in un determinato IP).
Tuttavia, questa fase può talvolta portare a non trovare alcune porte aperte perché la “liveness” dell’host non può essere sempre rilevata correttamente (es. a causa di firewall che consentono l’accesso solo a una determinata porta e rilasciano tutto il resto)., In questo caso hai l’opzione “Non eseguire il ping dell’host” (o Nmap-Pn) che salta la fase di scoperta dell’host e fa solo la scansione delle porte.
Rilevamento porte aperte
Per determinare se una porta TCP è aperta, Nmap sfrutta il meccanismo di handshake a tre vie utilizzato da TCP per stabilire una connessione tra un client e un server.
Esistono due metodi principali per rilevare le porte TCP aperte:
Connect-Scan (Nmap-sT)
In questo caso Nmap esegue una stretta di mano completa a tre vie con il server di destinazione, stabilendo una connessione TCP completa., La sequenza di pacchetti per questo tipo di scansione è: SYN
, SYN-ACK
, ACK
, RST
.
Il vantaggio di questo metodo è che non richiede l’accesso root/amministratore sulla macchina client, mentre lo svantaggio è che è piuttosto rumoroso e il server può registrare le connessioni tentate da altri host.
SYN-Scan (Nmap-sS)
Questo è il metodo di scansione predefinito, abilitato anche nel nostro scanner., In questo metodo, Nmap esegue una connessione TCP semiaperta, sapendo che la porta è aperta immediatamente dopo che il server risponde con SYN-ACK
. La sequenza di pacchetti in questo caso è:SYN
,SYN-ACK
,RST
.
Il vantaggio di questo metodo è che è più furtivo di un Connect-Scan ma richiede che Nmap venga eseguito con privilegi di root/amministratore (perché ha bisogno di creare socket raw di basso livello per inviare i singoli pacchetti, invece di lasciare lo stack del kernel per fare la connessione).,
Rilevamento del servizio Nmap
Dopo che Nmap ha trovato un elenco di porte, può eseguire un controllo più approfondito per determinare il tipo esatto di servizio in esecuzione su quella porta, inclusa la sua versione. Questo è necessario perché è possibile che i servizi comuni vengano eseguiti su porte non standard(es. un server web in esecuzione sulla porta 32566). Il rilevamento del servizio è abilitato con il comando Nmap -sV
.
Nmap effettua il rilevamento del servizio inviando un numero di sonde predefinite per vari protocolli alla porta di destinazione per vedere se risponde di conseguenza., Ad esempio, invia:
- SSL CLIENT HELLO – per controllare i servizi SSL
- HTTP GET request – per controllare il servizio HTTP
- OPZIONI SIP – per controllare il protocollo SIP/RTSP
- e molti altri
Puoi trovare maggiori dettagli su Nmap e le sue funzionalità interne nel nostro post sul blog All’interno di Nmap, lo scanner di porte più famoso al mondo.
Una breve storia di Nmap Port Scanner
Nmap è stato introdotto per la prima volta nel settembre 1997 nell’articolo The Art of Scanning, nella nota rivista Phrack, dal suo autore – Fyodor (Gordon Lyon).,
Dal momento che ha ottenuto un sacco di notorietà, Nmap è stato fatto riferimento in più libri ed è stato utilizzato anche in diversi film artistici come strumento di hacking (es. matrice).
Si è notevolmente evoluto nel tempo (la versione attuale è 7.70) da un semplice port scanner a uno strumento robusto contenente funzionalità avanzate di fingerprinting e un complesso motore di scripting. Nmap ha attualmente più di 500 script che possono essere eseguiti dopo che il rilevamento del servizio è stato disabilitato, coprendo aspetti come il rilevamento avanzato del servizio, la forzatura bruta e l’identificazione di alcune vulnerabilità.