tcpdump

Una guida all'utilità di analisi del traffico di rete TCPDUMP

Una guida all'utilità di analisi del traffico di rete TCPDUMP

Tcpdump è un'utilità da riga di comando per l'analisi dei pacchetti di rete. È più comunemente usato per la risoluzione dei problemi delle reti e il test dei problemi di sicurezza. Nonostante l'assenza di un'interfaccia utente grafica, è l'utilità da riga di comando più popolare, potente e versatile.

È nativo di Linux in modo tale che la maggior parte delle distribuzioni Linux lo installa come parte del sistema operativo standard. Tcpdump è un programma interfacciato con libpcap, che è una libreria per l'acquisizione di datagrammi di rete.

Questo articolo demistifica tcpdump mostrando come acquisire, leggere e analizzare il traffico di rete catturato in questa utility. In seguito utilizzeremo la nostra comprensione per ispezionare i pacchetti di dati con i filtri avanzati di flag TCP.

Installazione di Tcpdump

L'installazione predefinita di Tcpdump nella tua distribuzione dipende dalle opzioni selezionate durante il processo di installazione. In caso di installazione personalizzata, è possibile che il pacchetto non sia disponibile. Puoi controllare l'installazione di tcpdump usando il dpkg comando con il "-S" opzione.

ubuntu$ubuntu:~$ dpkg -s tcpdump

Oppure usa il comando "sudo apt-get install tcpdump" per installare tcpdump in Ubuntu Linux.

Acquisizione di pacchetti in Tcpdump:

Per iniziare il processo di acquisizione, dobbiamo prima trovare la nostra interfaccia funzionante utilizzando il "ifconfig"comando". Oppure possiamo elencare tutte le interfacce disponibili utilizzando il tcpdump comando con il "-D" opzione.

ubuntu$ubuntu:~$ tcpdump -D

Per iniziare il processo di cattura, puoi usare la sintassi;

tcpdump [-opzioni] [espressione]

Ad esempio, nel comando seguente, usiamo il "-io” per acquisire il traffico su “enp0s3” interfaccia, con un “-c” flag per limitare i pacchetti catturati e scrivere “-w"lo ad a test_capture.pcap file.

ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -c 20 -w /tmp/test_capture.pcap

Allo stesso modo, puoi utilizzare varie combinazioni di filtri per isolare il traffico in base alle tue esigenze. Uno di questi esempi include l'acquisizione dei dati di rete in partenza e in arrivo all'host utilizzando il ospite comando per uno specifico porta. Inoltre, ho usato il "-n” flag per impedire a tcpdump di acquisire le ricerche DNS. Questo flag è molto utile per saturare il traffico durante la risoluzione dei problemi di rete.

ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.15 e dst porta 80 -w /tmp/test_capture1.pcap
tcpdump: ascolto su enp0s3, tipo di collegamento EN10MB (Ethernet), dimensione di cattura 262144 byte
20 pacchetti catturati
21 pacchetti ricevuti dal filtro
0 pacchetti eliminati dal kernel

Noi usiamo il "e” comando per catturare solo i pacchetti contenenti host 10.0.2.15 e porta di destinazione 80. Allo stesso modo, è possibile applicare vari altri filtri per facilitare le attività di risoluzione dei problemi.

Se non si desidera utilizzare il "-c” flag per limitare il traffico di acquisizione, è possibile utilizzare un segnale di interruzione, i.e., Ctrl+C, per fermare il processo di isolamento.

Lettura di file Tcpdump

La lettura dei file acquisiti da tcpdump può essere molto opprimente. Per impostazione predefinita, tcp assegna nomi a indirizzi IP e porte. Useremo il "-r” flag per leggere il nostro file già catturato test_capture.pcap salvato nel /tmp cartella. Indirizzeremo l'output a awk comando per restituire solo l'indirizzo IP e le porte di origine e reindirizzarlo al comando testa per visualizzare solo le prime 5 voci.

ubuntu$ubuntu:~$ sudo tcpdump -r /tmp/test_capture1.pcap | awk -F “ ” 'print$3' | testa -5
lettura dal file /tmp/test_capture.pcap, tipo di collegamento EN10MB (Ethernet)
ubuntu IP.53298
Ubuntu IP.53298
ubuntu IP.53298
Ubuntu IP.53298
ubuntu IP.53298

Tuttavia, si consiglia di utilizzare gli indirizzi IP e le porte in numeri per risolvere i problemi di rete. Disattiveremo la risoluzione del nome IP con il "-n” nomi di bandiera e porta con “-nn“.

ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -n
tcpdump: output dettagliato soppresso, utilizzare -v o -vv per la decodifica completa del protocollo
ascolto su enp0s3, tipo di collegamento EN10MB (Ethernet), dimensione di acquisizione 262144 byte
20:08:22.146354 IP 10.0.2.15.54080 > 172.67.39.148.443: Bandiere [P.], seq 1276027591:1276027630, ack 544039114, vittoria 63900, lunghezza 39
20:08:22.146745 IP 10.0.2.15.43456 > 54.204.39.132.443: Bandiere [P.], seq 3381018839:3381018885, ack 543136109, vittoria 65535, lunghezza 46
20:08:22.147506 IP172.67.39.148.443 > 10.0.2.15.54080: Bandiere [.], ACK 39, vittoria 65535, lunghezza 0
20:08:22.147510 IP 54.204.39.132.443 > 10.0.2.15.43456: Bandiere [.], ACK 46, vittoria 65535, lunghezza 0
20:08:22.202346 IP 216.58.209.142.443 > 10.0.2.15.41050: Bandiere [P.], seq 502925703:502925826, ack 1203118935, vittoria 65535, lunghezza 123
20:08:22.202868 IP 10.0.2.15.41050 > 216.58.209.142.443: Bandiere [P.], seq 1:40, ris. 123, vittoria 65535, lunghezza 39

