Nmap è un potente strumento di scansione della rete per audit di sicurezza e test di penetrazione. È uno degli strumenti essenziali utilizzati dagli amministratori di rete per la risoluzione dei problemi di connettività di rete e la scansione delle porte.
Nmap può anche rilevare l'indirizzo Mac, il tipo di sistema operativo, la versione del servizio e molto altro.
Questo articolo spiega le basi di come usare nmap
comando per eseguire varie attività di rete.
Installazione di Nmap #
Nmap è un programma multipiattaforma che può essere installato su tutti i principali sistemi operativi. Inizialmente è stato rilasciato come strumento solo per Linux e successivamente è stato portato su altri sistemi come BSD, Windows e macOS.
Se preferisci una GUI rispetto alla riga di comando, Nmap ha anche un'interfaccia utente grafica chiamata Zenmap.
I pacchetti binari ufficiali sono disponibili per il download dalla pagina di download di Nmap.
La procedura di installazione è semplice e varia in base al tuo sistema operativo.
Installazione di Nmap su Ubuntu e Debian #
Nmap è disponibile dai repository Ubuntu e Debian predefiniti. Per installarlo, esegui:
sudo apt update
sudo apt install nmap
Installazione di Nmap su CentOS e Fedora #
Su CentOS e altri derivati di Red Hat esegui:
sudo dnf install nmap
Installazione di Nmap su macOS #
Gli utenti macOS possono installare Nmap scaricando il pacchetto di installazione “.dmg” dal sito Nmap o tramite Homebrew:
brew install nmap
Installazione di Nmap su Windows #
La versione Windows di Nmap ha alcune limitazioni ed è generalmente un po' più lenta della versione UNIX.
L'opzione più semplice per installare Nmap su Windows è scaricare ed eseguire il file exe di autoinstallazione.
Puoi eseguire Nmap su Windows sia dalla riga di comando che avviando il programma Zenmap. Per ulteriori informazioni su come utilizzare Nmap su Windows, controlla le istruzioni per l'uso dopo l'installazione.
Utilizzo di Nmap #
Nmap viene in genere utilizzato per controllare la sicurezza della rete, la mappatura della rete, identificare le porte aperte e cercare dispositivi online.
La sintassi semplificata di nmap
il comando è il seguente:
nmap [Options] [Target...]
L'esempio più semplice dell'utilizzo di Nmap è la scansione di un singolo target come utente standard senza specificare alcuna opzione:
nmap scanme.nmap.org
Quando viene invocato come utente non root che non dispone dei privilegi del pacchetto raw, nmap
esegue la scansione della connessione TCP. Il (-sT
) è attivato per impostazione predefinita in modalità non privilegiata.
L'output sarà simile a questo, comprese le informazioni di base sulla scansione e un elenco di porte TCP aperte e filtrate.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
1025/tcp open NFS-or-IIS
1080/tcp open socks
8080/tcp open http-proxy
8081/tcp open blackice-icecap
Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
L'opzione di scansione più popolare è la scansione TCP SYN (-sS
) che è più veloce dell'opzione di connessione e funziona contro tutti gli stack TCP conformi.
-sS
è attivato per impostazione predefinita quando nmap
viene invocato come utente con privilegi di amministratore:
sudo nmap 192.168.10.121
Per un output più dettagliato, usa aumentare la verbosità con -v
o -vv
:
sudo nmap -vv 192.168.10.121
Per eseguire una scansione UDP, invocare il comando con (-sU
) opzione come utente root:
sudo nmap -sU 192.168.10.121
Per un elenco completo dei metodi di scansione delle porte, visita la pagina della documentazione di Nmap.
Nmap supporta anche gli indirizzi IPv6. Per specificare un host IPv6, utilizzare -6
opzione:
sudo nmap -6 fd12:3456:789a:1::1
Specifica degli host di destinazione #
Nmap tratta tutti gli argomenti che non sono opzioni come host di destinazione.
Gli argomenti sono considerati opzioni se iniziano con un trattino singolo o doppio (-
, --
). L'opzione più semplice è passare uno o più indirizzi di destinazione o nomi di dominio:
nmap 192.168.10.121 host.to.scan
Puoi utilizzare la notazione CIDR per specificare un intervallo di rete:
nmap 192.168.10.0/24
Per specificare un intervallo di ottetti, utilizzare il carattere trattino. Ad esempio, per scansionare 192.168.10.1
, 192.168.11.1
e 192.168.12.1
:
nmap 192.168.10-12.1
Un altro carattere che puoi usare per specificare gli obiettivi è la virgola. Il comando seguente ha come target gli stessi host di quello sopra:
nmap 192.168.10,11,12.1
Puoi combinare tutti i moduli:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Per assicurarti di aver specificato gli host corretti prima della scansione, utilizza l'opzione di scansione dell'elenco (-sL
), che elenca solo le destinazioni senza eseguire una scansione:
nmap -sL 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Se desideri escludere i target inclusi nell'intervallo specificato, utilizza --exclude
opzione:
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Specifica e scansione delle porte #
Per impostazione predefinita, Nmap esegue una scansione rapida delle 1000 porte più popolari. Queste porte non sono le prime 1000 porte consecutive, ma le 1000 porte più comunemente utilizzate che vanno da 1 a 65389.
Per cercare tutte le porte da 1 a 65535, usa il -p-
opzione:
nmap -p- 192.168.10.121
Ciascuna porta può trovarsi in uno dei seguenti stati:
- open - Il programma in esecuzione sulla porta risponde alla richiesta.
- chiuso:nessun programma viene eseguito sulla porta e l'host risponde alle richieste.
- filtrato - L'host non risponde alla richiesta.
Ad esempio, per scansionare solo la porta 443, dovresti usare il seguente comando:
nmap -p 443 192.168.10.121
Per specificare più di una porta, separa le porte di destinazione con una virgola:
nmap -p 80,443 192.168.10.121
Gli intervalli di porte possono essere specificati con il simbolo del trattino. Ad esempio, per eseguire la scansione di tutte le porte UDP comprese tra 1 e 1024, eseguire:
sudo nmap -sU -p 1-1024 192.168.10.121
Tutto combinato:
nmap -p 1-1024,8080,9000 192.168.10.121
Le porte possono anche essere specificate utilizzando il nome della porta. Ad esempio, per cercare la porta 22, ssh, puoi usare:
nmap -p ssh 192.168.10.121
Scansione ping #
Per eseguire una scansione ping o un'individuazione dell'host, invocare nmap
comando con il -sn
opzione:
sudo nmap -sn 192.168.10.0/24
Il -sn
l'opzione dice a Nmap solo di scoprire host online e di non eseguire una scansione delle porte. Ciò è utile quando si desidera determinare rapidamente quale host specificato è attivo e funzionante.
Disabilitazione risoluzione nome DNS #
Il comportamento predefinito di Nmap è di eseguire la risoluzione DNS inversa per ogni host rilevato, il che aumenta il tempo di scansione.
Quando si scansionano reti di grandi dimensioni, è una buona idea disabilitare la risoluzione del DNS inverso e accelerare le scansioni. Per farlo, invoca il comando con -n
opzione:
sudo nmap -n 192.168.10.0/16
Rilevamento sistema operativo, servizio e versione #
Nmap è in grado di rilevare il sistema operativo dell'host remoto utilizzando il fingerprinting dello stack TCP/IP. Per eseguire il rilevamento del sistema operativo, invoca il comando con -O
opzione:
sudo nmap -O scanme.nmap.org
Se Nmap è in grado di rilevare il sistema operativo host, stamperà qualcosa come di seguito:
...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
In genere, i servizi di sistema sono in ascolto su porte standard note e ad esse riservate. Ad esempio, se la porta 22 che corrisponde al servizio SSH è aperta, si presume che un server SSH sia in esecuzione sull'host. Tuttavia, non puoi essere assolutamente sicuro perché le persone possono eseguire servizi su qualsiasi porta desiderino.
Con il rilevamento del servizio e della versione, Nmap ti mostrerà quale programma è in ascolto sulla porta e la versione del programma.
Per cercare il servizio e la versione, usa il -sV
opzione:
sudo nmap -sV scanme.nmap.org
...
PORT STATE SERVICE VERSION
19/tcp filtered chargen
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
9929/tcp open nping-echo Nping echo
31337/tcp open tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...
Puoi anche cercare OS, versioni ed eseguire traceroute in un comando usando il -A
opzione:
sudo nmap -A 192.168.10.121
Uscita Nmap #
Per impostazione predefinita, Nmap stampa le informazioni sullo standard output (stdout).
Se esegui la scansione di una rete di grandi dimensioni o hai bisogno delle informazioni per un utilizzo successivo, puoi salvare l'output in un file.
Nmap fornisce diversi tipi di output. Per salvare l'output in formato normale, usa -oN
opzione seguita dal nome del file:
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
L'opzione più popolare è salvare l'output in formato XML. Per farlo, usa -oX
opzione:
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
Un altro formato utile è l'output grepable, che può essere analizzato con gli strumenti Unix standard come grep
, awk
e cut
. L'output grepable è specificato con -oG
opzione:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Motore di scripting Nmap #
Una delle caratteristiche più potenti di Nmap è il suo motore di scripting. Nmap viene fornito con centinaia di script e puoi anche scrivere i tuoi script in lingua Lua.
Puoi utilizzare gli script per rilevare malware e backdoor, eseguire attacchi di forza bruta e altro ancora.
Ad esempio, per verificare se un determinato host è compromesso puoi utilizzare:
nmap -sV --script http-malware-host scanme.nmap.org
Conclusione #
Nmap è uno strumento open source utilizzato principalmente dagli amministratori di rete per scoprire host e scansionare le porte.
Tieni presente che in alcuni paesi non è legale eseguire la scansione delle reti senza autorizzazione.