Nome
nmap - Strumento di esplorazione della rete e scanner
della sicurezza
Sintassi
nmap [Tipo(i) di scan] [Opzioni] <host o
rete #1 ... [#N]>
Descrizione
Nmap è disegnato per permettere ai sysadmin ed a individui
curiosi di scannare grosse reti per determinare quali host sono 'su' e
quali servizi offrono. Nmap supporta un gran numero di tecniche
di scan come per esempio: UDP, TCP connect(), TCP SYN (half open), ftp
proxy (bounce attack), Reverse-ident, ICMP (ping sweep), FIN, ACK sweep,
Xmas Tree, SYN sweep, e Null scan. Leggete la sezione tipi di
scan per maggiori dettagli.
Nmap offre anche molte funzioni
avanzate come il detect del sistema operativo da remoto via TCP/IP
fingerprinting, stealth scanning, dynamic delay e retrasmission
calculations, parallel scanning, detect degli host 'down' con il
parallel ping, decoy scanning, detect di port filtering, RPC scanning
diretto (non-portmapper), fragmentation scanning e specificazione
flessibile di target e host.
Uno sforzo significativo è stato messo per ottenere una performance
decente di nmap per gli users non-root. Sfortunatamente molte interfacce
critiche del kernel (come i raw sockets) richiedono i privilegi di root.
Nmap deve essere usato da root, quando possibile.
Il risultato di eseguire nmap è di solito una lista di porte
interessanti della macchina (o delle macchine) scannate. Nmap dà sempre
il nome del servizio 'well known' (entro le prime 1024 porte?), numero,
stato e protocollo. Lo stato è sia 'open' (aperto) che 'filtered'
(filtrato) che 'unfiltered' (non filtrato). 'Open' significa che la
macchina scannata accetterà connessioni su quella porta. 'Filtered'
significa che un firewall, un filtro o un altro ostacolo di rete copre
la porta e previene nmap dal determinare se la porta è aperta.
'Unfiltered' significa che la porta è conoscita da nmap come chiusa e
nessun firewall o filtro sembra interferire con i tentativi di nmap di
stabilirlo. Le porte 'unfiltered' sono casi comuni e vengono mostrate
solo se la maggior parte delle porte scannate sono in stato di
filtering.
Dipendentemente dalle opzioni usate, nmap può inoltre riportare le
seguenti caratteristiche dell'host remoto: Sistema Operativo (OS) in
uso, capacità di azzeccare la sequenza TCP, username di quelli che
eseguono i programmi che hanno il bound su ogni porta, il nome DNS, se
l'host e' uno smurf address, e alcune altre.
OPZIONI
Le opzioni che contano in genere possono essere combinate. Molte
opzioni sono specifiche di certi tipi di scan. nmap cerca di
accettare e avvisare l'utente circa combinazioni di opzioni psicotiche o
non supportate.
NMAP(1) Se sei impaziente puoi saltare alla sezione degli
esempi alla fine, che dimostrano gli usi più comuni. Potete anche
lanciare nmap -h per una veloce pagina di referenza che lista
tutte le opzioni.
SCAN TYPES
-sT Tcp connect() scan: questo è il più
semplice modo di TCP scanning. La chiamata di sistema connect() fornito
dal vostro sistema operativo è usate per aprire una connessione a tutte
le porte interessanti nella macchina. Se la porta è in ascolto,
connect() avrà successo, altrimenti la porta non è raggiungibile. Un
gran vantaggio di questa tecnica è che non ha bisogno di nessun
privilegio speciale. Ogni utente su gran parte dei box Unix è libero di
usare questa chiamata.
Questo tipo di scan è facilmente rintracciabile perchè l'host di
destinazione mostrerà molte connessioni e messaggi di errore per i
servizi che accettano la connessione visto che viene immediatamente
chiusa.
-sS TCP SYN scan: Questa tecnica è
spesso riferita come 'half-open' scanning, poichè non potete creare una
connessione TCP completa. Voi spedite un pacchetto SYN, come se voleste
creare una vera connessione ed aspettate la risposta. Un SYN|ACK indica
che la porta è in ascolto. Se viene ricevuto un SYN|ACK, un RTS viene
subito spedito per chiudere la connessione (attualmente il kernel del
nostro OS si occupa di ciò). Il primo vantaggio di questa tecnica di
scan è che molti meno siti lo loggano. Sfortunatamente dovete avere
privilegi di root per costruire questi pacchetti SYN 'custom'.
-sF -sX -sN
Metodi Stealth FIN, Xmas Tree o
Null scan: questi sono per quando anche il SYN scan non è abbastanza
'clandestino'. Molti firewall e filtri di pacchetti controllano per
pacchetti SYN sulle porte 'interessanti' e programmi come Synlogger e
Courtney sono stati creati per scoprire questi scan. Questi scan
avanzati, in altre parole, potrebbero invece passare inosservati.
L'idea è che le porte chiuse devono rispondere alla vostra ricerca
con un RTS, mentre le porte aperte devono ignorare il pacchetto in
questione (vedere RFC 973 pp 64). Lo scan FIN usa un pacchetto FIN puro
(sorpresa) come ricerca, mentre lo scan Xmas tree si basa sulle flags
URG e PUSH del FIN. Sfortunatamente Microsoft (come al solito) ha deciso
di ignorare completamente lo standard e fare le cose a modo suo. Questi
scan non funzionano contro sistemi Win9x/NT.
La parte buona è che è un buon modo per distinguere tra le die
piattaforme. Se lo scan trova porte aperte saprete che la macchina non è
uno Windows. Se uno scan -sF, sX o -sN trova tutte le porte chiuse
mentre uno scan SYN (-sS) trova porte aperte, probabilmente quello sarà
un box Windows. Questo è meno utile ora che nmap ha il proprio scan per
trovare l'OS incluso. Ci sono anche altri sistema che sono rotti come
Windows. Questi includono Cisco, BSDI, HP/UX, MVS e IRIX. Tutti quelli
sopra spediscono resets dalle porte aperte quando buttano via il
pacchetto.
-sP Ping scanning: spesso volete solamente
sapere quali host in una rete sono online. Nmap può farlo spedendo
richieste ICMP echo a ciascun IP nella rete che specificate. Gli host
che rispondono sono su. Sfortunatamente molti siti come microsoft.com
bloccano i pacchetti di richiesta di echo. Quindi nmap pu&ogrrave;
anche spedire un pacchetto TCP ACK alla porta (di default) 80. Se
abbiamo in risposta un RST, la macchina è su. Una terza tecnica implica
di spedire un pacchetto SYN e aspettare per un RST o SYN/ACK. Per gli
users non root viene usato il metodo connect().
Di solito (per gli user non-root), nmap usa entrambi i metodi ICMP e
ACK in parallelo. Potete cambiare l'opzione -P descritta in
seguito.
Ricordate che il ping è fatto comunque di default e solo gli host che
rispondono vengono scannati. Usate questa opzione se volete solo
scannare senza fare alcuno scan.
-sU UDP scans: questo metodo è usato per
determinare quali porte UDP (User Datagram Protocol, RFC 768) sono
attualmente aperte su un host. La tecnica è di spedire un pacchetto UDP
di 0 bytes ad ogni porta della macchina bersaglio. Se riceviamo un
messaggio ICMP port unreachable, la porta è chiusa. Altrimente si assume
che sia aperta.
Molti pensano che lo scanning UDP sia senza scopo. Di solito gli
ricordo il recente buco del Solaris rcpbind. Rcpbind può essere scoperto
nascondendo una porta UDP non documentata sopra alla 32770. Quindi non
importa che la 111 sia bloccata dal firewall. Ma potete trovare quale in
quale porta delle oltre 30000 alte sta ascoltando? Con uno scan UDP
potete farlo! C'è anche il BackOrifice che si installa in una porta UDP
configurabile, sulle macchine Windows. Per non parlare dei più comuni
servizi vulnerabili che usano UDP come snmp, tftp, NFS etc.
Sfortunatamente lo scan UDP è spesso lentissimo pochè molti host
mettono in pratica un suggerimento dell' RFC 1812 (sezione 4.3.2.8) di
limitare l'ammontare degli errori ICMP. Per esempio il kernel di Linux
(in net/ipv4.icmp.h) limita la generazione di messaggi ICMP destination
unreachable a 80 ogni 4 secondi, con 1/4 di secondo di penalità se è
superato. Solaris ha un limite molto più stretto (circa 2 messaggi al
secondo) e questi richiedono molto più tempo per scannare. nmap
scopre questo ammontare rallentando e limitandosi di conseguenza,
piuttosto che floodare la rete con pacchetti inutili che verranno
ignorati dalla macchina bersaglio.
Come al solito, Microsoft ha ignorato il suggerimento dell'RFC e
sembra non aver imposto nessun limite di tempo in tutte le macchine
Win9x/NT. Quindi possiamo scannare tutte le 65k porte di una macchina
windows davvero velocemente.
Woop!
-sR RPC scan. Questo metodo funziona in
combinazione con i vari metodi di portscan di Nmap. Prende tutte le
porte TCP e UDP trovate aperte e le flooda con i comandi NULL del
programma SunRPC per scoprire quali sono porte RCP, e se ce n'è
qualcuna, che programma e versione ci gira sopra. Possiamo
effettivamente conoscere le stesse informazioni con rpcinfo -p anche se
la macchina bersaglio è dietro un firewall (o protetta da TCP wrappers).
Le 'trappole' (decoy) attualmente non funzionano con l'RPC scan, ma
presto metterò il supporto per gli scan UDP RPC.
-b <ftp relay host>
Ftp bounce
attack: Un'interessante 'servizio' del protocollo ftp (RFC 959) è il
supporto per le connessioni ftp 'proxy'. In altre parole, posso
connettermi da evil.com al server ftp di target.com e richiedere se il
server spedisce un file OVUNQUE in internet! Ora questo forse funzionava
bene nel 1985 quando l'RFC è stata scritta. Ma l'Internet di oggi, non
possiamo avere gente che va in giro hijackando server ftp e richiedendo
che i dati vengano buttati in qualsiasi punto di internet. Come *Hobbit*
scrive tornato nel 1995, questo difetto del protocollo "può essere usato
per postare mail e news virtualmente intracciabili, martellando sui
server a diversi siti, riempiendo i dischi, cercando di saltare i
firewalls ed essendo generalmente rompiscatole e difficili da tracciare
allo stesso tempo." Quello che faremo è (sorpresa, sorpresa) di scannare
le porte TCP da un server ftp 'proxy'. Quindi possiamo connetterci ad un
server dietro un firewall e poi scannare le porte che probabilmente sono
chiuse (la 139 è una buona). Se il server ftp permette di scrivere su
alcune directory (come /incoming), potete mandare dati arbitrari alle
porte che trovate aperte (nmap non lo fa per voi, naturalmente).
L'argomento passato all'opzione 'b' è l'host che volete usare come
proxy nella notazione url standard. Il formato è:
username:password@server:port. Tutto tranne server è
opzionale. Per determinare quali server sono attaccabili da questo
attacco potete vedere il mio articolo in Phrack 51. Una versione
aggiornata è disponibile sul sito di nmap http://www.insecure.org/nmap.
OPZIONI GENERALI
Nessuna di queste è richiesta, ma molte
possono essere abbastanza utili.
-P0 Non cerca di pingare gli host del tutto prima di
scannarli. Questo permette di scannare reti che non permettono le
richieste ICMP echo (o le risposte) attraverso i loro firewall.
microsoft.com è un esempio di questo tipo di rete, e noi possiamo quindi
usare -P0 o -PT80 quando facciamo portscan a
microsoft.com.
-PT Usa il ping TCP per determinare se gli host sono online.
Invece che mandare pacchetti ICMP echo request ed aspettare per la
risposta, spediamo pacchetti TCP ACK attraverso il network bersaglio (o
verso una singola macchina) e poi aspettiamo per la risposta che torni
indietro. Gli host che sono su dovrebbero rispondere con un RST.
Quest'opzione preserva l'efficienza solo scannando host che sono su,
mentre non vi permette di scannare networks che bloccano pacchetti ping.
Per gli user non root, usiamo connect(). Per settare la porta di
destinazione dei pacchetti di ricerca usate -PT<port number>. La
porta di default è la 80, visto che non è quasi mai filtrata. -PS
usa pacchetti SYN (richiesta di connessione) invece di pacchetti ACK per
gli utenti root. Gli host che sono su risponderanno con un RST (o
raramente con un SYN|ACK).
-PI Questa opzione usa un vero pacchetto di ping (ICMP echo
request). Se trova host che sono su cerca anche nella vostra rete per
indirizzi di broadcast diretti alla subnet. Questi sono IP raggiungibili
dall'esterno e traducono i pacchetti IP in arrivo ad una subnet di
computers. Questi vengono eliminati se vengono trovati a permettere
numerosi tipi di attacchi D.o.S. (Denial of Service) come lo Smurf.
-PB Questo è il tipo di ping di default. Usa sia il ping ACK
(-PT) che l'ICMP (-PI) in parallelo. Potete infatti
eludere i firewall che bloccano uno dei due tipo (ma non entrambi).
-O Questa opzione attiva l'identificazione dell'host remoto
via TCP/IP fingerprinting. In altre parole usa diverse tecniche per
trovare sottigliezze nello stack di rete del sistema operativo che sta
sotto ai computers che state scannando. Usa queste informazioni per
creare un 'fingerprint' che compara con un database di fingerprints di
OS conosciuti (il file nmap-os-fingerprint) per decidere quale tipo di
sistema state scannando.
Se trovate una macchina che viene diagnosticata male ed ha almeno una
porta aperta, sarebbe utile che voi mi mandaste via mail i dettagli (ad
esempio: OS blah version foo è stata trovata come OS blah version bar).
Se trovate una macchina con almeno una porta aperta per cui nmap dice
'unknown operating system;', sarebbe utile che voi mi mandaste
l'indirizzo IP insieme con il sistema operativo ed il numero di
versione. Se potete spedirmi l'indirizzo IP, la cosa successiva migliore
da fare è di far girare nmap con l'opzione -d e spedirmi i tre
fingerprints che devono risultare con il nome del sistema operativo ed
il numero di versione. Facendo questo contribuirete al database dei
sistemi operativi conosciuti da nmap e questo sarà più accurato per
tutti.
-I Questo accende il TCP reverse ident scanning. Come annotato
da Dave Goldsmith in un post del 1996 di bugtraq, il protocollo ident
(rfc 1413) permette la scoperta dello username 'owner' di ogni processo
connesso via TCP, anche se questo processo non inizia la connessione.
Quindi potete, per esempio, connettervi alla porta http e poi usare
identd per trovare se il server gira come root. Questo può essere fatto
solo con una connessione TCP 'full' alla porta del bersaglio (per
esempio con l'opzione di scan -sT). Quando -I viene usato,
l'identd dell'host remoto viene interrogato per ogni porta aperta
trovata. Ovviamente questo non funzionerà se l'host non sta facendo
girare un identd.
-f Questa opzione fa si che lo scan SYN, FIN, XMAS o NULL
usino pacchetti IP frammentati. L'idea è di dividere l'header del
pacchetto TCP in più pacchetti piccoli per rendere più difficile
scoprire cosa state facendo ai vari sistemi di scoperta di intrusione, e
loggers vari. Siate prudenti con questo! Molti programmi hanno problemi
a gestire questi piccoli pacchetti. Il mio sniffer preferito è saltato
immediatamente appena ha ricevuto il primo frammento di 36 bytes. E dopo
ne arriva uno da 24! Mentre questo metodo non viene accettato dai filtri
di pacchetti e dai firewall che mettono in coda tutti i frammenti IP
(come l'opzione CONFIG_IP_ALWAYS_DEFRAG del kernel di Linux), molte reti
non possono affrontare la performance di contatti che questo genera e lo
lasciano disabilitato.
Questa opzione non funziona ancora in tutti i
sistemi... funziona bene con Linux, FreeBSD e OpenBSD e altre persone
hanno riportato successi su altre varianti *NIX.
-v Verbose mode. Quest'opzione è altamente consigliata e dà
maggiori informazioni su quello che sta succedendo. Potete usarla due
volte (-vv) per un effetto migliore. Usate -d un po' di volte se
volete diventare matti scorrendo lo schermo!
-h Questa comoda opzione mostra un rapido schermo di referenza
sulle opzioni d'uso di nmap. Come potreste aver capito, questa man page
non è esattamente una 'quick reference' :)
-o <logfilename>
Questo logga i risultati dei
vostri scan in una forma 'human readable' in un file che potete
specificare come argomento.
-m <logfilename> Questo logga i risultati dei
vostri scan in un formato 'machine parseable in un file
specificato come argomento. Potete dare -m l'argomento '-' (senza le
virgolette) per indirizzare l'output sullo stout (per shell, pipelines,
etc). In questo caso l'output normale viene soppresso. Guardate per
messaggi di errore se usate quest'opzione (saranno diretti allo
stderr).
-i <inputfilename> Legge le specificazione dei
bersagli dal file specificato PIUTTOSTO che dalla linea di comando. Il
file deve contenere una lista di host o espressioni di network separate
da spazi, tabs o newline. Usate un '-' come inputfilename se
volete che nmap legga gli host dallo stdin (come alla fine di un pipe).
Guardate la sezione specificazione dei bersagli per maggiori
informazioni sulle espressioni con cui riempire il file.
-p <range di porte> Quest'opzione specifica quali
porte volete scannare. Per esempio '-p 23' proverà solo la porta 23
degli host bersaglio. '-p 60000-' le porte oltre 60000. Di default lo
scan è tra le porta 1 e 1024 e tra quelle del file dei services che è
fornito con nmap.
-F Scan veloce (fast scan) Specifica che volete cercare
solo per le porte nel file di services fornito con nmap. Questo è
ovviamente molto più veloce che scannare tutte e 65535 le porte di un
host.
-D <decoy1 [,decoy2][,ME],...> Fa si che parta
uno scan 'esca' che da sembrare all'host remoto di essere scannato dagli
host che specifichiamo come 'esche'. I loro IDS potrebbero riportare
5-10 port scan da IP address unici, ma non possono sapere quale ip li
sta scannando e quale sia un innocente esca. Mentre questo può essere
reso inoffensivo tramite router path tracing, response-dropping e altri
meccanismi "attivi", ma in generale è un buon modo per nascondere il
vostro ip.
Separate ogni 'esca' con virgole e potete usare 'ME' come
una delle 'esce' per rappresentare la posizione in cui volete che sia
usato il vostro ip address. Se mettete 'ME' nella sesta posizione o
dopo, molto scan detector comuni (come l'eccellente scanlogd di Solar
Designer) non sono capaci di mostrare il vostro ip del tutto. Se non
usate 'ME', nmap metterà il vostro in una posizione a caso.
Gli host
che usate come 'esche' devono essere 'up' altrimenti farete un SYN flood
sui vostri bersagli. Infatti è molto semplice trovare quale host è
quello che sta scannando, se solo uno degli scanners è 'up' in quel
momento. Potreste voler usare IP addresses al posto dei nomi (cosi' la
rete delle 'esche' non vi avrà nei log del loro
nameserver).
Ricordare che molti (stupidi) "port scan detectors"
possono mettere deny nel firewall agli host che cercano di fare port
scans. Quindi potete inavvertitamente fare si' che la macchina che state
scannando di perdere la connessione con le macchine 'esche' che state
usando. Questo può causare alla macchina bersaglio problemi pesanti se
l'esca è il gateway o anche "localhost". Quindi bisogna usare una certa
prudenza con quest'opzione. La vera morale della storia è che questi
detector di spoofable port scans non dovrebbero prendere provvedimenti
contro la macchina che sembra scannarli. Potrebbe solo essere
un'esca!
Le esche sono usate sia nel ping scan iniziale (usando ICMP,
SYN, ACK o qualsiasi altro) e durante la fase di port scan attuale. Le
esche sono anche usate durante l'OS detection (-O).
Bisogna
ricordare che usare molte esche può rendere il vostro scan più lento e
potenzialmente renderlo meno accurato. Inoltre, molti ISP filtrano i
pacchetti 'spoofati', anche se molti (ora come ora la maggior parte) non
applicano restrizioni di questo tipo.
-S <IP_Address> In molte circostanze, nmap
potrebbe non essere in grado di determinare il vostro IP (ve lo dirà il
programma stesso). In questa situazione, usate -S col vostro IP address
(e l'interfaccia attraverso cui volete far passare i pacchetti).
Un
altro possibile uso di questa opzione è quello di spoofare lo scan per
far pensare al bersaglio che qualcun altro li sta scannando.
Immaginate una compagnia scannata ripetutamente da una ditta
concorrente! Questo non è un uso supportato (e nemmeno l'utilizzazione
principale) di quest'opzione. Penso solo che propone un'interessante
possibilità che le persone dovrebbero sapere prima di mettersi ad
accusare qualcuno che li sta scannando. -e generalmente è
richiesta per l'uso.
-e <interface> Dice a nmap quale interfaccia
usare per spedire e ricevere pacchetti. Nmap di solito è capace di
trovarlo da solo, ma vi avvertirà se non è in grado di farlo.
-g <portnumber> Setta la porta sorgente da usare
negli scan. Molte installazioni 'ingenue' di firewalls e filtri di
pacchetti fanno un'eccezione per permettere ai pacchetti DNS (53) o
FTP-DATA (20) di entrare e stabilire una connessione. Ovviamente questo
cambia totalmente i vantaggi di sicurezza di un firewall visto che gli
intrusi possono mascherarsi come FTP o DNS modificando la loro porta di
source. Ovviamente per uno scan UDP dovete prima provare la 53 e per lo
scan TCO dovete provare la 20 prima della 53. Notate che questa è solo
una richiesta -- nmap la eseguirà solo quando e se potrà farlo. Per
esempio non potete fare un TCP ISN da un host:porta ad un host:porta,
quindi nmap cambia la porta sorgente anche se avete usato -g.
C'è una
piccola penalità di performance in molti scan usando quest'opzione
perchè io salvo spesso parecchie informazioni utili sulla porta
sorgente.
-M <max sockets> Setta il numero massimo di
sockets che saranno usati in uno scan parallel TCP connect() (il
default). È utile per mandare un po' più lento lo scan per evitare che
le macchine remote vadano in crash. Un altro approccio è quello di usare
-sS che generalmente è più facile da gestiro per le macchine.
OPZIONI DI TIMING
Generalmente Nmao fa un buon lavoro aggiustando i parametri per le
caratteristiche della rete mentre gira e scanna il più velocemente
possibile minimizzando le possibilità che host o porte rimangano
scoperti. Tuttavia ci sono molti casi in cui il timing di default di
Nmap potrebbe non essere compatibile coi vostri obbiettivi. Le opzioni
seguenti forniscono un livello di controllo avanzato sul timing dello
scan:
-T
<Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> Queste
sono le regole di timing per esprimere le vostre priorità a Nmap. Il
modo Paranoid scanna veramente piano cercando di non
essere scoperto da sistemi IDS. Mette in serie tutti gli scan (nessun
parallel scanning) e generalmente aspetta 5 minuti tra un gruppo di
pacchetti e l'altro. Sneaky è simile ma aspetta 15 secondi tra i
gruppi di pacchetti. Polite è fatto per caricare leggermente la
rete e ridurre le possibilità di crashare le macchine. Mette le ricerche
in serie ed aspetta almeno 0.4 secondi tra i pacchetti.
Normal è l'impostazione di default di Nmap che cerca di andare il
più veloce possibile senza sovraccaricare la rete o mancare host o
porte. Il modo Aggressive aggiunge un timeout di 5 minuti per
ogni host e non aspetta mai più di 1.25 secondi per risposte allo scan.
Insane è usabile solo per reti molto veloci o dove pensate di non
perdere molte informazioni. Mette in timeout dopo 75 secondi gli host e
aspetta solo 0.3 secondi per le ricerche. Permette una veloce spazzata
della rete :). Potete anche usare i numeri (0-5). Per esempio, '-T 0' è
il modo Paranoid e '-T 5' è Insane.
Questi comandi non devono essere
usati con i controlli a basso livello dati qui sotto.
--host_timeout <millisecondi> Specifica l'ammontare di
tempo che Nmap può utilizzare per scannare un singolo host prima di
lasciar perdere quell'IP. Il modo di timing di default non ha
timeout.
--max_rtt_timeout <millisecondi> Specifica il tempo
massimo che Nmap può utilizzare per aspettare una risposta prima di
ritrasmettere o mandare in timeout la richiesta. Di default è circa
9000.
--initial_rtt_timeout <millisecondi> Specifica il
timeout iniziale del prove. Questo è generalmente utile solo quando si
scannano host con firewall con -P0. Normalmente Nmap non può ottenere
una buona stima dell' RTT dal ping iniziale e dalle prime richieste. Il
default è 6000.
--max_parallelism <numero> Specifica il numero massimo
di scan che Nmap può portare avanti in parallelo. Settando questo a uno
Nmap non scannerà mai più di una porta alla volta. Questo influisce
anche sugli altri scan paralleli come ping sweep, RPC scan ecc. ecc.
--scan_delay <millisecondi> Specifica l'ammontare
minimo di tempo che Nmap deve aspettare tra le richieste. È
generalmente utile per ridurre l'affaticamento della rete o per rendere
lo scan più lento per non farsi scoprire da sistemi IDS.
SPECIFICAZIONE DEI BERSAGLI
Tutto ciò che non è un'opzione (o un argomento di un'opzione) in nmap
viene trattato come specificazione dell'host bersaglio. Il caso più
semplice è di mettere il lista singoli hostname o IP addresses sulla
linea di comando. Se volete scannare una subnet di IP addresses, potete
aggiungere '/mask' all'hostname o IP address. Mask deve
essere tra 0 (scanna l'intera Internet) e 32 (scanna solo l'host
specificato). Usate /24 per scannare una classe 'C' e /16 per una classe
'B'.
Nmap ha anche una notazione più potente che vi permette di
specificare un IP usando liste o range per ogni elemento. Quindi potete
scannare l'intera classe 'B' con 128.210.*.* specificando '128.210.*.*'
oppure '128.210.0-255.0-255' o ancora
'128.210.1-50,51-255.1,2,3,4,5-255'. E ovviamente potete usare la 'mask'
equivalente: '128.219.0.0/16'. Queste sono tutte equivalenti. Se usate
asterischi ('*'), ricordatevi che molte shell richiedono di scriverli
con un backslash davanti o di proteggerli con virgolette.
Un'altra
cosa interessante da fare è di 'sezionare' Internet in un altro modo.
Invece di scannare tutti gli host in una classe 'B', scannate
'*.*.5.6-7' per scannare tutti gli ip address che finiscono in .5.6 o
.5.7 . Scegliete i vostri numeri come volete. Per maggiori informazioni
su come specificare gli host da scannare, vedete la sezione degli
esempi.
ESEMPI
Ecco qua alcuni esempi su come usare nmap, da uno semplice e normale
ad uno un po' più complesso ed esoterico. L'attuale numero e molti nomi
di dominio sono usati per fare cose più concrete. Al loro posto potete
sostituire nomi e indirizzi del vostro stesso network. Non penso
che fare un portscan di un'altra rete sia illegale; e nemmeno gli scan
possono essere considerati come un attacco dagli altri. Ho scannato
centinaia di migliaia di macchina ed ho ricevuto un solo reclamo. Ma non
sono un uomo di legge e molte persone [anal] possono essere annoiate
dalle ricerche di nmap. Chiedete il permesso o usatelo a vostro
stesso rischio.
nmap -v target.example.com
Quest'opzione scanna tutte le porte TCP riservate sulla macchina
target.example.com . Il -v setta come acceso il modo verbose.
nmap -sS -O target.example.com/24
Lancia uno scan stealt SYN contro ogni macchina 'up' delle 255
macchine nella classe 'C' dove target.example.com risiede. Cerca anche
di determinare quale sistema operativo sta girando su ognuna delle
macchine che sono 'up'. Questo richiede privilegi di root per lo scan
SYN e l'OS detection.
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
Fa partire uno scan Xmas tree sulla prima metà delle 255 possibili
subnet degli 8 bit nella classe 'B' 128.210 . Stiamo testando quali
sistemi stanno facendo girare sshd, DNS, pop3d, imapd, o la porta 4564.
Lo scan Xmas non funziona sulle box Microsoft per il loro stack TCP
scassato. La stessa cosa per box CISCO, IRIX, HP/UX e BSDI.
nmap -v -p 80 '*.*.2.3-5'
Piuttosto che focalizzare l'attenzione su un'ip range specifico, è
spesso interessante 'sezionare' l'intera Internet e scannare una parte
di ogni 'sezione'. Questo comando trova tutti i server web su macchine
con IP address che finiscono in .2.3 , .2.4 o .2.5 . Se siete root
potreste anche voler aggiungere un -sS. Potete trovare molte più
macchine interessanti partendo da 127. quindi potreste voler usare
'127-222' al posto del primo asterisco perchè questa 'sezione' ha una
grande densità di macchine interessanti (IMHO).
host -l company.com | cut '-d' -f 4 | ./nmap -v -i -
Fa un DNS zone transfer per trovare gli host in company.com e poi
passa gli IP addresses a nmap. I comandi sopra sono per il mio
box GNU/Linux. Potreste aver bisogno di differenti comandi/opzioni su
altri sistemi operativi.
BUGS
Bugs? Quali bugs? Speditemi qualsiasi cosa trovate. Le patch sono
anche più ben accette :) Ricordate anche di spedire nuovi OS
fingerprints in modo da poter accrescere il database. Nmap vi darà un
url per spedirle quando un fingerprint adatto è trovato.
AUTORE
Fyodor <fyodor@dhp.com>
DISTRIBUZIONE
La versione più recente di nmap può essere ottenuta da
http://www.insecure.org/nmap/ .
nmap è (C) 1997,1998,1999 by Fyodor (fyodor@dhp.com,
fyodor@insecure.org)
libcap sono distribuite anche insieme a nmap. Sono copyrighted
da Van Jacobson, Craig Leres and Steven McCanne, tutti di Lawrence
Berkeley National Laboratory, University of California, Berkeley, CA. La
versione distribuita con nmap può essere modificata, i sorgenti
originali sono disponibili su ftp://ftp.ee.lbl.gov/libpcap.tar.Z .
Questo programma è free software; potete distribuirlo e/o modificarlo
sottostando ai termini della GNU General Public License come pubblicato
dalla Free Software Foundation; Versione 2. Questa garantisce il vostro
diritto di usare, modificare, ridistribuire Nmap sottostando a certe
condizioni. Se questa licensa non è accettabile per voi, Insecure.org
potrebbe volere rilasciare license alternative (contattare
fyodor@dhp.com).
Questo programma è distribuito nella speranza che sia utile, ma
SENZA NESSUNA GARANZIA; senza neanche la garanzia di
MERCHANTABILITY o FITNESS FOR A PARTICULAR PURPOSE. Vedere
la GNU General Public License per maggiori dettagli (è nel file COPYING
della distribuzione di nmap).
Bisogna anche ricordare che Nmap è stato riconosciuto come causa di
crash di alcune applicazioni scritte male, stacks TCP/IP e anche sistemi
operativi. Nmap non deve essere mai usato contro sistemi 'mission
critical' se non siete preparati a soffrire il downtime. Siamo a
conoscenza che Nmap può far crashare i vostri sistemi o le vostre reti e
decliniamo qualsiasi responsabilità per ogni danno o problema che Nmap
può causare.
Tutte le versioni di Nmap uguali o superiori alla 2.0 sono
riconosciute (tramite test informale) come Y2K compliant, sotto tutti
gli aspetti. Detto questo, ripetiamo che Nmap non ha garanzia. Non c'è
ragione per credere che versioni precedenti alla 2.0 siano suscettibili
di problemi, ma non le abbiamo testate.