-sL (List Scan)La list scan e` una forma banale di host discovery che
semplicemente elenca ogni host delle reti specificate, senza
inviare alcun pacchetto agli host obbiettivo. Di default Nmap
effettua una risoluzione inversa mediante DNS sugli host per
ottenerne il nome completo. Spesso e` sorprendente vedere quante
informazioni utili possono fornire dei semplici hostname. Ad
esempio, fw.chi.playboy.com e`
il firewall per l'ufficio di Chicago della Playboy Enterprises.
Nmap mostra anche il numero totale di indirizzi IP alla fine della
scansione. La lista scan e` un buon controllo per essere sicuri di
avere gli indirizzi IP corretti per la propria scansione. Se gli
host mostrano nomi di dominio non conosciuti, vale la pena
indagare oltre per evitare di scansionare la rete dell'azienda
sbagliata.
Poiche` l'idea e` quella di stampare semplicemente una lista
di obbiettivi, le opzioni per funzionalita` di livello piu` alto
(come ad esempio il port scanning, le indagini sul tipo di sistema
operativo in esecuzione o il ping scan non possono essere
combinate con questa. Se si vuole disabilitare il ping scan e
mantenere allo stesso tempo la possibilita` di utilizzare
funzionalita` di alto livello, si legga la sezione sull'opzione
-P0.
-sP (Ping Scan)Questa opzione indica a Nmap di effettuare
solo un ping scan (ovvero un host discovery)
e di mostrare gli host che hanno risposto. Nessun test aggiuntivo
(come ad esempio port scan o OS detection) viene effettuato.
Quest'azione e` un gradino piu` invadente della list scan, e puo`
essere usata spesso per lo stesso scopo. Essa permette una
mappatura di una rete obbiettivo senza attrarre molta attenzione.
Sapere quanti host sono attivi e` piu` utile ad un attaccante
rispetto ad una semplice list scan di ogni indirizzo IP e nome di
host.
>Gli amministratori di sistemi trovano spesso questa
opzione utile allo stesso modo. Puo` essere usata facilmente per
enumerare le macchine disponibili in una rete o tenere sotto
osservazione la disponibilita` di un singolo server. Questo
approccio viene anche chiamato "ping sweep", ed e` piu` affidabile
di un ping all'indirizzo broadcast poiche` molti host non
rispondono alle richieste di questa categoria.
L'opzione -sP invia di default un echo
request ICMP e un pacchetto TCP alla porta 80. Quando viene
eseguita da un utente non privilegiato, viene inviato un pacchetto
SYN (usando la chiamata connect() ) alla porta 80
dell'obbiettivo. Quando invece un utente privilegiato prova ad
effettuare una scansione all'interno di una rete locale, vengono
usate richieste ARP (-PR) a meno che non venga
specificata l'opzione --send_ip. L'opzione
-sP puo` essere usata in combinazione con
qualsiasi tipo di discovery probe (ovvero la famiglia di opzioni
-P*, tranne -P0) per avere una
migliore flessibilita`. Se viene usato uno qualsiasi di questi
probe con opzioni sul numero di porta, allora i probe di default
(ovvero ACK ed echo request) vengono annullati. Si raccomanda di
usare queste tecniche evolute se ci sono dei firewall restrittivi
tra l'host che lancia Nmap e le reti di destinazione, altrimenti
le destinazioni potrebbero non essere raggiunte nel caso in cui il
firewall dovesse bloccare i probe o le risposte a questi
ultimi.
-P0 (No ping)Questa opzione evita del tutto il passaggio di ricerca degli
host di Nmap. Normalmente Nmap usa questo passaggio per trovare le
macchine attive da sottoporre ad una scansione piu` approfondita.
Di default, Nmap esegue un probing approfondito (come ad esempio
un port scan, una version detection dei servizi o un Operating
System detection) solo su quegli host che sono trovati attivi.
Disabilitare l'host discovery attraverso l'opzione
-P0 obbliga Nmap a tentare la scansione richiesta
su tutti gli host destinazione specificati.
Quindi se si specifica sulla linea di comando una rete di
destinazione di classe B (in CIDR /16) verranno sottoposti a
scansione tutti i 65 535 indirizzi IP. Il secondo carattere
nell'opzione -P0 e` uno zero, non la lettera O. A
differenza del list scan, nel quale l'host discovery viene
saltato, anziche` interrompersi e mostrare la lista di
destinazioni Nmap continua ad eseguire le funzioni richieste come
se ogni IP di destinazione fosse attivo.
-PS [portlist] (TCP SYN Ping)Questa opzione invia un pacchetto TCP vuoto con il flag SYN
attivo. La porta di destinazione di default e` la 80
(configurabile durante la compilzione cambiando il parametro di
define DEFAULT_TCP_PROBE_PORT nel file nmap.h), ma in questo caso si puo`
specificare un'altra porta come parametro. Si puo` anche
specificare una lista di porte separata da virgola (ad esempio
-PS22,23,25,80,113,1050,35000), nel cuo caso si
tentera` un probe verso ogni porta in parallelo.
Il flag SYN indica al sistema remoto che si sta tentando di
stabilire una connessione. Normalmente la porta di destinazione
dovrebbe essere chiusa, e un pacchetto di RST (reset) viene
mandato indietro. Se la porta fosse aperta, il destinatario
effettuera` il secondo passo della connessione TCP a tre vie
(3-way-handshake) rispondendo con un pacchetto TCP SYN/ACK. La
macchina che sta eseguendo Nmap interrompera` la connessione
inviando un pacchetto RST al posto di mandare l'usuale pacchetto
RST che completerebbe l'handshake e stabilirebbe una connessione
completa. Il paccheto RST viene mandato dal kernel della macchina
che sta eseguendo Nmap, non da Nmap stesso.
A Nmap non interessa se la porta e` aperta o chiusa. In ogni
caso l'RST o il SYN/ACK ricevuti indicano che l'host e`
disponibile e risponde alle connessioni.
Nelle macchine UNIX solo l'utente privilegiato root generalmente e` abilitato all'invio
e alla ricezione di pacchetti TCP "raw" (non formattati, grezzi).
Per quanto riguarda gli utenti non privilegiati si deve ricorrere
alla system call connect(), la quale viene lanciata su ogni porta
di destinazione. Questo ha l'effetto di inviare pacchetti SYN
all'host di destinazione come per stabilire una connessione. Se la
connect() ritorna rapidamente con un messaggio di successo o con
un messaggio di errore ECONNREFUSED significa che lo stack TCP
sottostante deve aver ricevuto un SYN/ACK o un RST e l'host viene
marcato come disponibile. Se il tentativo di connessione viene
lasciato in sospeso fino al raggiungimento di un certo timeout
l'host e` marcato come down o non disponibile. Questa scorciatoia
si usa anche per le connessioni IPv6, poiche` la costruzione di
pacchetti IPv6 raw non e` ancora supportata in Nmap.
-PA [portlist] (TCP ACK Ping)Il ping TCP ACK e` molto simile al ping SYN appena discusso.
La differenza, come si puo` facilmente indovinare, consiste nel
fatto che viene sollevato il flag TCP ACK al posto del SYN. Un
tale paccketto ACK finge di confermare dei dati inviati in una
connessione TCP gia` stabilita, anche se tale connessione non
esiste. In questo modo un host remoto rispondera` sempre con un
pacchetto RST, svelando cosi` la propria esistenza e il fatto che
siano attivi.
L'opzione -PA usa la stessa porta di
default del SYN probe (ovvero la porta 80) e puo` ricevere in
input un elenco di porte di destinazione nello stesso formato. Se
un utente non privilegiato tenta quest'approccio, o se viene
specificato un target IPv6, si usa la scorciatoia della connect()
spiegata in precedenza. Questa strategia della connect() non e`
ottimale perche` in ogni caso la connect() invia un paccketto SYN
e non un ACK.
La ragione per offrire entrambi i tipi di probe (SYN e ACK)
e` quella di massimizzare le possibilita` di bypassare firewall.
Molti amministratori configurano router e semplici firewall per
bloccare pacchetti SYN in arrivo tranne quelli destinati a servizi
pubblici come il sito web aziendale o il mail server. Questo
impedisce ogni altro tipo di connessione in entrata garantendo al
tempo stesso agli utenti di effettuare connessioni verso l'esterno
senza incontrare ostacoli. Questo approccio "non-stateful"
utilizza poche risorse sul firewall/router ed e` largamente
supportato da filtri software e hardware. (per "non-stateful" si
intende in questo caso la capacita` di un firewall di tenere
traccia delle connessioni che lo attraversano, NdT). Il firewall
di GNU/Linux conosciuto come Netfilter/iptables offre l'opzione
--syn per implementare questo approccio
"stateless". Quando un firewall implementa regole di questo tipo,
un probe SYN (-PS) viene facilmente bloccato
quando viene mandato ad una porta chiusa. In tali casi un probe
ACK passa indisturbato come se non vi fossero quelle
regole.
Un altro tipo comune di firewall utilizza regole "stateful"
che lasciano cadere ("drop") pacchetti non attesi. Questa
caratteristica era inizialmente disponibile solo su firewall di
fascia alta, anche se e` diventata sempre piu` comune nel corso
degli anni. Il sistema Netfilter/iptables supporta questa mediante
l'opzione --state, la quale marca pacchetti a
seconda dello stato della connessione. Un probe SYN funzionera`
piu` facilmente verso un tale sistema, poiche` pacchetti ACK non
attesi sono generalmente riconosciuti come non validi e lasciati
cadere. Una soluzione a questa situazione poco piacevole e` quella
di inviare emtrambe le tipologie di probe specificando le opzioni
-PS e -PA.
-PU [portlist] (UDP Ping)Un'altra opzione di host discovery e` il ping UDP, il quale
manda un pacchetto UDP vuoto alle porte indicate(a meno che non
venga specificata l'opzione --data_length).
L'elenco di porte va specificato nello stesso formato gia`
discusso in precedenza nelle opzioni -PS e
-PA. Se non si specifica alcuna porta viene usata
la 31338 di default. Questo valore puo` essere impostato durante
la compilazione cambiando il parametro DEFAULT_UDP_PROBE_PORT nel
file nmap.h. Si usa di
default una porta poco comune perche` inviare dati ad una porta
gia` aperta e` spesso non desiderabile per questo tipo particolare
di scansione.
Una volta raggiunta una porta UDP chiusa sulla macchina di
destinazione, il probe UDP dovrebbe provocare un pacchetto ICMP di
"port unreachable" (porta irraggiungibile). Questo indica a Nmap
che l'host e` funzionante e disponibile. Altri tipi di pacchetti
ICMP di errore, come ad esempio host o rete "unreachable" (non
disponibile) o "TTL exceeded" (superato il tempo di vita del
pacchetto) indicano un host non funzionante o irraggiungibile. Una
mancanza di risposta viene interpretata alla stessa maniera. Se si
raggiunge una porta aperta la maggior parte dei servizi
semplicemente ignorano il pacchetto vuoto e non rimandano alcuna
risposta. Questo spiega perche` il probe di default e` la porta
31338, la quale si usa molto raramente. Pochi servizi, tra i quali
"chargen", rispondono a un pacchetto UDP vuoto, rivelando cosi` a
Nmap la disponibilita` della macchina in questione.
Il vantaggio primario di questo tipo di scansione e` che
riesce a bypassare firewall e filtri che controllano solo
pacchetti TCP. Ad esempio, una volta avevo un router a banda larga
wireless Linksys BEFW11S4. L'interfaccia esterna di questa
periferica filtrava tutte le porte TCP di default, ma i probee UDP
provocavano messaggi di "port unreachable" rivelando cosi`
l'esistenza della device.
-PE; -PP;
-PM (ICMP Ping Types)In aggiunta ai meno comuni tipi di host discovery TCP e UDP
discussi in precedenza, Nmap puo` anche mandare i pacchetti
standard come il famoso programma ping. Nmap manda un pacchetto ICMP
type 8 ("echo request") all'indirizzo IP di destinazione,
aspettandosi un type 0 ("echo reply") di ritorno dagli host
disponibili. Sfortunatamente per chi deve scoprire la topologia di
una rete, molti host e firewall ora bloccano questo tipo di
pacchetti anziche` rispondere come richiesto dall'RFC 1122.
Per questa ragione le scansione basate solo su ICMP sono raramente
abbastanza affidabili nei riguardi di destinzioni sconosciute su
Internet. Tuttavia per i sistemisti di rete che devono tenere
sotto controllo una rete interna, esse possono essere un approccio
pratico ed efficiente. Si usi l'opzione -PE per
abilitare questo comportamento di echo request.
Mentre la "echo request" e` la richiesta standard del ping
ICMP, Nmap non si ferma qui. Lo standard ICMP (RFC 792)
specifica inoltre i pacchetti "timestamp request", "information
request" e "address mask request" (rispettivamente "richiesta di
timestamp", ovvero data e ora, "richiesta di informazioni" e
"richiesta della maschera di rete") mediante i codici ICMP 13, 15
e 17. Mentre lo scopo dichiarato di questo tipo di richieste e`
quello di sapere informazioni quali la maschera di rete e l'ora
corrente, essi possono facilmente essere usati per l'host
discovery. Un sistema che risponde e` funzionante e disponibile.
Nmap non implementa allo stato attuale pacchetti di information
request, poiche` in genere non sono supportati comunemente. L'RFC
1122 specifica che “un host NON DOVREBBE implementare questi
messaggi”. (il maiuscolo negli RFC indica comportamenti
precisi). Il timestamp (data e ora) e le richieste di maschera di
rete possono essere inviate rispettivamente mediante le opzioni
-PP e -PM. Una risposta di tipo
timestamp (codice ICMP 14) o di tipo address mask (codice 18)
rivela che un host e` disponibile. Queste due richieste possono
essere utili qualora un amministratore dovesse bloccare i
pacchetti di "echo request" ma dimenticarsi che altre query ICMP
possono essere usate per lo stesso scopo.
-PR (ARP Ping)Una delle situazioni piu` comuni di utilizzo di Nmap e` la
scansione di una LAN ethernet. Nella maggior parte delle LAN,
specialmente quelle in cui viene usato il benedetto intervallo di
indirizzi privati specificato dall'RFC1918, la maggior parte degli
indirizzi IP e` inutilizzato. Quando Nmap prova ad inviare
pacchetti IP raw come le "echo request" ICMP, il sistema operativo
deve determinare l'indirizzo hardware (ARP) corrispodente
all'indirizzo IP di destinzione, in modo da poter indirizzare
correttamente il frame Ethernet. Questo e` spesso lento e
problematico, in quanto i sistemi operativi non sono stati scritti
prevedendo di dover fare milioni di richieste ARP verso host
inesistenti in un breve lasso di tempo.
L'ARP scan lascia a Nmap e ai suoi algoritmi ottimizzati
l'incarico delle richieste ARP. Nel caso in cui si riceva una
risposta, Nmap non si deve neanche preoccupare dei ping basati su
ICMP perche` a questo punto sa gia` che l'host e` raggiungibile.
Questo rende l'ARP scan molto veloce e molto piu` affidabile delle
normali scansioni basate su IP. Questo e` il comportamento di
default quando si deve effettuare uno scan su host che Nmap
riconosce come presenti nella rete locale. Anche se vengono
specificati differenti tipi di ping (come -PI o
-PS), Nmap usa comunque ARP per ogni target che
e` sulla stessa LAN. Se non si vuole assolutamente un ARP scan,
specificare l'opzione --send_ip.
-n (No DNS resolution)Indica a Nmap di non effettuare mai una
risoluzione inversa del nome mediante DNS sull'indirizzo IP
rilevato. Poiche` il DNS e` spesso lento, questo rende l'intero
processo di scansione piu` veloce.
-R (DNS resolution for all targets)Indica a Nmap di effettuare sempre la
risoluzione inversa dei nomi mediante DNS. Generalmente questo
viene effettuato solo quando un host viene rilevato come
attivo.
--system-dns (Use system DNS resolver)Di default Nmap risolve gli indirizzi IP mandando richieste
direttamente ai name servers (server dei nomi) configurati sulla
macchina su cui e` in esecuzione Nmap. Molte richieste (spesso
dell'ordine delle dozzine) sono effettuate in parallelo per
migliorare le performance. Si specifichi quest'opzione se si vuole
usare il proprio DNS (richiedendo un indirizzo IP alla volta
usando la system call getnameinfo() ). Questo e` piu` lento e
raramente utile a meno che non ci sia un bug nel codice di
risoluzione dei nomi di Nmap -- per favore si contattino gli
sviluppatori se questo e` il caso. Il resolver di sistema e`
sempre usato per le scansioni su IPv6.
-
--dns-servers <server1[,server2],...>
(Server da usare per le reverse DNS query)
Di default Nmap cerchera` di determinare i server DNS da usare per le reverse query usando il file resolv.conf (UNIX) o il registro (Win32). In alternativa si puo` usare quest'opzione per indicare server alternativi. Tuttavia quest'opzione viene ignorata nel caso si specifichi anche --system-dns o una scansione IPv6. L'uso di piu` server DNS e` spesso piu` veloce e meno visibile rispetto all'uso di un unico server DNS. Le performance migliori si ottengono spesso specificando tutti i server DNS authoritative per lo spazio IP di destinazione.