Wireshark: alcuni esempi di utilizzo del famoso analizzatore di protocollo

Wireshark è un eccellente analizzatore di protocollo (o "packet sniffer") in grado di esaminare il contenuto di tutti i pacchetti dati in transito sull'interfaccia di rete attiva.
Wireshark: alcuni esempi di utilizzo del famoso analizzatore di protocollo

Wireshark è un eccellente analizzatore di protocollo (o “packet sniffer“) in grado di esaminare il contenuto di tutti i pacchetti dati in transito sull’interfaccia di rete attiva. La prerogativa di questo programma opensource, che basa il suo funzionamento sull’esperienza acquisita con lo sviluppo del famosissimo Ethereal, consiste nel fornire una panoramica dettagliata di tutto ciò che sta accadendo sulla rete locale (sia essa cablata oppure wireless) proponendo un’interfaccia grafica di semplicissimo utilizzo e di immediata comprensione. Wireshark è in grado di individuare i protocolli di rete utilizzati per i vari tipi di comunicazione ed è quindi in grado di mostrare i vari incapsulamenti.

Punto di forza di Wireshark è certamente la sua flessibilità: grazie a speciali criteri di ordinamento e filtraggio l’utente ha modo di estrapolare, in modo rapido ed efficace, i dati di interesse dalle informazioni registrate. Proprio i filtri che Wireshark mette nelle mani degli utenti sono uno degli aspetti più validi dell’applicazione che, tra l’altro, permette di effettuare l’operazione in tempo reale, mentre si stanno monitorando i pacchetti dati in transito.

Il software trae vantaggio dall’utilizzo della cosiddetta modalità promiscua: una scheda di rete, di norma, riceve i pacchetti dati ad essa destinati mentre, impostandola in modalità promiscua, diventa in grado di “intercettare” tutto il traffico, compreso quello destinato verso altre interfacce della LAN.

Wireshark offre un valido ausilio per aiutare gli esperti nell’individuazione di eventuali vulnerabilità dei sistemi utilizzati in azienda (credenziali di accesso trasmesse in chiaro, attività sospette,…).

Il software permette di scegliere quale interfaccia di rete deve essere analizzata, se le informazioni debbano essere memorizzate o meno, di acquisire log da altri programmi similari.

Wireshark è utilizzabile su più piattaforme differenti (Windows, Linux, Mac OS X). Nel caso di Windows, il programma è compatibile tutte le versioni del sistema operativo, a partire da Windows 2000 sino ad arrivare a Windows 7.

Durante l’installazione di Wireshark in ambiente Windows (il file di setup è prelevabile facendo riferimento a questa scheda) è indispensabile acconsentire al caricamento di Winpcap, una nota libreria opensource che consente la cattura e l’analisi dei pacchetti di dati in transito sull’interfaccia di rete.

All’avvio di Wireshark verrà mostrata una finestra di benvenuto simile a quella sopra riportata. Da qui, cliccando su una delle interfacce di rete indicate sotto la dizione “Start capture on interface“, è possibile avviare subito l’attività di cattura dei dati in transito.

Cliccando su Interface list, per ciascuna interfaccia riportata in elenco, Wireshark inizierà a rilevare – in tempo reale – il numero dei pacchetti dati trasmessi ed il numero dei pacchetti ricevuti. Accanto ad ogni interfaccia, il programma riporta l’IP assegnato per il sistema in uso (in lista si possono trovare tutte le interfacce di rete: la scheda ethernet installata, la scheda utilizzata per la connessione Wi-Fi, i driver di periferica virtuale installati da parte di VMware o di altri strumenti per la virtualizzazione, le interfacce installate da particolari driver di periferica ad esempio da chiavi USB Bluetooth). La finestra che apparirà facendo clic su Interface list aiuterà ad individuare con sicurezza l’interfaccia d’interesse. Anzi, cliccando sul pulsante Details, si accede ad una finestra che riassume tutte le specifiche tecniche della scheda selezionata oltre a proporre numerosi dati statistici.

Il pulsante Options consente di impostare tutta una serie di preferenze per la gestione della fase di cattura dei dati. Si può specificare, per esempio, se le informazioni catturate debbano essere salvate su uno o più file di testo (indicandone le dimensioni massime) e se fermare la procedura dopo un alcuni minuti oppure dopo aver memorizzato un certo quantitativo di informazioni. Alcune opzioni permettono poi di ottimizzare l’usabilità del software: disattivando la casella Automatic scrolling in live capture, ad esempio, si evita che WireShark effettui uno scorrimento automatico della finestra all’interno della quale vengono proposte le informazioni catturate, agevolando quindi la lettura dei dati rilevati.

Cliccando sul pulsante Start, è possibile avviare – anche da qui (anziché dalla finestra principale) – la procedura di cattura dei dati in transito sull’interfaccia specificata. Così facendo, l’icona di WireShark esposta nella barra del titolo, in alto a sinistra, da blu diverrà di colore verde:

Wireshark inizierà subito a visualizzare le informazioni veicolate sull’interfaccia scelta evidenziandole, per comodità di lettura, con colori diversi e specificando, per ciascun pacchetto dati, il protocollo utilizzato, sistema sorgente e sistema di destinazione.

Utilizzare i filtri per estrarre le informazioni che interessano

