Home Network & Sniffing Scoviamo l'intruso con Nmap
Scoviamo l'intruso con Nmap
Network & Sniffing
Mercoledì 03 Febbraio 2010 14:51

Anche se impostamo la password giusta non è detto che nessuno riesca a introdursi e sfruttare la nostra rete wireless.

Esistono vari programmi per vedere chi è connesso, e anche il router wireless ha degli strumenti per fare ciò.

Ma io preferisco usare NMAP.

Questo programma open source e multi-piattaforma (cioè disponibile sia per linux, che per mac che per windows) nasce come semplice port scan, per poi diventare una specie di "tutto fare": analizza le porte, scova chi è connesso, scopre i sistemi operativi usati, ecc.

Può fare questo grazie alle moltissime opzioni offerte.

Io lo uso spesso e grazie a lui ultimamente ho scovato un paio di intrusi.

Possiamo usare nmap sia tramite interfaccia grafica, sia da terminale.

In verità su windows, su mac e sulla maggior parte delle distro viene installata una gui di default, ma non è obbligatoria usarla.

Anzi, io preferisco il terminale e spiegherò il suo funzionamento proprio tramite riga di comando.

La sintassi è semplice: nmap <tipo di scan> <opzioni> <target>.

Cominciamo proprio dal target.

 

Innanzitutto dovete identificare il vostro ip locale.

Aprite un terminale e:

$ ifconfig

eth0      Link encap:Ethernet  HWaddr 00:18:8B:C1:56:12  
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
Interrupt:17

lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1000 (1000.0 b)  TX bytes:1000 (1000.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:1B:77:12:5C:4A  
inet addr:192.168.1.106  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::21b:77ff:fe12:5c4a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:23033 errors:0 dropped:0 overruns:0 frame:0
TX packets:20900 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26877449 (25.6 Mb)  TX bytes:3561049 (3.3 Mb)

In questo caso sono connesso con wlan0 e in rosso c'è il mio ip.

Quindi la mia rete locale appartiene alla classe 192.168.1.1.

Ce ne stanno altre, tipo 192.168.0.1, 10.0.0.0, ecc.

Possiamo decidere se fare uno scan su un solo ip o su tutta la rete locale (che conviene).

Per fare la seconda imposteremo come target 192.168.1.1/24, o 192.168.1.1-255 (ho preso la mia rete come esempio).

Per quanto riguarda i tipi di scan, nè abbiamo parecchi; vi elenco i più usati:

TCP connect() * -sT
Questo è lo scan di base. La chiamata connect() cercherà di stabilire una
connessione TCP completa (3way handshake) con ogni porta dell'host remoto. Se la
porta è in ascolto, connect() avrà successo e la porta verrà segnalata aperta,
altrimenti chiusa. Per eseguire questo scan non hai bisogno dei permessi di
root.

Scan TCP SYN * -sS
Questa tecnica è anche conosciuta come scanning "half-open" (mezzo aperto),
perchè non si stabilisce una connessione TCP completa. In pratica questo tipo di
scan manda un pacchetto SYN all'host remoto; se questo risponde con un SYN\ACK,
vuol dire che la porta è aperta, se invece risponde con un RST, la porta è
chiusa.  Una volta che abbiamo ricevuto il SYN\ACK, verrà immediatamente mandato
un RST per interrompere la connessione.  Pochi host loggheranno questo tipo di scan, ma per effettuarlo sono necessari i permessi di root.

Ping scanning * -sP
Questo tipo di scan serve solo a verificare quali macchine sono attive nella
rete che vogliamo verificare. Normalmente, questo scan avviene mandando un ICMP
echo a ogni indirizzo IP della rete, ma siccome ci sono delle reti che bloccano
i pacchetti ICMP echo (vedi microsoft.com), vengono usati altri 2 metodi per
verificare se una macchina è attiva. Il primo modo è di mandare un pacchetto TCP
ack alla porta 80; se arriva un RST, vuol dire che la macchina è attiva. L'altro
modo è mandare un pacchetto SYN e aspettare un RST o un SYN\ACK. Se non abbiamo
i permessi di root, verrà usato il metodo connect().

UDP scan * -sU
Questo metodo viene utilizzato per trovare le porte UDP aperte su un host. Per
fare ciò, il nostro buon nmap manda dei pacchetti udp di 0 byte all'host che ci
interessa. Se riceviamo un messaggio ICMP port unreachable, vuol dire che la
porta è chiusa, altrimenti pensiamo che la porta è aperta.

ACK scan * -sA
Questo metodo avanzato serve a rintracciare i rules di un firewall. Questo tipo
di scan manda un pacchetto ACK alle porte specificate. Se riceviamo un RST, la
porta è classeificata come non filtrata (unfiltered); se invece non riceviamo
niente, oppure riceviamo un ICMP unreachable, la porta è classificata filtrata (filtered). Questo tipo di scan non mostra le porte aperte (open).

Version scan * -sV
Mosta le applicazioni in ascolto su una porta.
Molto utile per effettuare attacchi di tipo buffer overflow.

Io in genere uso -sP o -sS che sono i più semplici e che vanno più che bene per una rete di casa.

Per quanto riguarda le opzioni invece le più comuni sono:

-O per identificare il sistema operativo usato dai pc in rete e che non può essere usato con -sP

-p <intervallo porte> se non si vuole analizzare tutte le porte, ma solo alcune

-e <interfaccia> che dice a nmap quale interfaccia manda segnali.

In genere mi basta -O.

A questo punto facciamo qualche esempio:

# nmap -sP 192.168.1/24

Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-03 15:14 CET
Nmap scan report for 192.168.1.1
Host is up (0.0059s latency).
MAC Address: 00:1E:E5:94:A5:8A (Cisco-Linksys)
Nmap scan report for 192.168.1.106
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 4.68 seconds

In questo caso ha trovato due host, il mio e il router.

Vediamo adesso l'altro scan che uso sempre:

# nmap -sS -O 192.168.1.1/24

Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-03 15:15 CET
Nmap scan report for 192.168.1.1
Host is up (0.0046s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE
80/tcp    open  http
443/tcp   open  https
49152/tcp open  unknown
MAC Address: 00:1E:E5:94:A5:8A (Cisco-Linksys)
Device type: WAP
Running: AVM embedded, Netgear embedded, Linksys embedded
OS details: AVM FRITZ!Box FON WLAN 7050, Linksys WAG200G, or Netgear DG834GT wireless broadband router
Network Distance: 1 hop

Nmap scan report for 192.168.1.100
Host is up (0.020s latency).
Not shown: 999 closed ports
PORT      STATE SERVICE
62078/tcp open  iphone-sync
MAC Address: 00:26:08:66:F0:A1 (Apple)
Device type: phone
Running: Apple iPhone OS 3.X
OS details: Apple iPhone mobile phone (iPhone OS 3.0 - 3.2, Darwin 10.0.0d3)
Network Distance: 1 hop

Nmap scan report for 192.168.1.106
Host is up (0.000029s latency).
All 1000 scanned ports on 192.168.1.106 are closed
Too many fingerprints match this host to give specific OS details
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 256 IP addresses (3 hosts up) scanned in 16.98 seconds

Come vedete ho connesso anche l'iphone e l'ha trovato.

Inoltre identifica anche il sistema usato, ma solo degli altri host, non del pc da dove eseguo lo scan.

Su windows da addirittura errore, mentre su linux si limita a un "Too many fingerprints match this host to give specific OS details".

Quindi in sostanza dovrete fare lo scan da un altro pc (sempre che non sappiate davvero che OS state usando, il che sarebbe grave ;)).

Potete anche non dare opzioni ma solo il target:

# nmap 192.168.1.1/24

Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-03 15:20 CET
Nmap scan report for 192.168.1.1
Host is up (0.047s latency).
Not shown: 997 closed ports
PORT      STATE SERVICE
80/tcp    open  http
443/tcp   open  https
49152/tcp open  unknown
MAC Address: 00:1E:E5:94:A5:8A (Cisco-Linksys)

Nmap scan report for 192.168.1.106
Host is up (0.000011s latency).
All 1000 scanned ports on 192.168.1.106 are closed

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.94 seconds

Questo comando è quello basilare: effettua un ping e scansiona le porte.

E' molto simile a -sP, ed uguale a -sT

Vi ricordo infine che per eseguire alcuni tipi di scano sono richiesti i privilegi di root.

Ultimo aggiornamento Lunedì 10 Ottobre 2011 22:32
 

Commenti  

 
0 #1 just 2010-03-07 11:05
interessante, ma... c'è un modo per evitare che un malintenzionato veda queste porte con annessi servizi? e una volta che le vede cosa può fare se sto dietro a un netgear?
Citazione
 
 
0 #2 fermat 2010-03-07 11:18
uhm domanda interessante, ma nn penso ci sia un modo per fare quello che chiedi.
cmq già il fatto stesso che stai dietro router ti protegge da eventuali attacchi perchè cmq l'attaccante nn sa poi dove redigere l'attacco in locale.
nn so se mi sono spiegato.
cmq potresti provare a fare dei test tipo questo http://www.hackerwatch.org/PROBE/
Citazione
 
 
0 #3 just 2010-03-07 11:49
il fatto è che la mia linea adsl è caduta già varie volte a causa di questi attacchi provenienti da persona a me nota. grazie provo il test
Citazione
 
 
0 #4 just 2010-03-07 11:52
fatto, mi rimanda errori per entrambi i primi due test. pcflank già lo provai e sembro protetto, però evidentemente una volta identificato il pc qualcosa si può fare eccome router o non router
Citazione
 
 
0 #5 fermat 2010-03-07 11:52
bisognerebbe capire che tipi di attacco sono.
se gli attacchi sono tipo ddos ci puoi fare poco da quanto ne so.
ma chi ti attacca lo fa collegato al tuo router o da fuori?
nel primo caso negagli l'accesso, nel secondo potresti chiedere al tuo provider ti cambiarti indirizzo ip....
Citazione
 
 
0 #6 just 2010-03-07 12:03
da fuori e ho un ip dinamico ma penso che il tipo in questione riesca in qualche modo a vedere i miei ip. grazie cmq
Citazione
 
 
0 #7 fermat 2010-03-07 12:41
uhm bella grana questa.
ma scusa, nn per farmi gli affari tuoi, ma se hai chi è nn puoi denunciarlo?
o cmq prova a farlo presente al tuo provider.....
Citazione
 

Aggiungi commento