Ricerca nel sito web

Catturare i pacchetti con Tcpdump e analizzarli con Wireshark su Ubuntu


In questa guida, ti mostrerò come analizzare i pacchetti di rete su Linux. Userò gli strumenti Tcpdump e Wireshark. Questo tutorial utilizza Ubuntu come sistema operativo, ma è applicabile anche ad altre distribuzioni Linux.

Perché hai bisogno di Tcpdump?

Una domanda ovvia che potrebbe venire in mente è perché preoccuparsi di Tcpdump quando puoi fare quasi tutto con Wireshark. Bene, ecco la risposta per questo: a volte è più conveniente usare Tcpdump per l'acquisizione di pacchetti rispetto a Wireshark. Ad esempio, se la macchina di destinazione su cui stai catturando il pacchetto è remota senza Wireshark installato su di essa o è solo una macchina remota senza testa, in entrambi i casi, Tcpdump è molto utile. Per esaminare le varie opzioni che possono essere utilizzate con Tcpdump, cercare le pagine man.

Cos'è Tcpdump?

Tcpdump è un'alternativa da riga di comando a Wireshark. Ha lo stesso scopo di Wireshark, che sta catturando e analizzando il traffico. Tcpdump è un'applicazione separata e non dovrebbe essere considerata come un'interfaccia della riga di comando di Wireshark. Poiché si basa sull'interfaccia della riga di comando, non è così semplice da gestire come Wireshark. I nuovi utenti potrebbero trovarlo inizialmente scoraggiante quando iniziano a usarlo e possono trovare molti comandi e sintassi difficili da ricordare.

Schema di questo tutorial

Passiamo ora allo scopo principale di questa guida. In questa guida vedremo come possiamo interagire Tcpdump con Wireshark. Qui stiamo indicando il lavoro che faremo in questa guida:

  1. Connessione con la macchina remota (Host 2) con SSH.
  2. Catturare il traffico con Tcpdump e salvare la cattura.
  3. Invio del file Capture al computer in sede (Host 1) su cui è installato Wireshark.
  4. Utilizzo di Wireshark per l'analisi della sessione Tcpdump acquisita.

Controllo pre-volo

Per questo tutorial, stiamo usando due macchine Ubuntu 20.04. Devi configurarli da solo. La nostra configurazione IP è la seguente:

Host 1 (macchina in loco): 192.168.186.150

Host 2 (macchina remota): 192.168.186.201

I passaggi menzionati in questa guida dovrebbero funzionare su qualsiasi sistema Linux con i seguenti requisiti soddisfatti:

  1. Host in loco (Host 1) con Wireshark installato e SSH configurato.
  2. Accesso SSH dall'host in loco (Host 1) all'host remoto (Host 2).
  3. Tcpdump e SSH configurati sull'host remoto (Host 2).
  4. Account utente sudo su Host 2 per l'esecuzione di Tcpdump e anche su Host 1 (dipende da come è configurato Wireshark).

Cominciamo…

Per procedere oltre, connettiti dalla tua macchina in loco (Host 1) alla macchina remota (Host 2) con protocollo di accesso SSH. Abbiamo già impostato la connessione SSH tra le due macchine. Quindi useremo il comando seguente dal terminale Host 1 per connetterci a Host 2:

$ ssh ‘user_name’@’IP_of_Host2’

Qui sostituisci user_name con il nome utente dell'Host 2 a cui ci stiamo connettendo e IP_of_Host2 è l'indirizzo IP dell'Host 2. Vedi l'immagine qui sotto come riferimento:

$ tcpdump --list-interfaces

Risultato di esempio:

1.enp0s3 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-dispositivo che acquisisce su tutte le interfacce) [Up, Running]
4.eno1 [Up ]
5.bluetooth-monitor (Bluetooth Linux Monitor) [none]
6.nflog (interfaccia Linux netfilter log (NFLOG)) [none]
7.nfqueue (interfaccia Linux netfilter queue (NFQUEUE)) [none]
8.bluetooth0 (adattatore Bluetooth numero 0) [none]

$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap

  1. -s: le versioni precedenti di Tcpdump tagliano i pacchetti a 68 o 96 byte. L'opzione '-s' viene utilizzata per acquisire pacchetti di lunghezza completa.
  2. -i: Seleziona l'interfaccia su cui ascoltare.
  3. -w: salva i pacchetti grezzi catturati in un file invece di visualizzarli sul terminale.

Il traffico acquisito viene archiviato nel file denominato my_remote_capture.pcap. Ora trasferiremo questo file all'Host 1 per l'analisi con Wireshark. Per trasferire il file, stiamo usando il comando scp. Di nuovo, abbiamo già configurato scp per funzionare tra le due macchine. La sintassi del comando è come mostrato di seguito:

$ scp my_remote_capture.pcap 'username'@'IP_of_remote_machine':

Qui username è il nome dell'utente su Host 1 e IP_of_remote_machine è anche l'IP di Host 1.

Analisi del file di acquisizione

Applichiamo un filtro di visualizzazione al file sopra. Dato che eravamo connessi all'Host 2 tramite SSH, dovrebbero esserci tracce del protocollo SSH. Nel campo di testo corrispondente al filtro di visualizzazione inserisci ssh:

Avvolgendo…

Congratulazioni, abbiamo finalmente dimostrato come possiamo eseguire un'acquisizione remota su una macchina. Abbiamo visto come combinare Tcpdump con Wireshark.