Banner Shishii
Pagina aggiornata il:  31/01/2006 12:05

Pagina Stampabile     Pagina Stampabile

Precedente - Indice - Successiva

4 Uso da linea di comando

Questo è il modo più efficiente e veloce di usare Nmap, ed è solo apparentemente più difficile che usare l'interfaccia grafica. In realtà basterà avere a portata di mano l'elenco delle opzioni possibili. Si tenga inoltre presente che non tutte le opzioni sono utilizzabili tramite interfaccia grafica.

Bisogna premettere che per usare al pieno delle possibilità Nmap si deve essere loggati come root, poichè in alcuni casi il programma ha bisogno di usare direttamente alcuni moduli del kernel allo scopo, ad esempio, di modificare gli header dei frame IP o accedere a porte privilegiate.

Il prototipo di utilizzo è il seguente:

> nmap -[tipi di scan] -[opzioni] <host o segmenti di rete>

Per vedere quali sono i TIPI DI SCAN si guardi la sezione 6, e per le OPZIONI la sezione 7.

Ad esempio se io voglio verificare la mia rete ``dall'interno'' posso fare:

> nmap -sT -PI 10.0.0.0/24

che significa: effettua lo scanning della rete 10.0.0.0 con subnetmask 255.255.255.0 (quindi di tipo C con 256 host possibili 10.0.0.0/24), pingando gli IP con pacchetti ``icmp echo'' (-PI) e analizza le porte tramite connessioni complete (-sT).

L'output prodotto potrebbe essere:

Starting nmap 3.95 ( http://www.insecure.org/nmap/ )
at 2004-08-10 21:29 CEST

Host 10.0.0.0 seems to be a subnet broadcast address
(returned 2 extra pings) Skipping host.

qui Nmap ci dice che ha capito che deve analizzare il segmento di rete identificato tramite l'indirizzo di broadcast e la netmask, e che ha identificato, tramite i ping, 2 host attivi.

Interesting ports on 10.0.0.2:
(The 1658 ports scanned but not shown below are in state:
closed)
PORT STATE SERVICE
80/tcp open http
255/tcp open unknown

qui Nmap ha analizzato il primo host 10.0.0.2 e ci dice che risultano aperte solo 2 porte, la 80 tipicamente dedicata hai servizi http e la 255 sconosciuta.

Interesting ports on marco (10.0.0.7):
(The 1652 ports scanned but not shown below are in state:
closed)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
443/tcp open https
3306/tcp open mysql
6000/tcp open X11
6346/tcp open gnutella
10000/tcp open snet-sensor-mgmt
MAC Address: 00:70:E0:50:F5:63 (Cobalt Microserver)

qui analizza il secondo host con l'elenco delle porte trovate aperte.

ATTENZIONE !!! il servizio che vediamo abbinato alla porta e al protocollo (tcp/udp) non indica direttamente l'applicativo che lo sta usando, ma solo il servizio ufficialmente abbinato alla stessa dalle norme IANA. Nell'appendice 8.6 vedremo come può fare un utente Linux a sapere EFFETTIVAMENTE quale applicativo sta usando una porta.

E' utile notare come Nmap ha individuato anche il MAC address (cioè l'identificativo univoco hardware) della scheda di rete. Questo è un dato utilissimo, ma disponibile solo in caso di scansione di una rete locale.

Host 10.0.0.255 seems to be a subnet broadcast address
(returned 2 extra pings). 
Skipping host.
Nmap run completed - 256 IP addresses (2 hosts up) scanned
in 14.639 seconds

Questo è semplicemente il report conclusivo del lavoro svolto.

Come si vede la forma descrittiva dell'analisi delle porte è la seguente:

PORT/Protocol     STATE                        SERVICE
Porta/Protocollo  open = aperta                nome servizio
numero/ Tcp       close = chiusa               sconosciuto
        Udp       filtered = filtrata firewall

Ovviamente è possibile avere molte più informazioni da Nmap, ad esempio se faccio lo stesso scanning usando il seguente comando:

