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 linea di comando che annna il pacchetto di rete. È più comunemente usato per la risoluzione dei problemi di reti e per i problemi di sicurezza dei test. Nonostante l'assenza di un'interfaccia utente grafica, è l'utilità più popolare, potente e versatile.

È originario di Linux in modo tale che la maggior parte delle distribuzioni Linux lo installassero come parte del sistema operativo standard. TCPDUMP è un programma interfacciato LiBPCAP, che è una libreria per l'acquisizione di dati di rete.

Questo articolo demistificerà TCPDump mostrando come catturare, leggere e analizzare il traffico di rete acquisito in questa utilità. In seguito useremo la nostra comprensione per ispezionare i pacchetti di dati con i filtri Flag TCP avanzati.

Installazione di TCPDump

L'installazione predefinita TCPDump nella tua distribuzione dipende dalle opzioni selezionate durante il processo di installazione. Nel caso dell'installazione personalizzata, è possibile che il pacchetto non sia disponibile. È possibile controllare l'installazione di TCPDUMP utilizzando 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.

Cattura dei pacchetti in TCPDump:

Per iniziare il processo di acquisizione, dobbiamo prima trovare la nostra interfaccia di lavoro usando "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 acquisizione, è possibile utilizzare la sintassi;

tcpdump [-options] [espressione]

Ad esempio, nel comando seguente, utilizziamo "-io"Opzione per acquisire traffico sul"enp0s3”Interfaccia, con un"-C"Flag per limitare i pacchetti catturati e scrivere"-w"È a un test_capture.PCAP file.

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

Allo stesso modo, è possibile utilizzare varie combinazioni di filtri per isolare il traffico secondo le tue esigenze. Uno di questi esempi include l'acquisizione di dati di rete che escono e arrivano all'host utilizzando il ospite comando per uno specifico porta. Inoltre, ho usato il "-N"Flag per impedire a TCPDump di catturare le ricerche DNS. Questa bandiera è molto utile per saturare il traffico durante la risoluzione dei problemi della rete.

Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.Porta 15 e DST 80 -W /TMP /TEST_CAPTURE1.PCAP
TCPDUMP: ascolto su ENP0S3, Link-Type EN10MB (Ethernet), dimensione di acquisizione 262144 byte
20 pacchetti catturati
21 pacchetti ricevuti tramite filtro
0 pacchetti lasciati cadere da kernel

Noi usiamo il "E"Comando per acquisire solo pacchetti contenenti l'host 10.0.2.15 e porta di destinazione 80. Allo stesso modo, possono essere applicati vari altri filtri per facilitare le attività di risoluzione dei problemi.

Se non vuoi usare il "-C"Flag per limitare il traffico di acquisizione, puoi usare un segnale di interrupt, i.e., Ctrl+c, per fermare il processo di isolamento.

Leggendo i file TCPDump

Leggere i file catturati TCPDump può essere molto travolgente. Per impostazione predefinita, TCP assegna i nomi a indirizzi e porte IP. Useremo il “-R"Flag per leggere il nostro file già catturato test_capture.PCAP salvato nel /TMP cartella. Faremo l'uscita Awk comanda di emergere solo l'indirizzo IP di origine e le porte e pipiscilo 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 da file /tmp /test_capture.PCAP, tipo Link EN10MB (Ethernet)
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298

Tuttavia, si consiglia di utilizzare indirizzi IP e porte in numeri per risolvere i problemi di networking. Disabiliteremo la risoluzione dei nomi IP con "-N"Flag e nomi di porte con"-nn".

Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
TCPDUMP: output verbosio soppresso, utilizzare -v o -vv per il decodifica del protocollo completo
Ascolto su ENP0S3, tipo Link 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, Win 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, Win 65535, lunghezza 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: bandiere [.], Ack 39, vinci 65535, lunghezza 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: bandiere [.], Ack 46, vinci 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, vinci 65535, lunghezza 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: bandiere [P.], seq 1:40, Ack 123, vinci 65535, lunghezza 39

Comprensione dell'output catturato

TCPDump cattura molti protocolli, tra cui UDP, TCP, ICMP, ecc. Non è facile coprirli tutti qui. Tuttavia, è importante capire come vengono visualizzate le informazioni e quali parametri include.

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

. > .: , , , , ,

Spieghiamo uno dei campi di pacchetti catturati per campo:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: bandiere [P.], SEQ 1276027591: 1276027630, ACK 544039114, Win 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 di connessione. In questo caso, [P.] indica il pacchetto di riconoscimento push. Il campo della bandiera include anche alcuni altri valori come:
    1. S: syn
    2. P: Push
    3. [.]: Ack
    4. F: pin
    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 in assoluto, 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 mostra il prossimo numero di sequenza di dati previsti.
  • Win 63900: la dimensione della finestra raffigura il numero di byte disponibili nel buffer ricevuto.
  • Lunghezza 39: durata dei dati del payload, in byte.

Filtri avanzati

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

Possiamo usare queste informazioni accendendo questi bit 00011000 o 24 per visualizzare pacchetti di dati con solo flag PSH e ACK. Passiamo questo numero a TCPDump con il filtro "TCP [13] = 24“, Notare che l'indice di array in TCP inizia a zero.

Filtro questo pacchetto dal nostro text_capture.PCAP file e usa il file -UN Opzione per visualizzare tutti i dettagli del pacchetto per te.

Allo stesso modo, puoi filtrare alcuni altri pacchetti di flag utilizzando "TCP [13] = 8" e "TCP [13] = 2" solo per PSH e SYN FLAGS, ecc.

Ubuntu $ ubuntu: ~ $ sudo tcpdump -a 'tcp [13] = 24' -r /tmp /test_capture.PCAP
Lettura da file /tmp /test_capture.PCAP, tipo Link EN10MB (Ethernet)
19:26:17.827902 IP Ubuntu.53298> 32.121.122.34.avanti Cristo.GoogleUserContent.com.http: flags [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 della connettività.Ubuntu.com
Accetta: */ *
Connessione: chiudere

Conclusione

In questo articolo, ti abbiamo presentato alcuni degli argomenti più importanti di TCPDump. TCPDump, combinato con il potere 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 di riga di comando possono contribuire molto alle attività quotidiane per la risoluzione dei problemi e l'automazione e la comprensione generale della rete.