Se si dispone di un sistema operativo Unix o simile a Unix (Linux, Mac OS), è possibile utilizzare tcpdump per esaminare il traffico di rete. Il programma tcpdump è un’utilità della riga di comando che può essere installata gratuitamente. Non è comunemente integrato nei sistemi operativi, quindi è necessario installarlo dal registro GitHub di tcpdump o dal sito Web ufficiale di tcpdump.
Elementi di tcpdump
L’utilità di acquisizione dei pacchetti utilizzata da tcpdump è fornita da libpcab, che è una libreria di procedure C / C ++. Il principale programma tcpdump è l’interfaccia per il processo di acquisizione dei pacchetti. Una volta eseguito, avvierà il processo libcap per acquisire i pacchetti e quindi visualizzarne i contenuti sullo schermo. A meno che non venga specificato un limite al numero di pacchetti da acquisire all’avvio del programma, continuerà a funzionare per sempre. L’elaborazione viene quindi terminata da un segnale di interruzione (Control-C).
Il programma viene eseguito dalla riga di comando e include una serie di opzioni, che sono indicate da flag. Questi flag modificano il comportamento del programma per farlo selezionare i pacchetti che corrispondono a un modello specificato, limitarne il tempo di esecuzione o farlo leggere i pacchetti memorizzati da un file anziché dall’interfaccia di rete.
Formato tcpdump
Il comando tcpdump può essere emesso da solo o con opzioni, parametri e / o espressioni regolari. Nessuno di questi elementi è obbligatorio e l’ordine non è importante.
tcpdump <-option_identifier>
Opzioni di Tcpdump
Il comando tcpdump è seguito da opzioni, note anche come bandiere. Ognuno di questi è indicato da un trattino seguito da una lettera. Di seguito è riportato un elenco di ciascuna di queste bandiere.
-UN stampare pacchetti in ASCII senza le intestazioni a livello di collegamento
-B mostra che il numero AS è in formato ASDOT
-B dimensione buffer in unità di KiB (1024 byte
-c contare – il limite dei pacchetti da acquisire
-C dimensione del file – il processo creerà un nuovo file una volta riempito questo limite di dimensioni del file; La dimensione è x 1 milione di byte
-d Scarica il codice compilato di corrispondenza dei pacchetti in ASCII
-dd Dump del codice di corrispondenza dei pacchetti come a C frammento di programma
-ddd Dump del codice di corrispondenza dei pacchetti come numeri decimali preceduti da un conteggio
-D Elencare tutte le interfacce accessibili
-e Stampa l’intestazione a livello di collegamento su ciascuna linea di dump
-E spi @ ipaddr algo: segreto – per decrittografare i pacchetti ESP IPsec:
spi è l’indice dei parametri di sicurezza
ipaddr è l’indirizzo di destinazione sul pacchetto
algo è l’algoritmo, predefinito su DES-CBC e il campo è facoltativo.
I valori possibili sono:
- DES-CBC
- 3des-cbc
- blowfish-cbc
- rc3-CBC
- CAST128-CBC
segreto è il testo ASCII per la chiave segreta ESP. Se preceduto da 0x, si tratta di un valore esadecimale
-f Stampa indirizzi IPv4 “stranieri” in modo numerico anziché simbolico
-F file – uso file come input per l’espressione di filtro
-sol rotate_seconds – periodo per ruotare il file di salvataggio dell’opzione -w, aggiungerà il timestamp al nome
-h Stampa le stringhe di versione tcpdump e libpcap, stampa un messaggio di utilizzo ed esce
-H Rileva le intestazioni della mesh bozza 802.11s
-io interfaccia – l’interfaccia su cui ascoltare, il valore predefinito è alfabetico per impostazione predefinita
-io modalità monitor | immediato-mode – rimuove il buffering
-j tstamp_type – imposta il tipo di data / ora per l’acquisizione tstamp_type
-J tstamp_precision – imposta la precisione del timestamp (micro o nano) l’impostazione predefinita è micro. Se tstamp_precision è null, elenca i tipi di data e ora ed esce
-K Non verificare i checksum
-l Buffer di linea stdout. Per esempio. tcpdump -l | tee dat o tcpdump -l > dat & tail -f dat
-L Elencare i tipi di collegamento dati noti per l’interfaccia, nella modalità specificata, ed uscire
-m modulo – carica le definizioni del modulo MIB SMI dal file modulo.
-M segreto – valore segreto condiviso per la convalida con l’opzione TCP-MD5
-n Non convertire gli indirizzi (ad es. Indirizzi host, numeri di porta, ecc.) In nomi
-N Non stampare la qualifica del nome di dominio dei nomi host
-# Stampa un numero di pacchetto opzionale all’inizio della riga
-O Non eseguire lo strumento per ottimizzare il codice di corrispondenza dei pacchetti
-p Non mettere l’interfaccia in modalità promiscua
-Q direzione – invia / ricevi direzione. Può essere nel, su, o dentro fuori
-q Stampa meno informazioni sul protocollo
-r file – leggi i pacchetti da file. Specificare – per input standard
-S Stampa numeri di sequenza TCP assoluti
-S snaplen – ringhio snaplen byte da ciascun pacchetto, non i 262144 byte predefiniti
-T genere – interpretare i pacchetti come specificato genere. Le opzioni sono:
- AODV Protocollo vettoriale a distanza su richiesta ad hoc
- carpa Protocollo di ridondanza dell’indirizzo comune
- cnfp Protocollo Cisco NetFlow
- lmp Protocollo di gestione dei collegamenti
- pgm Multicast generale pragmatico
- pgm_zmtp1 ZMTP / 1.0 all’interno di PGM / EPGM)
- resp Protocollo di serializzazione REdis
- raggio RAGGIO
- rpc Chiamata di procedura remota
- RTP Protocollo di applicazioni in tempo reale
- rtcp Protocollo di controllo delle applicazioni in tempo reale
- snmp Protocollo di gestione della rete semplice
- tftp Trivial File Transfer Protocol
- I.V.A Strumento audio visivo
- wb lavagna bianca distribuita
- zmtp1 ZeroMQ Message Transport Protocol 1.0
- VXLAN Rete locale virtuale estensibile
-t Non stampare un timestamp su ciascuna linea di dump
-TT Stampa il timestamp come offset dal 1 ° gennaio 1970 su ciascuna linea di dump
-TTT Stampa un delta (risoluzione di micro secondi) tra la riga corrente e quella precedente
-tttt Stampa un timestamp: data, ora, minuti, secondi su ciascuna linea di dump
-ttttt Stampa un delta (risoluzione di micro secondi) tra la riga corrente e la prima
-u Stampa maniglie NFS non codificate
-U Pacchetto bufferizzato
-v Uscita leggermente più dettagliata
-vv Uscita più dettagliata
-vvv L’output più dettagliato
-V file – leggi un elenco di nomi di file da file. Viene utilizzato l’input standard se file è –
-w file – scrivere output su file
-W limite – il numero massimo di file che deve essere creato da -C e -sol opzioni
-X Stampa i dati di ciascun pacchetto meno la relativa intestazione a livello di collegamento in esadecimale
-xx Stampa i dati di ciascun pacchetto, Compreso la sua intestazione a livello di collegamento, in esadecimale
-X Stampa i dati di ciascun pacchetto meno la relativa intestazione a livello di collegamento in esadecimale e ASCII
-XX Stampa i dati di ciascun pacchetto, Compreso la sua intestazione a livello di collegamento, in esadecimale e ASCII.
-y datalinktype – Impostare il tipo di collegamento dati da utilizzare durante l’acquisizione dei pacchetti datalinktype
-z postrotate comando – processo di salvataggio dei file generalmente con compressione, ad es -z gzip
-Z utente – cambia l’ID utente in utente e l’ID gruppo al gruppo primario di utente
Parametri di Tcpdump
I parametri per tcpdump sono anche noti come primitivi. Questi specificano se l’acquisizione di pacchetti deve ottenere solo dati provenienti da host specificati. Questi parametri possono anche essere espressi come condizioni usando gli operatori booleani e, o, e non. Non è necessario inserire un segno di uguale (=) tra il nome del parametro e il suo valore e non è necessario spaziare i parametri con punteggiatura. In ogni caso, hai solo bisogno di uno spazio.
Il più comunemente usato di questi parametri è l’host, che consente di limitare l’acquisizione alle trasmissioni da una sola fonte. In ogni caso, il nome di un dispositivo come valore di parametro può essere sostituito dal suo indirizzo. Dove un parametro ha un dst versione, quella variazione limita l’output a soli pacchetti che hanno quell’attributo per la sua destinazione. Parametri che includono src cercare i pacchetti che hanno il valore dato nei dati relativi alla loro origine.
Ecco le opzioni dei parametri:
ospite Nome host – anche dst host o host src.
Può anche essere anteposto ip, arp, o rarp
etere ehost – valore da / etc / ethers o un numero. Anche ether src e etere dest.
porta ospite – ottenere pacchetti che sono passati attraverso il gateway ospite
netto network_num – include IP di origine o destinazione network_num Anche dst net e src net
porta numero | nome – anche dst port e porta src. Può essere con tcp o udp per limitare il protocollo
IP Proto protocollo – cattura i pacchetti IP del protocollo indicato. Il nome deve essere in / etc / protocolli
etere proto protocollo – pacchetto di acquisizione di tipo protocollo etere. Opzioni per protocollo sono un numero o:
- ip
- IP6
- arp
- rarp
- una chiacchierata
- atalkarp
- DECnet
- decdts
- decdns
- lanbridge
- lat
- mopdl
- moprc
- cucciolo
- sca
- folletto
- stp
- VeXP
- vprod
- XNS
Trasmissione Cattura i pacchetti di trasmissione Ethernet. Scritto anche come etere trasmesso
trasmissione ip Cattura i pacchetti di trasmissione ip
multicast Cattura pacchetti multicast Ethernet. Scritto anche come etere multicast
ip multicast Cattura pacchetti multicast IP
host decnet Nome host – se è l’origine o la destinazione DECNET Nome host
decnet src Nome host – cattura se l’origine DECNET è Nome host
decnet dst Nome host – cattura se la destinazione DECNET è Nome host
host wlan ehost – se il primo, secondo, terzo o quarto indirizzo IEEE 802.11 è ehost
wlan addr1 ehost – cattura se il primo indirizzo IEEE 802.11 è ehost
wlan addr2 ehost – cattura se il secondo indirizzo IEEE 802.11 è ehost
wlan addr3 ehost – cattura se il terzo indirizzo IEEE 802.11 è ehost
wlan addr4 ehost – se il quarto indirizzo IEEE 802.11 è ehost. Utilizzato solo per WDS
genere genere – cattura se il tipo di frame IEEE 802.11 è genere, che è un numero o:
- dati
- mgt
- CTL
sottotipo sottotipo – cattura se il frame IEEE 802.11 è sottotipo, che è un numero o:
- assocreq
- assocresp
- reassocreq
- reassocresp
- probereq
- proberesp
- faro
- Atim
- disassoc
- auth
- deauth
- dati
dir dir – cattura se la direzione del frame IEEE 802.11 è dir, che è un numero o:
- annuisce
- Tods
- FromDS
- dstods
Espressione di Tcpdump
Il segmento delle espressioni di un comando tcpdump ti dà l’opportunità di aggiungere un po ‘di programmazione alla selezione dei pacchetti. A differenza di un normale programma, tuttavia, questo insieme di istruzioni deve essere scritto in una riga. Se sei un utente frequente di Unix o Linux, sarai abituato alle espressioni regolari di shell scripting e non dovresti avere problemi a comprendere il formato di questi filtri.
I pacchetti che soddisfano il test stabilito dall’espressione verranno acquisiti. Quindi il risultato di ogni espressione deve essere “vero”.
Esistono alcune condizioni di espressione che non si verificano generalmente negli script di shell e sono elencate di seguito:
len
Ciò restituisce la lunghezza di un pacchetto. Esempio di utilizzo: len! = 5.
proto [expr: size]
In questo oggetto:
proto è il nome di un livello di protocollo. Può essere:
- etere
- FDDI
- ip
- arp
- rarp
- tcp
- udp
- icmp
espr è l’offset di byte. Questo deve essere incluso, ma può essere dato come 0 per prendere il valore dall’inizio dell’oggetto.
taglia è facoltativo e rappresenta il numero di byte nell’opzione. Il valore predefinito è 1, ma può anche essere 2, 3 o 4.
Esempi di utilizzo:
etere [0] & 1! = 0 è vero per tutto il traffico multicast.
ip [0] & 0xf! = 5 è vero per tutti i pacchetti IP con opzioni.
ip [6: 2] & 0x1fff = 0 è vero per datagrammi non frammentati e fram zero di datagrammi frammentati.
Esempi di Tcpdump
In tutti questi casi, i risultati del comando verranno visualizzati sullo schermo, a meno che non sia inclusa un’opzione relativa al file o a meno che il comando non venga avviato con un reindirizzamento dell’output del supporto o reindirizza a un file.
Visualizza i pacchetti che viaggiano da o verso il computer identificato come lab1:
tcpdump host lab1
Visualizza tutti i pacchetti IP che viaggiano tra lab1 e qualsiasi nodo diverso dalla ricezione:
tcpdump ip host lab1 e non ricezione
Visualizza tutto il traffico ftp tramite lo styx del gateway Internet:
tcpdump “gateway styx e (port ftp o ftp-data)”
Visualizza i pacchetti SYN e FIN di ogni conversazione TCP che coinvolge un host non locale:
tcpdump “tcp [tcpflags] & (tcp-syn | tcp-fin)! = 0 e non src e dst net localnet “
Visualizza i pacchetti di trasmissione IP o multicast che non sono stati inviati tramite trasmissione Ethernet o multicast:
tcpdump “etere [0] & 1 = 0 e ip [16] >= 224 “
Formato di output di Tcpdump
Il formato record utilizzato per scrivere pacchetti in file è diventato uno standard che è stato adottato da molti nuovi sniffer e analizzatori di traffico.
Lo standard non è semplice ed è adattato per ciascun protocollo. Tuttavia, anche quelle applicazioni che hanno adottato il formato tengono conto di queste variazioni. Il formato è chiamato pcap, che è il nome del processo di acquisizione dei pacchetti utilizzato da tcpdump. I file in questo formato di solito hanno il .pcap estensione.
Tcpdump per Windows
C’è un adattamento di tcpdump che funziona su Windows. Questo è chiamato WinDump e si basa su WinPcap per l’acquisizione di pacchetti nello stesso modo in cui tcpdump utilizza la funzione pcap di libpcap. WinPcap è attualmente di proprietà di Riverbed Technology. Questa stessa azienda è il principale finanziatore di Wireshark, che è probabilmente lo sniffer di pacchetti più famoso e ampiamente utilizzato al mondo. Esiste una versione wireless di WinPcap, che viene chiamata AirPcap. È possibile scaricare WinDump, WinPcap e AirPcap gratuitamente dal sito Web WinPcap.
Utilizzo di sniffer di pacchetti
L’utilità della riga di comando tcpdump è utile per coloro che hanno familiarità con Unix e Linux sistemi operativi e divertiti a scrivere script di shell. Coloro che non sono così esperti nel mettere insieme comandi con espressioni regolari sulla riga di comando troveranno difficile usare questo programma.
Hai altre opzioni perché ci sono molti sniffer di pacchetti disponibili, come Wireshark, che è stato menzionato sopra. Puoi scoprire di più sulle alternative a tcpdump in questa recensione di sniffer di pacchetti.
Hai uno sniffer di pacchetti preferito? Sei un fan di tcpdump o preferisci alternative più user-friendly? Lascia un messaggio nel Commenti sezione seguente e condividi le tue esperienze.
Immagine: acquisizione di pacchetti tcpdump da Linux Screenshot via Flickr. Licenza sotto CC BY 2.0
Non conosco la lingua appropriata per questo argomento.