Introduzione
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 nozioni di base su come utilizzare il comando nmap
per eseguire varie attività di rete.
Installare 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 sulla 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 a seconda del sistema operativo.
Installare Nmap su Ubuntu e Debian
Nmap è disponibile dai repository Ubuntu e Debian predefiniti. Per installarlo, esegui:
sudo apt update
sudo apt install nmap
Installare Nmap su CentOS e Fedora
Su CentOS e derivati di Red Hat vengono eseguiti:
sudo dnf install nmap
Installare Nmap su macOS
Gli utenti macOS possono installare Nmap scaricando il pacchetto di installazione ".dmg" dal sito Nmap o tramite Homebrew:
brew install nmap
Installare 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 dalla riga di comando o avviando il programma Zenmap. Per maggiori informazioni su come usare Nmap su Windows, controlla le istruzioni di utilizzo post-installazione.
Utilizzare Nmap
Nmap viene generalmente utilizzato per controllare la sicurezza della rete, la mappatura della rete, identificare le porte aperte e cercare dispositivi online.
La sintassi semplificata del comando nmap
è la seguente:
nmap [Options] [Target...]
L'esempio più semplice di utilizzo di Nmap è scansionare un singolo target come utente standard senza specificare alcuna opzione:
nmap scanme.nmap.org
Quando il comando nmap viene richiamato come utente non root che non dispone dei privilegi sul pacchetto, nmap
esegue la scansione della connessione TCP. Il flag (-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.80 ( https://nmap.org ) at 2020-12-17 00:27 CET
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.16s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
9929/tcp open nping-echo
31337/tcp open Elite
Nmap done: 1 IP address (1 host up) scanned in 2.36 seconds
L'opzione di scansione più popolare è TCP SYN scan (-sS
) che è più veloce dell'opzione di connessione e funziona con tutti gli stack TCP conformi.
-sS
è attivato per impostazione predefinita quando nmap
viene richiamato come utente con privilegi amministrativi:
sudo nmap 192.168.11.11
Per un output più dettagliato, usa uno dei seguenti flag -v
o -vv
:
sudo nmap -vv 192.168.11.11
Per eseguire una scansione UDP, invoca il comando con l'opzione -sU
come utente root:
sudo nmap -sU 192.168.11.11
Per un elenco completo dei metodi di scansione delle porte, visitare la pagina della documentazione di Nmap .
Nmap supporta anche gli indirizzi IPv6. Per specificare un host IPv6, utilizzare l'opzione -6
:
sudo nmap -6 2a01:4f8:1c1c:c73d::1
Specificare gli 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.11.11 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 eseguire la scansione 192.168.10.1
, 192.168.11.1
, and 192.168.12.1
:
nmap 192.168.10-12.1
Un altro carattere che puoi utilizzare 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 tutte le forme:
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, usa l'opzione list scan (-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 l'opzione --exclude
:
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Specificare e scansionare le porte
Per impostazione predefinita, Nmap esegue una scansione rapida per le 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, utilizzare l'opzione -p-
:
nmap -p- 192.168.11.11
Ogni porta può trovarsi in uno dei seguenti stati:
- open - Il programma in esecuzione sulla porta risponde alla richiesta.
- closed - nessun programma viene eseguito sulla porta e l'host risponde alle richieste.
- filtered - l'host non risponde alla richiesta.
Le porte e gli intervalli di porte vengono specificati con l'opzione -p
.
Ad esempio, per scansionare solo la porta 443, dovresti usare il seguente comando:
nmap -p 443 192.168.11.11
Per specificare più di una porta, separare le porte di destinazione con una virgola:
nmap -p 80,443 192.168.11.11
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.11.11
Tutto combinato:
nmap -p 1-1024,8080,9000 192.168.11.11
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.11.11
Scansione ping
Per eseguire una scansione ping o un rilevamento host, richiamare il comando nmap
con l'opzione -sn
:
sudo nmap -sn 192.168.10.0/24
L'opzione -sn
dice a Nmap solo di scoprire gli host online e di non fare una scansione delle porte. Ciò è utile quando si desidera determinare rapidamente quale host specificato è attivo e in esecuzione.
Disattivare DNS Name Resolution
Il comportamento predefinito di Nmap è eseguire la risoluzione DNS inversa per ogni host scoperto, il che aumenta il tempo di scansione.
Durante la scansione di reti di grandi dimensioni, è una buona idea disabilitare la risoluzione DNS inversa e accelerare le scansioni. Per farlo, richiama il comando con l' -n
opzione:
sudo nmap -n 192.168.10.0/16
Identificare il Sistema operativo, i servizi la versione
Nmap può rilevare il sistema operativo dell'host remoto usando l'impronta digitale dello stack TCP/IP. Per eseguire il rilevamento del sistema operativo, richiamare il comando con l'opzione -O
:
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 6.47 seconds
In genere, i servizi di sistema sono in ascolto su porte standard ben note e riservate a loro. Ad esempio, se la porta 22 che corrisponde al servizio SSH è aperta, presumerai che un server SSH sia in esecuzione sull'host. Tuttavia, non puoi essere assolutamente sicuro perché le persone possono eseguire i servizi su qualsiasi porta desiderano.
Con il rilevamento del servizio e della versione, Nmap ti mostrerà quale programma ascolta sulla porta e la versione del programma.
Per cercare servizio e versione, utilizza l'opzione -sV
:
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 eseguire la scansione per OS, la versione ed eseguire traceroute in un unico comando utilizzando l'opzione -A
:
sudo nmap -A 192.168.10.121
Output di Nmap
Per impostazione predefinita, Nmap stampa le informazioni sullo standard output (stdout).
Se si esegue la scansione di una rete di grandi dimensioni o sono necessarie le informazioni per un utilizzo successivo, è possibile salvare l'output in un file.
Nmap fornisce diversi tipi di output. Per salvare l'output in formato normale, utilizzare l'opzione -oN
seguita dal nome del file:
sudo nmap -sU -p 1-1024 192.168.11.11 -oN output.txt
L'opzione più popolare è salvare l'output in formato XML. Per farlo, utilizza l'opzione -oX
:
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 viene specificato con l'opzione -oG
:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Nmap Scripting Engine
Una delle caratteristiche più potenti di Nmap è il suo motore di scripting. Nmap viene fornito con centinaia di script, 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 le porte host e di scansione.
Si noti che in alcuni paesi non è legale eseguire la scansione di reti senza autorizzazione.