Nel caso del protocollo HTTP (navigazione sul web), ad esempio, Wireshark registra tutta la fase di “handshake” tra client e server quindi inizia a riportare le informazioni relative alla richiesta di una specifica pagina web (metodo GET, risorsa richiesta, indirizzo dell’host, browser impiegato, linguaggio, codifica dei caratteri, link referenti, cookie trasmessi,…).

Dopo aver completato la fase di richiesta iniziale con il messaggio “GET”, è il protocollo TCP a farsi carico del processo di trasferimento dei dati. Wireshark registrerà quindi sempre il processo che segue: HTTP richiede dati al server, il server usa TCP per trasportarli verso il client. Il server notifica al client la validità della sua richiesta inviando il messaggio “HTTP OK” prima della spedizione dei dati.

Utilizzando Wireshark è facile accorgersi di quanto sia rischioso veicolare dati personali ed informazioni sensibili attraverso client di messaggistica istantanea che non implementino alcun metodo di crittografia. Nel caso di una comunicazione tra due soggetti attraverso MSN Messenger (protocollo MSNMS), il flusso dei dati inizia con una semplice fase di handshake simile a tutte le comunicazioni TCP. Il pacchetto contrassegnato con USR viene inviato ad un server Microsoft per avviare la comunicazione mentre i pacchetti CAL sono utilizzati per stabilire una connessione con uno specifico utente del client di messaggistica istantanea. Dopo alcuni pacchetti di “aknowledgement”, il pacchetto JOI informa che l’utente “remoto” ha accetato di partecipare alla conversazione.
I pacchetti contrassegnati con MSG contengono gli interi dialoghi in corso tra i due utenti. Lasciamo al lettore ogni considerazione in merito.

Per filtrare in tempo reale i dati ed ottenere solamente le informazioni estratte dai pacchetti che riguardano comunicazioni con Messenger, è sufficiente digitare msnms nella casella Filter. Essa si colorerà immediatamente di verde, a confermare che non sono stati commessi errori in fase di digitazione dell’espressione.
Cliccando il pulsante Apply, Wireshark estrarrà solo le informazioni che fanno riferimento a conversazioni Messenger effettuate all’interno dell’intera rete locale.

Come si vede nell’immagine, aggiungendo contains MSG, abbiamo potuto estrarre tutti i messaggi Messenger scambiati con un utenti remoti da e verso la rete locale. Nei riquadri evidenziati in rosso, è ad esempio possibile verificare come dal sistema locale con IP 192.168.1.2 sia partito un messaggio (verso l’account indicato) contenente il testo “buona serata“. Inoltre, è possibile stabilire che come client Messenger è stato utilizzato l’opensource Pidgin (user-agent).

Analoga operazione può essere effettuata nel caso del protocollo FTP. Digitando, nella casella Filter, ftp contains USER || ftp contains PASS, si otterranno – in chiaro – i nomi utente e le password (in questo caso, rispettivamente, test e paloma) utilizzati dagli utenti della rete locale per connettersi ad un server FTP remoto (l”operatore || equivale al classico “or“):

Cliccando col tasto destro del mouse su una delle due voci registrate quindi su Follow TCP Stream, Wireshark provvederà ad estrarre dal log tutta la sessione di lavoro che ha dato vita allo scambio di dati evidenziato.
Un’analoga operazione può essere effettuata nel caso in cui venga utilizzato qualunque altro protocollo. In questo modo è possibile seguire la sequenza di azioni che si sono susseguite nel caso di qualunque genere di comunicazione di rete.

L’occasione è buona per ricordare quanto sia importante proteggere adeguatamente le connessioni Wi-Fi sempre più utilizzate in ambienti aziendali così come a casa e quanto sia cruciale adottare soluzioni per la protezione dei dati mediante l’utilizzo della crittografia (vi suggeriamo di consultare, a tal proposito, questo nostro articolo).

Cliccando sul pulsante Expression… in alto, si può verificare quanti e quali filtri Wireshark sia capace di imporre in modo da rendere immediatamente comprensibili i dati raccolti (l’elenco completo è consultabile anche cliccando qui).

Digitando semplicemente http nella casella Filter, è possibile estrarre tutte le comunicazioni effettuate attraverso il protocollo HTTP mentre ricorrendo all’espressione http.request.method == "GET" si otterrà la lista di tutti gli elementi richiesti dalle workstation collegate alla rete locale attraverso HTTP (pagine web HTML, pagine web dinamiche, immagini nei vari formati, file multimediali e così via):

Ricorrendo all’espressione http.request.uri contains "search", è possibile ottenere la lista delle interrogazioni effettuate sui motori di ricerca.
Per avere, invece, la lista dei pacchetti che hanno come origine oppure come destinazione un determinato indirizzo IP (locale o remoto), è sufficiente utilizzare – nella casella Filter – una sintassi del genere (effettuando le sostituzioni del caso): ip.dst == 192.168.1.2 || ip.src == 192.168.1.2.
L’attributo dst indica l’IP di destinazione mentre src quello sorgente.

Quelli che abbiamo citato sono ovviamente solo alcuni esempi di filtri che è possibile impiegare con Wireshark. Chi volesse approfondire, può trovare ulteriori spunti in questa pagina, sul wiki ufficiale del progetto.

Ti consigliamo anche

Link copiato negli appunti