Target Specification (Specifica degli obiettivi)

Ogni cosa sulla linea di comando di Nmap che non è un'opzione (o un argomento di un'opzione) è considerato come una specifica di un host obiettivo. Il caso più semplice consiste nello specificare semplicemente un indirizzo IP o un nome di host per la scansione.

A volte può essere utile scansionare un'intera rete di host adiacenti. Per questo, Nmap supporta l'indirizzamento CIDR. Si possono aggiungere /<numero di bit> a un indirizzo IP o a un nome di host e Nmap eseguirà la scansione su ogni indirizzo IP per il quale i primi <numero di bit> sono identici a quelli specificati nell'IP o nel nome di host fornito. Ad esempio, 192.168.10.0/24 eseguirà la scansione sui primi 256 host tra 192.168.10.0 (in binario: 11000000 10101000 00001010 00000000) e 192.168.10.255 (in binario: 11000000 10101000 00001010 11111111), estremi inclusi. 192.168.10.40/24 fa esattamente la stessa cosa. Dato che l'host scanme.nmap.org corrisponde all'indirizzo IP 205.217.153.62, la specifica scanme.nmap.org/16 eseguirebbe la scansione sui 65.536 indirizzi IP tra 205.217.0.0 e 205.217.255.255. Il più piccolo valore permesso è /1, che effettua la scansione su metà Internet. Il valore maggiore è 32, che effettua la scansione solo sull'host o sull'IP specificato poiché tutti i bit di indirizzo sono fissati.

La notazione CIDR è breve ma non sempre abbastanza flessibile. Ad esempio, si potrebbe voler controllare 192.168.0.0/16 ma saltando qualsiasi IP termini con .0 o con .255 perché sono usati generalmente come indirizzi di broadcast. Nmap supporta questa funzione attraverso l'indirizzamento per intervalli di ottetti. Anziché specificare un normale indirizzo IP è possibile specificare una lista di valori o intervalli di valori separati da virgola per ogni ottetto. Ad esempio, 192.168.0-255.1-254 salterà tutti gli indirizzi nell'intervallo che termina per .0 o .255, mentre 192.168.3-5,7.1 eseguirà la scansione dei quattro indirizzi 192.168.3.1, 192.168.4.1, 192.168.5.1 e 192.168.7.1. Entrambi i valori limite possono essere omessi; i valori di default sono 0 a sinistra e 255 a destra. Usare - da solo equivale a 0-255, ma ricorda di usare 0- nel primo ottetto così da non fare sembrare l'obiettivo un'opzione sulla riga di comando. Gli intervalli non devono necessariamente essere limitati agli ottetti finali: una specifica come 0-255.0-255.13.37 effettuerà una scansione su tutta Internet per ogni indirizzo IP che termina per 13.37. Questa tipologia di campionamento può essere utile per ricerche e sondaggi su tutta la rete Internet.

Indirizzi IPV6 possono essere indicati solo mediante il loro indirizzo IPv6 completo o il loro hostname. L'indirizzamento CIDR e gli intervalli di ottetti non sono ancora supportati per IPv6.

Gli indirizzi IPv6 con un non-global scope hanno bisogno di un ID di zona come suffisso. Sui sistemi Unix, questo è rappresentato dal simbolo percentuale (%) seguito dal nome di un'interfaccia; un indirizzo completo potrebbe essere fe80::a8bb:ccff:fedd:eeff%eth0. Su Windows, si usa l'identificativo numerico dell'interfaccia al posto del suo nome: fe80::a8bb:ccff:fedd:eeff%1. Puoi vedere la lista degli identificativi numerici con il comando netsh.exe interface ipv6 show interface.

Nmap accetta più indirizzi di obiettivi sulla linea di comando ed essi non devono essere necessariamente indicati nello stesso modo. Il comando nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- fa esattamente ciò che ci si aspetta.

Così come gli obiettivi sono generalmente indicati sulla linea di comando, anche le seguenti opzioni sono disponibili per la selezione degli obiettivi:

-iL <inputfilename> (Input from list)

Legge gli obiettivi da <inputfilename>. Inserire una grossa lista di host è spesso scomodo sulla linea di comando, anche se spesso è una necessità comune. Ad esempio, un server DHCP potrebbe esportare un elenco di 10.000 leases che si potrebbero voler controllare. Oppure si vogliono controllare tutti gli indirizzi IP di una rete tranne quelli presenti nel DHCP per individuare eventuali IP statici non autorizzati. È sufficiente generare la lista di host da controllare e passarla a Nmap come argomento dell'opzione -iL. Ogni elemento può essere in uno qualsiasi dei formati accettati da Nmap sulla linea di comando (indirizzo IP, nome dell'host, notazione CIDR, IPv6 o intervalli di indirizzi). Ogni elemento dev'essere separato da uno o più spazi, indentazioni (tabulazioni) o caratteri di a-capo. Si può usare un trattino (-) come nome di file se si vuole che Nmap legga gli host dallo standard input piuttosto che da un file esistente.

L'<inputfilename> può contenere commenti. Ogni commento inizia con # e finisce con un carattere di a-capo.

-iR <num hosts> (Choose random targets)

Durante certe indagini su tutta Internet o altri tipi di ricerca, si potrebbe desiderare di scegliere gli obiettivi in maniera casuale. L'argomento <num hosts> indica a Nmap quanti indirizzi IP generare. Gli indirizzi privati, multicast o i pool di indirizzi non allocati vengono automaticamente saltati. Si può specificare l'argomento 0 per una scansione senza fine. Va ricordato che alcuni amministratori di rete non apprezzano scansioni non autorizzate delle loro reti e potrebbero lamentarsi. Usare questa opzione a proprio rischio e pericolo! Se in un pomeriggio piovoso ci si trova ad essere annoiati, si può provare questo comando nmap -sS -PS80 -iR 0 -p 80 per trovare in maniera casuale dei server web sui quali navigare.

--exclude <host1>[,<host2>[,...]] (Exclude hosts/networks)

Questa opzione specifica un elenco, separato da virgola, di obiettivi da escludere dalla scansione anche se sono parte dell'intervallo di rete specificato. La lista va specificata nella notazione usuale di Nmap, ovvero può includere nomi di host, blocchi di indirizzi specificati mediante notazione CIDR, intervalli di ottetti, etc. Questo può essere utile quando la rete che si vuole controllare include server intoccabili o di vitale importanza, sistemi che sono conosciuti per reagire in maniera negativa ad eventuali scansioni, o sottoreti amministrate da altri.

--excludefile <exclude_file> (Exclude list from file)

Questa opzione offre le stesse funzionalità dell'opzione--exclude, con la differenza che gli obiettivi da escludere dalla scansione sono elencate in un <exclude_file> (separate da spazi bianchi, a-capo o tabulazioni) anziché sulla linea di comando.

L'<exclude_file> può contenere commenti. Ogni commento inizia con # e finisce con un carattere di a-capo.