> nmap -sT -sR -sV -I -O -PI -PT -vv 10.0.0.0/24

otterremo come output:

Starting nmap 3.95 ( http://www.insecure.org/nmap/ ) at 2004-08-12 
00:35 CEST
Host 10.0.0.0 seems to be a subnet broadcast address (returned 1 
extra pings). Skipping host.
Host 10.0.0.1 appears to be down, skipping it.
Host 10.0.0.2 appears to be up ... good.
Initiating Connect() Scan against 10.0.0.2 at 00:35
Adding open port 80/tcp
Adding open port 255/tcp
The Connect() Scan took 1 second to scan 1660 ports.
Initiating service scan against 2 services on 1 host at 00:35
The service scan took 100 seconds to scan 2 services on 1 host.
For OSScan assuming that port 80 is open and port 1 is closed and 
neither are firewalled
Interesting ports on 10.0.0.2:
(The 1658 ports scanned but not shown below are in state: closed)

fino a qui nulla di particolarmente interessante, a parte la spiegazione dettagliata di quello che sta facendo

PORT    STATE SERVICE OWNER VERSION
80/tcp  open  http          WindWeb embedded webserver 2.0 (As on 
NetComm DSL modems; Realm: Home Gateway; Calls itself Hasbani Web Server)

Qui Nmap ha fatto un eccellente lavoro. Ha individuato con precisione in ascolto sulla porta 10.0.0.2:80 un web server piuttosto raro, che in genere viene usato su dispositivi embedded, tipo router, modem, ecc.

255/tcp open  unknown
MAC Address: 00:30:0A:0B:5A:D2 (Aztech Systems)

Ottimo!!! qui indica addirittura modello e numero di MAC della scheda di rete.

Device type: PBX
Running: 3Com embedded
OS details: 3Com NBX PBX

Ci dice che si tratta di un apparecchio dedicato alle comunicazioni con un sistema operativo 3com embedded

OS Fingerprint:
TSeq(Class=64K%IPID=I%TS=2HZ)
T1(Resp=Y%DF=N%W=2000%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=N)
T3(Resp=Y%DF=N%W=2000%ACK=O%Flags=A%Ops=NNT)
T4(Resp=Y%DF=N%W=2000%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)
PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=F%RIPCK=0%UCK=0%ULEN=134%DAT=E)
Uptime 0.004 days (since Thu Aug 12 00:30:32 2004)

Sopra vediamo le cosidette ``fingerprints'', cioè le impronte tramite cui Nmap è in grado di individuare il sistema operativo in funzione.

TCP Sequence Prediction: Class=64K rule
Difficulty=1 (Trivial joke)
TCP ISN Seq. Numbers: 81E6F5BD 81E9E3BD 81EADDBD 81EBD7BD 81ECD1BD 
81EFBFBD
IPID Sequence Generation: Incremental

Qua ci dice una cosa che potrebbe essere piuttosto grave, e cioè che il sistema in funzione ha un metodo di determinazione dei codici di identificazione delle connessioni TCP (IPID o ISN) altamente prevedibile, per cui sarebbe esposto ad attacchi di ``spoofing cieco''.

Host 10.0.0.3 appears to be down, skipping it.
Host 10.0.0.4 appears to be down, skipping it.
Host 10.0.0.5 appears to be down, skipping it.
Host 10.0.0.6 appears to be down, skipping it.
Host marco (10.0.0.7) appears to be up ... good.

Passa all'altro host attivo.

