Sei sulla pagina 1di 6

Sniffing e uso di Tcpdump ed Ettercap: come

controllare al meglio la rete


Le informazioni che si scambiano i computer durante la trasmissione sono
identificate con il termine pacchetti. I dati da trasmettere sono suddivisi in piccoli
blocchi di dimensione variabile, in funzione del tronco di rete che attraversano, a
loro volta incapsulati in una struttura che contiene informazioni aggiuntive
necessarie per l'instradamento e la consegna di questi blocchi. I blocchi cosi
costruiti si chiamano pacchetti.
Le informazioni che si scambiano i computer durante la trasmissione sono identificate con il
termine pacchetti. I dati da trasmettere sono suddivisi in piccoli blocchi di dimensione
variabile, in funzione del tronco di rete che attraversano, a loro volta incapsulati in una struttura
che contiene informazioni aggiuntive necessarie per l’instradamento e la consegna di questi
blocchi. I blocchi così costruiti si chiamano pacchetti.

L’analisi del traffico di rete è lo strumento adatto nelle mani dell’amministratore per individuare
malfunzionamenti della rete, come server inattivi che non rispondono alle richieste di
connessione, o che rispondono in modo inatteso, errori di progettazione identificabili in
pacchetti indesiderati, o tentativi di intrusione, come discovery della struttura della rete o
connessioni non autorizzate. Questa attività di monitoraggio è identificata con il termine sniffing,
in quanto gli strumenti utilizzati catturano, sniffano il traffico in transito sulla rete, in maniera del
tutto trasparente, senza introdurre ritardi, deviazioni, o modifiche al contenuto dei pacchetti.

L’attività di sniffing il più delle volte è necessaria per monitorare e diagnosticare problematiche di
rete ma può essere impropriamente utilizzata per intercettare informazioni sensibili di terzi, come
login e password di accesso ad un determinato servizio.

Tipologie di rete
Occorre distinguere due tipologie di collegamento per gli host di una rete, a seconda
dell’elemento centrale utilizzato per la connessione:

 ad hub
 a switch

Nel primo caso un computer collegato sull’hub riceve tutto il traffico in transito sulla rete,
compreso quello che non è direttamente destinato a se stesso, per cui l’attività di sniffing
permette di analizzare anche pacchetti destinati e originati da indirizzi terzi, ampliando
notevolmente le possibilità di intercettare informazioni sensibili.
Nel secondo caso, i computer
collegati allo switch ricevono solo il traffico di cui sono destinatari, ed il traffico broadcast, vale a
dire, quello che per sua natura è destinato a tutti i computer della rete, lo sniffing interessa quindi
solo pacchetti originati dal o destinati al computer locale, ed i pacchetti broadcast.
Esiste tuttavia
una ulteriore tecnica, più complessa, tramite la quale è possibile sniffare pacchetti di terzi anche
in una rete switchata, e si tratta dell’arp spoofing.
Lo sniffing di pacchetti che non sono direttamente destinati dalla macchina locale, o da questa
spediti, prevede l’utilizzo di una modalità per la scheda di rete nota come promiscuos mode. Gli
strumenti utilizzati per lo sniffing sono diversi, da tcpdump, a wireshark, ettercap; alcuni sono
esplicitamente progettati per il monitoraggio, mentre altri come ettercap, sniffit o dsniff, hanno
una vocazione più orientata all’ausilio a tecniche di hacking e password recovery.

Tcpdump e l’analisi da riga di comando


Tcpdump è uno strumento molto flessibile e diffuso nel mondo Linux, utilizzato per l’analisi del
traffico ed il debug delle reti. Tcpdump si appoggia sulla libreria libcap, la librearia base per la
cattura dei pacchetti. La versione con GUI è Wireshark.

Tcpdump deve essere utilizzato con i privilegi di root, sia perché accede alla scheda di rete per
catturare i pacchetti a diversi livelli, sia perché così può essere adottata la modalità promiscua.

Le opzioni previste sono diverse, e consentono oltre che selezionare l’interfaccia su cui eseguire lo
sniffing, il numero di pacchetti da visualizzare, la porta o l’indirizzo IP come sorgenti e
destinazione dei pacchetti, e diversi altri filtri che consentono di selezionare anche uno specifico
protocollo. La limitazione di tcpdump, è nel fatto che mostra il contenuto dell’header dei
pacchetti, parsando le informazioni contenute, mentre non mostra il contenuto della parte dati.