Comprensione dell'output acquisito

Tcpdump cattura molti protocolli, inclusi UDP, TCP, ICMP, ecc. Non è facile coprirli tutti qui. Tuttavia, è importante capire come vengono visualizzate le informazioni e quali parametri includono.

Tcpdump visualizza ogni pacchetto in una riga, con un timestamp e informazioni rispetto al protocollo. In generale, il formato di un protocollo TCP è il seguente:

. > .: , , , , ,

Spieghiamo uno dei campi del pacchetto catturato per campo:

20:08:22.146354 IP 10.0.2.15.54080 > 172.67.39.148.443: Bandiere [P.], seq 1276027591:1276027630, ack 544039114, vittoria 63900, lunghezza 39
  • 20:08:22.146354: Timestamp del pacchetto catturato
  • IP: protocollo di livello di rete.
  • 10.0.2.15.54080: questo campo contiene l'indirizzo IP di origine e la porta di origine.
  • 172.67.39.148.443: questo campo rappresenta l'indirizzo IP di destinazione e il numero di porta.
  • Bandiere[P.]/: I flag rappresentano lo stato della connessione. In questo caso, [P.] indica il pacchetto di conferma PUSH. Il campo flag include anche alcuni altri valori come:
    1. S: SIN
    2. P: PUSH
    3. [.]: ACK
    4. F: FIN
    5. [S.]: SYN_ACK
    6. R: RST
  • seq 1276027591:1276027630: Il numero di sequenza nel primo: l'ultimo formato indica il numero di dati nel pacchetto. Escludendo il primo pacchetto in cui i numeri sono assoluti, i pacchetti successivi hanno numeri relativi. In questo caso, i numeri qui indicano che il pacchetto contiene byte di dati da  1276027591 a 1276027630.
  • ack 544039114: Il numero di riconoscimento rappresenta il successivo numero di sequenza dati previsto.
  • win 63900: la dimensione della finestra rappresenta il numero di byte disponibili nel buffer ricevuto.
  • lunghezza 39: lunghezza dei dati del carico utile, in byte.

Filtri avanzati

Ora possiamo utilizzare alcune opzioni avanzate di filtro dell'intestazione per visualizzare e analizzare solo i pacchetti di dati. In qualsiasi pacchetto TCP, i flag TCP iniziano dal 14° byte in modo che  PSH e ACK siano rappresentati dal 4° e 5° bit.

Possiamo usare queste informazioni attivando questi bit 00011000 o 24 per visualizzare i pacchetti di dati con solo i flag PSH e ACK. Passiamo questo numero a tcpdump con il filtro “tcp[13]=24", si noti che l'indice dell'array in TCP inizia da zero.

Filtreremo questo pacchetto dal nostro text_capture.pcap file e usa il -UN opzione per visualizzare tutti i dettagli del pacchetto per te.

Allo stesso modo, puoi filtrare alcuni altri pacchetti di flag usando “tcp[13]=8” e “tcp[13]=2” solo per flag PSH e SYN, ecc.

ubuntu$ubuntu:~$ sudo tcpdump -A 'tcp[13]=24' -r /tmp/test_capture.pcap
lettura dal file /tmp/test_capture.pcap, tipo di collegamento EN10MB (Ethernet)
19:26:17.827902 IP Ubuntu.53298 > 32.121.122.34.avanti Cristo.googleusercontent.come.http: Bandiere [P.], seq 4286571276:4286571363, ack 252096002, win 64240, lunghezza 87: HTTP: GET / HTTP/1.1
E... :?@[email protected].
… "zy .2.P… P… GET / HTTP/1.1
Host: controllo connettività.ubuntu.come
Accetta: */*
Connessione: chiusa

Conclusione

In questo articolo, ti abbiamo presentato alcuni degli argomenti più importanti di tcpdump. Tcpdump, combinato con la potenza della CLI, può essere di grande aiuto nella risoluzione dei problemi di rete, nell'automazione e nella gestione della sicurezza. Una volta studiati e combinati, i suoi filtri e le opzioni della riga di comando possono contribuire molto alle attività quotidiane di risoluzione dei problemi e di automazione e alla comprensione generale della rete.

Come invertire la direzione di scorrimento del mouse e dei touchpad in Windows 10
Topo e Touchpads non solo rende l'elaborazione semplice, ma anche più efficiente e richiede meno tempo. Non possiamo immaginare una vita senza questi ...
Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...
Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....