Initiating Connect() Scan against marco (10.0.0.7) at 00:36
Adding open port 3306/tcp
Adding open port 80/tcp
Adding open port 22/tcp
Adding open port 6000/tcp
Adding open port 111/tcp
Adding open port 10000/tcp
Adding open port 443/tcp
The Connect() Scan took 0 seconds to scan 1660 ports.
Initiating service scan against 7 services on 1 host at 00:36
The service scan took 10 seconds to scan 7 services on 1 host.
Initiating RPCGrind Scan against marco (10.0.0.7) at 00:37
The RPCGrind Scan took 0 seconds to scan 1 ports.
For OSScan assuming that port 22 is open and port 1 is closed and 
neither are firewalled
Interesting ports on marco (10.0.0.7):
(The 1653 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE              OWNER VERSION
22/tcp    open  ssh                        OpenSSH 3.5p1 (protocol 1.99)
80/tcp    open  http                       Apache httpd 2.0.47
111/tcp   open  rpcbind (rpcbind V2)       2 (rpc #100000)
443/tcp   open  http                       Apache httpd 2.0.47
3306/tcp  open  mysql                      MySQL 3.23.56-log
6000/tcp  open  X11                        (access denied)
10000/tcp open  http                       Webmin httpd

Anche qui ha individuato con esattezza gli applicativi che utilizzano le porte aperte, con tanto di numero di versione (ricordate questo particolare).

Device type: general purpose
Running: Linux 2.4.X|2.5.X
OS details: Linux 2.4.0 - 2.5.20

Individuazione del sistema in uso piuttosto generica, ma si spiega... infatti in realtà non credo che esistano due macchine su cui è stato istallato linux che si possano dire eguali.

OS Fingerprint:
TSeq(Class=RI%gcd=1%SI=333B41%IPID=Z%TS=100HZ)
T1(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T2(Resp=N)
T3(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW)
T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=
134%DAT=E)
Uptime 0.233 days (since Wed Aug 11 19:01:32 2004)
TCP Sequence Prediction: Class=random positive increments
Difficulty=3357505 (Good luck!)

Questa volta il sistema è molto più solido, ed ha un meccanismo di determinazione dei numeri identificativi delle connessioni TCP molto più sicuro.

TCP ISN Seq. Numbers: C17A5112 C143D335 C16DE676 C0BB989B C0FE90CA 
C12B6763
IPID Sequence Generation: All zeros
Host 10.0.0.8 appears to be down, skipping it.
.....
Host 10.0.0.254 appears to be down, skipping it.
Host 10.0.0.255 seems to be a subnet broadcast address (returned 1 
extra pings). Skipping host.
Nmap finished: 256 IP addresses (3 hosts up) scanned in 30.632 seconds
                 Raw packets sent: 7727 (303KB) | Rcvd: 6944 (304KB)

Come abbiamo potuto vedere si tratta di una vera miniera di informazioni.

Comunque la vera forza dell'uso di Nmap da linea di comando è nell'uso in combinazione con la shell o o qualche script. Ad esempio si può filtrare l'output tramite una pipe e il comando grep:

> nmap -sT -sR -sV -I -O -PI -PT -vv 10.0.0.7 | grep http

ci consegnerà la lista delle porte su cui è attivo un servizio http.

Ancora meglio se vogliamo tenere sotto controllo un certo host nel tempo si può fare un script, ad esempio in Perl, che venga azionato tramite crontab, che usi Nmap per scansionare un certo obiettivo ad intervalli periodici e che addirittura modifichi i parametri a seconda delle risposte che riceve.

Dalla versione 3.99 Nmap consente una certa interazione con l'utente durante l'esecuzione da linea di comando. In pratica una volta lanciato ad esempio con:

> nmap -sT -sR -sV -I -O -PI -PT 10.0.0.7

è possibile modificare i seguenti comportamenti digitando dei caratteri nella console o terminale:

v
incrementa li livello di verbosità, cioè di particolari riferiti (corrisponde all'opzione -v o -vv, ecc.).
V
decrementa il livello di verbosità.
b
incrementa la quantità dei messaggi di debug (corrisponde all'opzione -b o -bb, ecc.).
B
decrementa la quantità dei messaggi di debug.
p
abilità la tracciatura dei pacchetti IP usati. (corrisponde all'opzione -packet_trace).
P
disabilita la tracciatura dei pacchetti.
?
mostra l'elenco dei comandi suddetti.

Precedente - Indice - Successiva


Indice del sito