Esempi d’uso di Tcpdump


Alcuni esempi di utilizzo di tcpdump con le opzioni più comuni:
tcpdump – Senza opzioni
tcpdump visualizza a schermo tutti i pacchetti che passano sull’interfaccia predefinita (di solito
eth0)

tcpdump -i ppp0 -c 50 – Visualizza 50 pacchetti (-c 50) sull’interfaccia ppp0 (-i ppp0) e poi esce.


tcpdump -l | tee sniff.log – Mentre visualizza i pacchetti li mette in un buffer (-l) che viene scritto
sul file sniff.log.

tcpdump -e -n – Visualizza gli indirizzi del data link (-e) e non prova a fare un DNS reverse lookup
(-n) velocizzando l’output.

tcpdump port 80 – Visualizza solo i pacchetti che hanno come sorgente o destinazione la porta
80

tcpdump host 192.168.0.150 – Visualizza solo i pacchetti che hanno come IP sorgente o
destinazione 192.168.0.150.

tcpdump host 10.0.0.150 and not port 22 – Visualizza solo i pacchetti relativi all’host 10.0.0.150
che non usino la porta 22, vale a dire quella associata al servizio ssh

tcpdump net 10.0.0.0/24 and port 22 – Visualizza tutti i pacchetti per la rete 10.0.0.0/24 relativi al
protocollo ssh
Filtri e sintassi
Lanciando tcpdump con l’opzione –h, come convenzione del mondo Linux, viene mostrato un
help sulla command line, in cui è presente un parametro expression. Le espressioni servono per
limitare il matching dei pacchetti, e far si che il tool catturi e mostri solo quello che
effettivamente viene richiesto nella expression, perché necessario all’utente.

Le espressioni di Tcpdump sono composte da primitive che possono essere raggruppate per
mezzo delle parentesi tonde (in modo da evitare ambiguità nell’ordine di risoluzione) e connesse
attraverso operatori booleani: (solo i pacchetti che soddisfano la condizione espressa vengono
presi in considerazione). Se l’espressione manca, vengono catturati tutti i pacchetti.

Alcune delle primitive ammissibili sono elencate di seguito, con gli operatori di concatenazione
per costruire filtri più complessi:

dst host [host] Specifica l’host di destinazione dei pacchetti

dst net Specifica la network di destinazione dei pacchetti

dst port Specifica la porta di destinazione dei pacchetti

src host [host] Specifica l’host sorgente dei pacchetti

src net Specifica la network sorgente dei pacchetti

src port Specifica la porta sorgente dei pacchetti

`!’ o `not’ Simbolo di negazione, ovvero inverte il matching

`&&’ or `and’ Simbolo di concatenazione, visualizza il pacchetto che fa il match di tutte le regole
concatenate

`||’ or `or Simbolo di alternanza.

All’interno delle primitive possono apparire riferimenti a diversi tipi di entità:

 type: dicono a che tipo di cose l’ID (numerico o nome) si riferisce. Possibili tipi sono host,
net o port.

 dir: entità che specifica una particolare direzione di trasferimento per e/oppure da un id.
Possibili direzioni sono src, dst, src or dst e src and dst (es. ‘src foo’, ‘dst net 128.3’, ‘src or
dst port ftp-data’). Il comportamento di default è src or dst.

 proto: entità che restringe la cattura ad un particolare protocollo. Possibili protocolli sono:
ether, fddi, ip, arp, rarp, decnet, lat, moprc, mopdl, tcp e udp (es. ‘ether src foo’, ‘arp net
128.3’, ‘tcp port 21’). Se il protocollo non è selezionato, vengono considerati tutti i
protocolli (es. ‘src foo’ significa ‘(ip o arp o rarp) src foo’).
Come realizzare un filtro con Tcpdump
protocollo[bytecount:offset] & 0x mask esadecimale operatore valore da comparare.

Esempi di filtro sono dati nel seguito:

 tcpdump –n “tcp[13:1] = 0x02”

contiene SYN e non risolve gli host in ip

 tcpdump “ip[12:4] = ip [16:4] ”

