Sniffing e uso di Tcpdump per controllare il traffico di rete

Tcpdump è uno dei software più completi e utilizzati per l’analisi del traffico su una rete locale.
In questo tutorial andremo ad utilizzare la versione per linux.

In alternativa, per sistemi Microsoft, esiste una versione chiamata Windump.

Un ottimo programma, con veste grafica, per diversi sistemi operativi (Apple Osx, Linux, Microsoft) è Wireshark.

Vediamo alcune delle opzioni che il programma tcpdump mette a disposizione:

-a Permette di convertire indirizzi broadcast e ip in nomi.
-c : Esce dopo aver ricevuto un tot di pacchetti (es. c100).
-C Setta la grandezza del file salvato con il flag -w.
-D : Mostra l’elenco delle interfacce disponibili.
-e : Stampa il mac address in ogni pacchetto catturata.
-E : Decrittografa il traffico IPSEC fornendo una chiave di crittografia.
-F Permette di fornire i filtri da un file.
-i any : Rimane in ascolto su tutte le interfacce di rete presenti nel computer host.
-i eth0 : Definisce l’interfaccia di rete. (es. -i eth0 o -i lo).
-n : Non risolvere i nomi degli host.
-nn : Non risolvere nomi di host o nomi di porte.
-p L’interfaccia locale non viene settata in modalità promiscua.
-q : Visualizza il minor numero di informazioni possibili.
-r Utilizza il file specificato come input per i dati da filtrare.
-s : Indica la quantità in bytes di un pacchetto catturato (di default usando linux Slackware è 92 bytes).
-S : Print absolute sequence numbers.
-t : Non stampa il contrassegno temporale per ogni pacchetto catturato.
-tt Stampa il contrassegno temporale (timestamp) non formattato su ogni linea
-tttt : Fornisci l’output timestamp comprensibile dall’uomo.
-v, -vv, -vvv : Aumenta la quantità di informazioni sui pacchetti che si riceve.
-w scrive su file il risultato dello sniffing (es. -w file), utile per poter essere analizzato successivamente.
-x Visualizza in hex
-X : Stampa i pacchetti in formato HEX e ASCII.
-XX : Uguale a -X, ma mostra anche l’intestazione ethernet.

Alcuni esempi  Tcpdump:

tcpdump -i eth0 -c 100

– Visualizza 100 pacchetti (-c 100) sull’interfaccia eth0 e poi esce.

tcpdump -l | tee datitcpdump.log

– Mentre visualizza i pacchetti li mette in un buffer che viene scritto sul file datitcpdump.log.

tcpdump -i eth0 -w datitcpdump.log

– I dati verranno scritti sul file datitcpdump.log.

tcpdump -e -n

– Visualizza gli indirizzi del data link  e non prova a fare un DNS reverse lookup .

tcpdump port 80

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

tcpdump host 10.0.0.100 and not port 80

– Visualizza solo i pacchetti relativi all’host 10.0.0.100 che non usino la porta 80

tcpdump net 10.0.0.0/24 and port 80

– Visualizza tutti i pacchetti per la rete 10.0.0.0/24 relativi al protocollo in ascolto sulla porta 80

tcpdump host 192.168.100.250

– Visualizza solo i pacchetti che hanno come IP sorgente o destinazione 192.168.100.250.

tcpdump port http or port ftp -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user'

– Nel caso volessi sniffare il traffico in una rete molto frequentata e trovare credenziali di login inserite da qualcuno, il metodo migliore potrebbe essere questo.

tcpdump -n -A | grep -e 'POST'

– In questo caso intercetto tutto il traffico e filtro solo le richieste POST, che di solito sono inserimenti di password.

Filtri e sintassi:

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

‘!’ oppure ‘not’ Simbolo di negazione, ovvero inverte il matching

‘&&’ oppure ‘and’ simbolo di concatenazione, visualizza il pacchetto che fa il match di tutte le regole concatenate

‘||’ oppure ‘or’ simbolo di alternanza.

Per una guida più dettagliata vi rimando al  manuale ufficiale, in lingua inglese, al seguente link: man tcpdump.
oppure tramite l’help a riga di comando:

man tcpdump

o

tcpdump --help

Loading