OS Detection

Una delle più famose caratteristiche di Nmap è la possibilità di identificare da remoto il sistema operativo di un host attraverso il fingerprint dello stack TCP/IP. Nmap invia una serie di pacchetti TCP ed UDP all'host remoto ed esamina ogni bit ricevuto in risposta. Dopo aver effettuato decine di test come "il TCP ISN sampling", il "TCP option support and ordering", il "IP ID Sampling" ed il controllo del window size iniziale, Nmap compara i risultati con il suo database (nmap-os-db) contenente più di 2.600 fingerprint conosciuti e ne visualizza i dettagli se ne trova riscontro. Ogni fingerprint comprende una descrizione del sistema operativo ed una classificazione che indica il vendor (per esempio Sun), il sistema operativo (per esempio Solaris), la versione (per esempio 10) ed il tipo di device (per esempio "general purpose", router, switch, game console, ecc). Molti fingerprint hanno anche la rappresentazione CPE (Common Platform Enumeration), come ad esempio cpe:/o:linux:linux_kernel:2.6.

Se Nmap non è in grado di indovinare il sistema operativo di una macchina e le condizioni sono propizie (ad esempio una porta trovata aperta ed una trovata chiusa), Nmap fornirà una URL che potrà essere utilizzata per inviare il fingerprint (nel solo caso che si conosca con certezza il sistema operativo dell'host in questione). Inviando questi fingerprint è possibile contribuire ad ampliare la gamma di sistemi operativi conosciuti da Nmap, così da renderlo più accurato per tutti.

L'OS detection abilita diversi altri test che utilizzano le informazioni che sono state ottenute durante questo processo. Un di questi è il "TCP Sequence Predictability Classification". Questo test misura approssimativamente quanto è difficile stabilire una "forged TCP connection" verso l'host remoto. È utile per sfruttare exploit basati sul controllo del source-IP (rlogin, filtri firewall, ecc.) o per nascondere la sorgente di un attacco. Questo tipo di spoofing viene raramente eseguito, ma molte macchine sono ancora vulnerabili ad esso. Il valore che indica la difficoltà è basato su campionamenti statistici e può variare. Generalmente è preferibile utilizzare la classificazione verbale, come «worthy challenge» o «trivial joke», che viene riportata solo nel normale output in modalità "verbose" (-v). Quando questa modalità è abilitata insieme all'opzione -O, viene anche riportata la sequenza di generazione dell'IP ID. La maggior parte delle macchine è nella classe «incremental», il che significa che incrementano il campo ID dell'header IP per ogni pacchetto inviato. Ciò le rende vulnerabili a diversi attacchi avanzati di spoofing ed "information gathering".

Altre informazioni extra abilitate dall'OS detection riguardano il tempo di attività (uptime) dell'obiettivo. Sfruttando l'opzione TCP timestamp (RFC 1323) cerca di indovinare quando una macchina ha effettuato l'ultimo reboot. Quest'informazione può non essere affidabile, in quanto il contatore del timestamp potrebbe non venire inizializzato a zero+ oppure andare in overflow ed essere troncato, quindi è riportato solo nella modalità "verbose".

L'OS detection viene trattato nel dettaglio in Chapter 8, Remote OS Detection.

OS detection viene attivato e controllato dalle le seguenti opzioni:

-O (Enable OS detection)

Abilita l'OS detection, come descritto sopra. In alternativa, è possibile utilizzare l'opzione -A per attivare sia l'OS detection, tra le altre cose.

--osscan-limit (Limit OS detection to promising targets)

L'OS detection è molto più efficace se vengono rilevate almeno una porta TCP aperta ed una chiusa. Utilizzando questa opzione Nmap non cercherà di effettuare l'OS detection sugli host che non rispondo a questo criterio. È così possibile un sensibile risparmio di tempo, specialmente se si utilizza anche l'opzione -Pn su molti host. È importante unicamente quando l'OS detection è richiesto attraverso le opzioni -O o -A.

--osscan-guess; --fuzzy (Guess OS detection results)

Quando Nmap non è in grado di rilevare una corrispondenza esatta dell'OS, propone come possibilità gli OS più vicini alla rilevazione. La corrispondenza però deve essere molto simile perché Nmap lo faccia di default. Entrambe queste opzioni (equivalenti) fanno si che Nmap proceda con il riconoscimento dell'OS in modo più aggressivo. Nmap farà comunque presente quando corrispondenze non perfette vengono mostrate e per ognuna ne indicherà il livello di approssimazione (in percentuale).

--max-os-tries(Set the maximum number of OS detection tries against a target)

Quando Nmap esegue un OS detection su di un obiettivo e non riesce a trovare una corrispondenza perfetta, solitamente ripete il tentativo. Di default, Nmap prova cinque volte, se le condizioni sono favorevoli per l'invio del fingerprint, e due volte se invece non lo sono. Specificando un valore più piccolo (ad esempio 1) nell'opzione --max-os-tries, si aumentano le performance di Nmap a discapito di una potenziale identificazione del sistema operativo. Per contro, un valore più alto permette più tentativi, se le condizioni sono favorevoli. Questo raramente avviene, se non per creare migliori fingerprint da integrare nel database di Nmap.