ip sorgente è uguale all’ip di destinazione

 tcpdump “ip[13] & 0x03 != 0”

contiene i pacchetti con il SYN e il FIN flag

 tcpdump “icmp and icmp[0] !=8 and icmp[0] != 0”

contiene tutti i pacchetti icmp che non sono ping

Altri ESEMPI di tcpdump:

 tcpdump -vvv -X -n -i lo “tcp[13:1] = 0x02 and port 80”

-vvv indica verbose (più informazioni)

-X visualizza in esadecimale e in ascii

-n non risolve l’indirizzo

-i lo indica il loopback

il filtro “tcp[13:1] indica il 13° byte – si mette in ascolto sulla porta 80

Ettercap
L’impossibilità di analizzare traffico con sorgente e destinazione diversi da quelli locali è una
tipica limitazione degli sniffer normali quando vengono utilizzati in reti con switch (la maggior
parte dei casi).

Ettercap, sviluppato da due programmatori italiani, è uno sniffer evoluto che permette di sniffare
tutto il traffico anche in reti in cui è presente uno switch, con una attività di arp cache
poisoning, che si traduce nell’invio di arp reply finte, che associano il mac address della macchina
su cui gira ettercap agli IP sorgente e destinatario, rispettivamente al destinatario e al sorgente,
tramite la quale si frappone fra macchine ignare e la macchina bersaglio, che può essere un server
o il gateway di una rete.
Ettercap inoltre offre diverse caratteristiche che orientano il suo uso per le attività di hacking, al
fine di testare la robustezza della rete.

 SSH e HTTPS password sniffing;


 Password collection per una moltidutide di protocolli;
 OS fingerprinting per il riconoscimento dei sistemi operativi sugli Host trovati in rete;
 Possibilità di killare una connessione o inserire caratteri estranei;
 Supporto di plugin per DNS spoofing, PPTP sniffing, etc.

Come si utilizza Ettercap



All’avvio, ettercap esegue un rapido scan degli host presenti nella rete locale, con un arp request
per ogni IP della rete e costruisce una lista che viene presentata all’utente. Dalla lista è possibile
selezionare gli IP sorgenti e destinatari da monitorare e si possono visualizzare le
opzioni.
Esistono diverse modalità di sniffing:

 IP based (s)
 MAC based (m)
 ARP poisoning based (a)

l’ultima è quella in grado di eseguire l’analisi, sniffando in ambienti con switch.

Lanciando ettercap con l’opzione G:

ettercap -G

Compare l’interfaccia grafica, sul menù della finestra di Ettercap, su Sniff –> Unified Sniffing –>
eth0, se tutto è andato ok inizierà lo sniffing, con la lista degli indirizzi IP in rete.

Su questa lista, tramite le altre opzioni è possibile accedere a diverse informazioni, quale ad
esempio il sistema operativo della macchina, oppure eseguire un Arp poisoning senza sniffare,
creare pacchetti personalizzati, eseguire uno scanning passivo, basandosi solamente sugli host
per cui c’è traffico, controllare se ci sono in rete altri arp cache poisoners.

Da riga di comando è possibile con l’opzione –h visualizzare l’elenco di tutte le opzioni messe a
disposizione dell’utente.

Quale strumento di sniffing utilizzare


La domanda è necessaria, considerata la moltitudine di tool presenti in circolazione ed in
commercio. Sicuramente le proposte free, e open source, sono più che valide, in quanto
forniscono tutti gli strumenti necessari per effettuare un’analisi approfondita.

Come visto, già da due soli esempi proposti non ci si può fermare o vincolare ad un solo tool,
ma sceglierne più di uno, in numero limitato che si completino, che vadano a sopperire alle
mancanze gli uni degli altri; ad esempio considerato che tcpdump, strumento diffusissimo,
consente l’utilizzo di filtri per selezionare solo i pacchetti di interesse, ed esegue il parsing di tutte
le informazioni contenute nell’header, ma non esamina il contenuto della parte dati di un
pacchetto, può essere necessario integrarlo con un prodotto che va a coprire questa mancanza.

A ciò voglio aggiungere che l’utilizzo di questi strumenti non può prescindere dalla conoscenza
teorica delle reti, del loro funzionamento, e dei protocolli al fine di effettuare le valutazioni esatte
sulla base dei risultati catturati da questi strumenti.