Come utilizzare tcpdump per la cattura dei pacchetti

Catturare i pacchetti è un modo molto utile per analizzare il funzionamento interno di una rete. Esistono diversi strumenti appositamente sviluppati per questo scopo. Uno di questi è tcpdump. Qui ti mostriamo come fare il miglior uso di questo grande strumento sia per ingegneri di rete che per tester di penetrazione.
Indice
- Cos’è tcpdump?
- Installazione
- Le basi
- Specificare un’interfaccia di rete
- Specificare una porta/intervallo di porte
- Specificare un host o una subnet
- Specificare la verbosità
- Salvare la cattura in un file
- Domande frequenti
Leggi anche: Tor vs. VPN: E’ uno migliore dell’altro?
Cos’è tcpdump?
tcpdump è uno strumento di analisi dei pacchetti di rete sviluppato e rilasciato nel 1988 da un team di scienziati informatici che lavoravano presso il Lawrence Berkeley Laboratory e il suo Network Research Group. Viene utilizzato per visualizzare i contenuti dei pacchetti che un computer invia e riceve. L’utilità offre una varietà di opzioni per rendere la cattura dei pacchetti più specifica e mirata. Alcune di queste opzioni includono diversi protocolli di rete e interfacce di rete.
Installazione
Molte distribuzioni Linux vengono fornite con l’utilità già installata di base. Tuttavia, se la tua distribuzione di scelta non lo include, l’installazione è fortunatamente rapida e semplice.
Se stai usando Ubuntu o Debian, ad esempio, può essere installato usando apt:
sudo apt install tcpdumpSu CentOS, ciò avviene usando yum:
sudo yum install tcpdumpE su Arch Linux utilizzando pacman:
sudo pacman -S tcpdumpLeggi anche: Cos’è il Routing a Cipolla e come puoi riottenere la tua privacy
Le basi
Con tcpdump installato, puoi dare un’occhiata al manuale usando il flag -h:
tcpdump -hQuesto ti mostrerà un elenco dei flag che puoi utilizzare quando usi lo strumento.

Se vuoi dare un’occhiata a un manuale più completo e dettagliato, puoi visualizzare la pagina man (pagina del manuale) usando il comando man:
man tcpdump
Puoi eseguire una cattura di pacchetti di base digitando:
tcpdumpUsando il comando da solo e senza specificare un’interfaccia di rete, lo strumento sceglierà una delle interfacce disponibili sul tuo sistema.
Se non vuoi che tcpdump risolva i nomi host e desideri invece che restituisca solo indirizzi IP, puoi usare il flag -n:
tcpdump -nSe vuoi specificare il numero di pacchetti che desideri catturare, usa il flag -c:
tcpdump -c[numero di pacchetti]Specificare un’interfaccia di rete
Puoi specificare l’interfaccia di rete di tua scelta usando il flag -i:
tcpdump -i[interfaccia]Due dei nomi di interfaccia di rete più comuni su molti sistemi sono eth0 e wlan0:
tcpdump -i eth0
tcpdump -i wlan0Se desideri catturare dati su tutte le interfacce, puoi usare l’opzione any:
tcpdump -i anyLeggi anche: Switch Ethernet vs. Hub vs. Splitter: Qual è la differenza?
Specificare una porta/intervallo di porte
Se desideri catturare solo i dati che utilizzano un numero di porta specifico, usa il comando:
tcpdump -i[interfaccia] port [numero di porta]Supponiamo che tu voglia catturare il traffico sull’interfaccia eth0 e sulla porta 443 (HTTPS). Digita quanto segue:
tcpdump -i eth0 port 443Inoltre, tcpdump ti consente di specificare un intervallo di porte:
tcpdump -i[interfaccia] portrange [intervallo di porte]Specificare un host o una subnet
Ci saranno momenti in cui desideri limitare i pacchetti catturati solo a quelli inviati/ricevuti da un host o da una subnet specifica. Fortunatamente, tcpdump ti consente di farlo.
Puoi specificare un host usando il formato seguente:
tcpdump -i[interfaccia] host [host]Ad esempio, cattura il traffico sull’interfaccia eth0 e specifica l’host come 127.0.0.1 (il tuo stesso indirizzo IP di loopback):
tcpdump -i eth0 host 127.0.0.1Se desideri specificare una subnet di rete utilizzando la notazione CIDR, puoi utilizzare il seguente formato:
tcpdump -i[interfaccia] net [subnet]Ad esempio:
tcpdump -i eth0 net 10.0.0.0/8Puoi anche specificare direttamente un host sorgente:
tcpdump -i[interfaccia] src [host]E un host di destinazione:
tcpdump -i[interfaccia] dst [host]Leggi anche: Come eseguire Nmap senza Root o Sudo
Specificare la verbosità
tcpdump ti consente di specificare la verbosità della cattura dei pacchetti. Questo è molto utile quando non vuoi essere sopraffatto dalla quantità di informazioni durante una cattura.
Ci sono tre opzioni incrementali per la verbosità, i flag -v, -vv e -vvv:
tcpdump -i[interfaccia] -v
tcpdump -i[interfaccia] -vv
tcpdump -i[interfaccia] -vvvLa prima opzione specifica la minore verbosità, mentre la terza opzione specifica la maggiore.
Salvare la cattura in un file
È spesso utile salvare i dati catturati in un file, affinché possano essere ulteriormente analizzati e interpretati.
Ciò si ottiene utilizzando il flag -w:
tcpdump -i[interfaccia] -w[nomefile]Come esempio, puoi salvare i dati catturati in un file chiamato “capture.txt”:
tcpdump -i eth0 -w capture.txtLeggi anche: Come aprire porte e configurare il port forwarding sul tuo router
Domande frequenti
1. Ho ricevuto un errore “Operazione non permessa”. Come posso risolverlo?
Il seguente è un errore comune che gli utenti possono ricevere quando cercano di utilizzare tcpdump:

tcpdump ti dà questo errore quando non hai i permessi necessari per effettuare la cattura dei pacchetti. Nella maggior parte degli scenari, puoi risolvere questo utilizzando sudo. Ad esempio:
sudo tcpdump -i eth02. Come posso sapere quali interfacce di rete sono disponibili?
tcpdump ha una funzionalità integrata che ti consente di controllare le interfacce di rete disponibili sul tuo sistema.
Per controllare le interfacce, usa il flag -D:
tcpdump -D