Una breve guida introduttiva a Wireshark: “The world’s most popular network protocol analyzer”.

Wireshark è il più celebre e diffuso analizzatore di pacchetti di rete, utilizzato ampiamente sia nel mondo accademico che professionale. Originariamente lanciato nel 1998 sotto il nome di “Ethereal”, Wireshark ha guadagnato una reputazione solida per la sua efficacia e versatilità nella diagnosi di problemi di rete e nella comprensione approfondita dei protocolli di rete, tanto da essere utilizzato da:
- sistemisti: usano Wireshark per diagnosticare e risolvere problemi di prestazioni della rete;
- studenti: trovano in Wireshark uno strumento prezioso per apprendere e visualizzare il funzionamento dei protocolli di rete;
- analisti di sicurezza: verificano con Wireshark la presenza di dati non autorizzati o sospetti nella rete.
Caratteristiche principali
- licenza GPL: Wireshark è distribuito con una licenza GPL, rendendolo un software libero e gratuito disponibile per Windows, macOS e GNU/Linux. Sul sito ufficiale è possibile trovare i file per l’installazione oltre a una vasta documentazione di riferimento;
- formati di file: Il formato nativo per il salvataggio dei dati è il .PCAP (Packet Capture), ma Wireshark supporta e può aprire molti altri formati di file di cattura e permette l’esportazione in vari formati;
- riconoscimento dei protocolli: Wireshark è in grado di riconoscere automaticamente una vasta gamma di protocolli di rete, consentendo agli utenti di leggere tutti i dettagli relativi ai pacchetti catturati;
- filtraggio e ricerca: Il software permette di filtrare i dati catturati e di svolgere ricerche selettive utilizzando una sintassi comprensiva ma accessibile.
Introduzione a Wireshark
Quando si avvia Wireshark, la prima cosa che si nota sarà l’elenco delle interfacce di rete rilevate dal proprio sistema. Questo permette di visualizzare facilmente quali interfacce sono attive e di iniziare immediatamente la cattura del traffico con un semplice doppio clic su un’interfaccia specifica. Accanto alle interfacce attive, apparirà anche un piccolo grafico che indica l’attività di rete in tempo reale.
Funzionalità chiave dell’area di lavoro di Wireshark:
- cattura e analisi di traffico preesistente: oltre a catturare traffico in tempo reale (v. Appendice “Wireshark – uso dei filtri di cattura”), Wireshark permette di aprire e analizzare file di cattura .PCAP esistenti, facilitando l’analisi di dati raccolti in precedenza;
- visualizzazione dei dati catturati: una volta avviata la cattura, i dati vengono visualizzati in tempo reale nell’area centrale della finestra di Wireshark, nota come “elenco pacchetti”. Qui è possibile interrompere la cattura cliccando sull’icona a forma di quadrato situata nella barra degli strumenti principale, sopra l’elenco pacchetti.

Suddivisione dell’area di lavoro (Figura 1):
- elenco dei pacchetti: questa è la parte principale dell’interfaccia di Wireshark (lettera A), dove tutti i pacchetti di dati catturati o caricati vengono elencati. Ogni riga rappresenta un pacchetto individuale con informazioni di base come il numero di sequenza, il protocollo utilizzato, la lunghezza del pacchetto e altro;
- dettagli del pacchetto: selezionando un pacchetto dall’elenco, i dettagli specifici del pacchetto saranno mostrati in questa area (lettera B). I dettagli sono organizzati in un formato ad albero, che riflette l’incapsulamento dei protocolli all’interno del pacchetto. Questo aiuta a comprendere come i dati sono strutturati e quali informazioni trasportano;
- dati contenuti nel pacchetto: in questa parte dell’interfaccia, il contenuto del pacchetto selezionato viene visualizzato in forma originale, sia in esadecimale che in ASCII (lettera C). Questo è particolarmente utile per l’analisi a basso livello dei dati e per l’individuazione di specifici pattern o informazioni all’interno del payload del pacchetto.
Barre degli strumenti e utilità:
- barra degli strumenti principale: le icone che permettono di avviare e fermare la cattura, salvare i dati, configurare le opzioni di cattura e accedere ad altre funzioni comuni;
- barra degli strumenti di filtraggio: posta sotto la barra degli strumenti principale, questa barra permette di inserire filtri per raffinare la visualizzazione dei pacchetti. Supporta l’evidenziazione sintattica per aiutarti a scrivere correttamente le espressioni di filtro;
- barra di stato: situata in fondo alla finestra, mostra il numero di pacchetti catturati e fornisce accesso rapido alle proprietà del file di cattura e altre informazioni rilevanti.
L’elenco dei pacchetti è il cuore del flusso di lavoro per l’analisi di una cattura dati in Wireshark. Una volta avviata la cattura, i dati vengono decodificati e ordinati in una tabella, permettendo di seguire la sequenza di cattura dal primo all’ultimo pacchetto.
Informazioni chiave per ciascun pacchetto:
- No.: numero progressivo del pacchetto, iniziando da 1.
- Time: istante in cui il pacchetto è stato catturato.
- Source: indirizzo IP sorgente.
- Destination: indirizzo IP di destinazione.
- Protocol: protocollo di più alto livello contenuto nel pacchetto.
- Length: dimensione del pacchetto in byte.
- Packet Info: estratto delle informazioni più rilevanti contenute nel pacchetto.
Wireshark, inoltre, utilizza diverse colorazioni per aiutare a identificare rapidamente i tipi di pacchetti.
La barra del menu contiene moltissime funzioni e strumenti utili per gestire e analizzare le catture di rete:
- File: importazione ed esportazione dei dati in diversi formati.
- Modifica: ricerca e selezione dei pacchetti, modifica del profilo di configurazione e accesso alle preferenze generali.
- Visualizza: gestione delle barre, formato di visualizzazione del tempo di cattura, regole di colorazione.
- Vai: navigazione e ricerca nell’elenco pacchetti.
- Cattura: opzioni e comandi per la cattura dei dati.
- Analizza: costruzione di filtri di visualizzazione e altre funzioni di analisi dei dati.
- Statistiche: contiene statistiche pronte per l’analisi del traffico, grafici e proprietà del file di cattura.
- Telefonia: strumenti per l’analisi e decodifica di flussi VoIP.
- Wireless: dedicato al traffico Bluetooth e WiFi.
- Strumenti: funzione per la creazione di regole per i firewall.
- Aiuto: accesso alla guida web, wiki, FAQ, catture di esempio e altre risorse utili. Include anche informazioni sulla versione di Wireshark e sulle combinazioni di tasti.
Analizzare la cattura dati
Tra le diverse funzionalità di analisi fornite da Wireshark vi è il menu statistiche, una risorsa potente per effettuare una prima analisi generale dei dati catturati. Questo menu offre una varietà di strumenti che permettono di visualizzare informazioni dettagliate sul traffico di rete, gli host coinvolti, le connessioni stabilite e i protocolli utilizzati. Ecco una panoramica delle voci più utili disponibili nel menu Statistiche:
- proprietà del file di cattura: questa opzione fornisce una visione generale dei metadati del file di cattura, come la dimensione in byte, la data e l’ora di cattura, il nome del file e altre informazioni simili. È utile per ottenere un riepilogo rapido delle caratteristiche principali della sessione di cattura;
- terminatori (Endpoints): la voce “Endpoint” elenca tutti gli host coinvolti nel traffico di rete catturato. Per ciascun host, Wireshark mostra dettagli come gli indirizzi IP, gli indirizzi MAC, e le porte utilizzate per le connessioni TCP e UDP. Questo strumento è essenziale per identificare rapidamente gli attori chiave nella rete e per comprendere meglio la distribuzione del traffico;
- conversazioni: simile alla voce “Endpoint”, “Conversazioni” mostra tutte le connessioni presenti nella cattura. Per ogni connessione, vengono dettagliati gli host coinvolti, i loro indirizzi IP, e le porte di connessione. Particolarmente utile per seguire il flusso di comunicazione tra specifici host e per identificare possibili pattern di traffico o connessioni sospette;
- gerarchia dei protocolli: elenca tutti i protocolli di rete presenti nella cattura, organizzati per incapsulamento. Mostra chiaramente come i vari protocolli si stratificano e interagiscono tra loro nel flusso di dati, fornendo una visione comprensiva della struttura del traffico;
- altre statistiche utili: il menu Statistiche contiene molte altre voci che forniscono dati specifici per protocollo e analisi più dettagliate, possono includere elementi come flussi di rete, utilizzi di banda, errori di trasmissione;
- filtraggio automatico: una funzionalità particolarmente utile di ciascuna voce del menu Statistiche è la possibilità di costruire automaticamente filtri di visualizzazione basati sui dati analizzati.
I filtri di visualizzazione sono uno strumento essenziale in Wireshark per isolare specifiche parti del traffico di rete in base alle necessità di analisi. Questi filtri consentono di affinare la visualizzazione dei dati catturati, rendendo più efficiente l’analisi di grandi quantità di traffico (v. Appendice “Analizzare una cattura usando i filtri di visualizzazione”).
Identificati i pacchetti di interesse in Wireshark, il passo successivo è l’analisi approfondita dei dati che contengono. Wireshark offre un riquadro dedicato chiamato dettagli dei pacchetti, che consente di esplorare in dettaglio l’incapsulamento dei protocolli e i dati trasportati da ciascun pacchetto. I dettagli dei pacchetti sono organizzati gerarchicamente, rispecchiando l’incapsulamento dei protocolli all’interno del pacchetto. Questo permette di visualizzare ogni livello di dati, dal più esterno al più interno. Ecco un esempio tipico di come potrebbero essere strutturati i dettagli per un pacchetto contenente dati HTTP:

- Frame: mostra il pacchetto dati catturato completo di tutti i metadati associati, come l’ora di cattura, la lunghezza del frame, e altre informazioni utili (Figura 2);

- Ethernet II: mostra la trama Ethernet, il primo livello di incapsulamento, che include dettagli come l’indirizzo MAC sorgente e destinazione e il tipo di protocollo, tipicamente IP (Figura 3);

- IP Version 4:il pacchetto IP incapsulato dentro la trama Ethernet. Mostra i dettagli come l’indirizzo IP sorgente e destinazione, la versione del protocollo, il tipo di servizio, e altri parametri relativi al protocollo IP (Figura 4);

- TCP: il segmento TCP incapsulato dentro il pacchetto IP, include informazioni come le porte sorgente e destinazione, i numeri di sequenza e di conferma, e altri dettagli relativi alla gestione della connessione TCP (Figura 5);

- HTTP: l’unità di dati HTTP trasportata nel segmento TCP. Qui vengono visualizzate informazioni specifiche dell’HTTP, come il metodo di richiesta (GET, POST, ecc.), l’URL richiesto e gli header HTTP (Figura 6).
Analisi dei Protocolli di rete su Wireshark
Nel vasto e complesso mondo delle reti, la capacità di monitorare e analizzare il traffico di rete è fondamentale per garantire la sicurezza, la stabilità e l’efficienza delle comunicazioni digitali. Wireshark offre gli strumenti necessari per esaminare dettagliatamente il flusso dei dati attraverso una rete, è in grado di catturare e visualizzare il contenuto dei pacchetti di rete in tempo reale, permettendo una profonda analisi di vari protocolli essenziali. Tra questi troviamo:
- ARP risolve il problema di mappare un indirizzo IP, utilizzato nei pacchetti di rete, all’indirizzo MAC fisico della scheda di rete. L’analisi del traffico ARP è cruciale per (v. Appendice “Analizzare il traffico ARP utilizzando Wireshark”):
– identificare problemi di rete: come conflitti di indirizzi IP o problemi di risoluzione degli indirizzi;
– rilevare attività sospette: come attacchi di ARP spoofing o ARP poisoning, dove un malintenzionato potrebbe tentare di intercettare o alterare il traffico modificando le risposte ARP.
- ICMP è fondamentale per la gestione e il debug delle reti IP. Viene spesso utilizzato per testare la connettività e tracciare il percorso dei pacchetti attraverso la rete ad esempio mediante i comandi come ping e traceroute (v. Appendice “Come analizzare i messaggi ICMP in Wireshark”)
- TCP, UDP e porte associate. Quando si analizza il traffico di rete con Wireshark, è possibile vedere l’indirizzo IP e il numero di porta per i protocolli TCP e UDP in ogni pacchetto. Questo aiuta a identificare non solo l’origine e la destinazione dei dati a livello di rete, ma anche l’applicazione specifica a cui i dati sono destinati. L’identificazione delle porte utilizzate può fornire indizi vitali in scenari di troubleshooting di rete, sicurezza informatica e conformità di configurazione di rete (v. Appendice “Analisi di TCP e UDP in Wireshark”).
- Domain Name System (DNS). Traduce i nomi di dominio facilmente memorizzabili in indirizzi IP numerici che le macchine possono comprendere e a cui possono connettersi (v. Appendice “Analisi del traffico DNS in Wireshark”):
– la maggior parte delle comunicazioni DNS avviene tramite UDP su porta 53, per la sua efficienza in termini di velocità e utilizzo ridotto delle risorse, ideale per le brevi query DNS;
– il DNS usa anche TCP, soprattutto per operazioni che richiedono affidabilità o per risposte che superano il limite di dimensione del pacchetto UDP (512 byte), come nei trasferimenti di zona tra server DNS.
- Hyper Text Transfer Protocol (HTTP). Una conversazione HTTP tipica segue un modello di richiesta e risposta (v. Appendice “Analisi del Traffico HTTP in Wireshark”):
– richiesta (Request): il client web invia una richiesta al server per ottenere dati o per inviare informazioni. Le richieste più comuni includono il metodo GET per richiedere dati e POST per inviare dati al server;
– risposta (Response): il server elabora la richiesta e invia una risposta al client. La risposta include uno status code che indica il successo o il fallimento della richiesta, dati (se richiesti), e header che forniscono informazioni aggiuntive.
- HTTPS (HTTP Secure). Utilizza il protocollo Transport Layer Security (TLS) per cifrare le comunicazioni tra il client e il server, garantendo così privacy e sicurezza dei dati trasmessi. Wireshark può essere usato per analizzare il traffico TLS/SSL, sebbene il contenuto specifico delle comunicazioni sia cifrato e non direttamente leggibile (v. Appendice “Analisi del Traffico HTTPS e Decodifica di TLS in Wireshark”). La decodifica del traffico TLS in Wireshark richiede l’accesso alle chiavi di sessione, che non sono trasmesse in rete ma generate localmente da client e server durante l’handshake TLS. Per analizzare i dati HTTPS (nascosti dentro il livello TLS) è necessario esportare queste chiavi mentre il browser web stabilisce una connessione TLS (v. Appendice “Decodifica del traffico TLS in Wireshark utilizzando le chiavi di sessione”). Ogni protocollo ha un ruolo unico e critico nella facilitazione e nella sicurezza delle comunicazioni su Internet e l’analisi di questi protocolli attraverso Wireshark è cruciale per diagnosticare problemi di rete, ottimizzarne le prestazioni nonché a mitigare gli attacchi informatici.
La decodifica del traffico TLS in Wireshark richiede l’accesso alle chiavi di sessione, che non sono trasmesse in rete ma generate localmente da client e server durante l’handshake TLS. Per analizzare i dati HTTPS (nascosti dentro il livello TLS) è necessario esportare queste chiavi mentre il browser web stabilisce una connessione TLS. Ogni protocollo ha un ruolo unico e critico nella facilitazione e nella sicurezza delle comunicazioni su Internet e l’analisi di questi protocolli attraverso Wireshark è cruciale per diagnosticare problemi di rete, ottimizzarne le prestazioni nonché a mitigare gli attacchi informatici.
Altri strumenti di analisi dei file PCAP e non
Oltre a Wireshark (v. Appendice “Wireshark – personalizzazione dell’area di lavoro” e Appendice “Wireshark – predisposizione dell’area di lavoro”), esistono diversi altri strumenti utili per l’analisi di file PCAP. Questi strumenti offrono funzionalità specializzate che possono completare o estendere le analisi effettuate con Wireshark, particolarmente utili per identificare minacce, analizzare malware, e visualizzare le connessioni di rete:
A-Packets, permette:
- analisi generale: caricando un file PCAP su A-Packets, si ottiene un report dettagliato che include l’analisi dei protocolli di rete e i file presenti nel traffico;
- estrazione di credenziali: il sito offre funzionalità per estrarre le credenziali che possono essere trasmesse nel traffico di rete;
- visualizzazione di rete: mostra una rappresentazione grafica degli host e delle loro interconnessioni, facilitando la comprensione delle relazioni di rete.
Note: I file caricati su A-Packets diventano pubblicamente accessibili, quindi è importante considerare la sensibilità dei dati prima di utilizzare questo servizio.
Hybrid Analysis, permette:
- analisi malware: focalizzata sulla verifica della presenza di malware nei file PCAP;
- sandbox: offre una sandbox per l’analisi di sicurezza, che può essere utile per esaminare i file estratti dai PCAP in un ambiente controllato.
Note: i risultati sono generalmente molto sintetici e orientati esclusivamente all’identificazione di malware.
VirusTotal, permette:
- analisi malware: VirusTotal analizza i file PCAP per la presenza di malware e fornisce risultati dettagliati;
- analisi IDS: include un’analisi Intrusion Detection System (IDS) che può rilevare attività sospette o malevole;
- Community: se il malware è noto, la sezione Community può fornire ulteriori informazioni utili condivise da altri utenti.
PacketTotal, permette:
- analisi di rete: non si concentra sull’analisi di malware, ma offre strumenti per esaminare le connessioni di rete dentro il PCAP;
- strumenti integrati: include funzionalità per il whois e la geolocalizzazione;
- grafici del traffico: fornisce una rappresentazione grafica dello stream di dati, simile a quella di Wireshark, aiutando a visualizzare il flusso di traffico in maniera intuitiva.
Network Miner è un potente strumento forense che si specializza nell’estrarre e visualizzare informazioni dai file PCAP. È particolarmente utile per gli analisti che necessitano di un’analisi rapida e diretta delle comunicazioni di rete. Questo strumento è spesso usato in complemento a Wireshark per offrire una vista più orientata ai dati estratti piuttosto che alla pura analisi del traffico:
- Hosts: mostra un elenco di host coinvolti nel traffico di rete;
- Files: elenca i file trasferiti attraverso la rete, che possono essere esaminati o scaricati direttamente dall’interfaccia;
- Sessions: fornisce una panoramica delle sessioni di comunicazione tra i dispositivi;
- Credentials: rivela credenziali che potrebbero essere state trasmesse in chiaro.
ANY.RUN è un servizio di analisi malware basato su sandbox che permette agli utenti di eseguire file sospetti in un ambiente controllato e sicuro, garantisce:
- ambiente isolato: utilizza una macchina virtuale (VM) Windows 7 per isolare il malware dal sistema operativo principale e dalla rete locale;
- interattività: fornisce un ambiente interattivo, consentendo agli utenti di interagire direttamente con il sistema operativo della VM durante l’analisi;
- monitoraggio in tempo reale: durante l’esecuzione del malware, ANY.RUN visualizza in tempo reale le connessioni di rete e l’albero dei processi generati dall’eseguibile;
- community e database: gli utenti possono accedere a un database di analisi precedenti, che include i dettagli delle minacce più comuni e recenti, consentendo uno studio approfondito prima di iniziare nuove analisi.
CyberChef, sviluppato dall’agenzia di intelligence britannica GCHQ, è uno strumento versatile per l’analisi e la manipolazione di dati. Viene chiamato “il coltellino svizzero della cyber-security” vista la grande quantità di tools di cui dispone.
Tra le tante categorie di operazioni disponibili vi sono:
- operatori aritmetici e logici;
- conversione di formato;
- codifica e decodifica, crittografia e hashing;
- compressione e decompressione dati, strumenti di elaborazione grafica;
- estrazione di dati, stringhe e files.
APPENDICI
Wireshark – uso dei filtri di cattura
Wireshark è uno strumento estremamente potente per l’analisi di rete e comprendere come utilizzare efficacemente i filtri di cattura può significativamente migliorare l’efficienza delle sessioni di monitoraggio. Ecco una guida per configurare e applicare filtri di cattura.
Configurazione Iniziale
All’avvio, Wireshark mostra l’elenco delle interfacce di rete disponibili:
- grafico dell’interfaccia: accanto a ciascuna interfaccia c’è un grafico che mostra l’attività di rete in tempo reale, facilitando l’identificazione delle interfacce attive;
- avvio della cattura: un doppio clic su un’interfaccia avvia la cattura del traffico su quella specifica interfaccia.
Finestra opzioni di cattura
Per accedere:
- dal menu Cattura selezionare Opzioni;
- Selezione Multipla: seleziona più interfacce per la cattura simultanea;
- File di Cattura: definisce un file per salvare i dati catturati, specifica una dimensione massima e imposta la rotazione del file per gestire grandi quantità di dati;
- Risoluzione dei Nomi: abilita la risoluzione dei nomi per gli indirizzi IP e per il livello di trasporto, facilitando la lettura e l’analisi del traffico.
Filtri di cattura
A differenza dei filtri di visualizzazione, i filtri di cattura limitano i dati al momento dell’acquisizione. Ciò significa che i dati non corrispondenti al filtro non saranno disponibili in Wireshark dopo la cattura.
Come inserire un filtro di cattura:
- nella finestra Opzioni di Cattura, vi è un campo dedicato ai filtri di cattura;
- scegliere un filtro predefinito cliccando il nastro verde accanto al campo di inserimento o scrivere manualmente il filtro.
Esempi di filtri di cattura
- Cattura traffico da un singolo host:
host 192.168.0.99
- Cattura traffico da una rete specifica:
src net 10.1.0.0/16
oppure:
src net 10.1.0.0 mask 255.255.0.0
- Cattura traffico HTTP diretto a una porta specifica:
tcp dst port 80
- Escludere il traffico IP:
not ip
- Cattura traffico non-broadcast:
not broadcast
- Cattura pacchetti di dimensione specifica:
less 250
oppure:
greater 250 and ip
- Cattura traffico da VLAN specifiche:
vlan 10 or vlan 20
- Cattura traffico destinato a un MAC specifico:
ether dst 01:00:0c:cc:cc:cc
(torna su)
Analizzare una cattura usando i filtri di visualizzazione
La sintassi di base per creare un’espressione di filtraggio richiede la specifica di un protocollo seguito da un dettaglio del protocollo, utilizzando un formato protocollo.campo:
Esempio: ip.addr == 192.168.1.1 seleziona tutti i pacchetti che contengono l’indirizzo IP specificato, sia come mittente che come destinatario.
Gli operatori di confronto sono fondamentali nella costruzione dei filtri:
- == oppure eq: uguale a;
- != oppure neq: diverso da;
- > oppure gt: maggiore di;
- < oppure lt: minore di.
Per combinare più condizioni, si utilizzano gli operatori logici:
- && oppure and: entrambe le condizioni devono essere soddisfatte;
- || oppure or: una delle condizioni deve essere soddisfatta;
Esempio: ip.src == 192.168.1.151 && ip.dst == 62.10.45.151 seleziona solo il traffico dall’indirizzo IP sorgente al destinatario specificato.
Filtraggio per protocollo o porta
Per selezionare traffico specifico basato su protocolli o porte, si possono utilizzare espressioni come:
- tcp.port == 80 || http: seleziona tutto il traffico HTTP.
- udp.port == 53 || dns: seleziona tutte le query DNS.
Ricerca di stringhe con contains
L’operatore contains è utilizzato per cercare specifiche stringhe all’interno dei pacchetti:
Esempio: dns contains “google” trova tutti i pacchetti DNS che includono il termine “google”.
(torna su)
Analizzare il traffico ARP utilizzando Wireshark
Per analizzare il traffico ARP utilizzando Wireshark, seguire questi passaggi:
- Filtrare il Traffico ARP: digitare arp nella barra di filtraggio di Wireshark per isolare il traffico ARP. Questo filtro visualizzerà tutti i pacchetti ARP scambiati nella rete.
- Selezionare un Messaggio ARP: cliccare su un pacchetto ARP nell’elenco per visualizzarne i dettagli nel pannello dei dettagli.
- Esaminare i Dettagli del Messaggio ARP: nel Pannello dettagli, sotto la voce “Ethernet II”, vi è la sezione ARP che include i seguenti campi:
- Opcode: indica il tipo di messaggio ARP, dove 1 rappresenta una REQUEST e 2 un REPLY;
indirizzi IP e MAC: mostra gli indirizzi IP e MAC dell’host sorgente e del destinatario. Notare che l’ARP REQUEST è inviato al broadcast, cioè all’indirizzo MAC di destinazione ff:ff:ff:ff:ff:ff.
(torna su)
Come analizzare i messaggi ICMP in Wireshark
Per analizzare i Messaggi ICMP utilizzando Wireshark, seguire questi passaggi:
- filtrare il Traffico ICMP: digitare icmp nella barra di filtraggio di Wireshark per isolare solo il traffico ICMP;
- selezionare un pacchetto ICMP: nella lista dei pacchetti filtrati, selezionare un pacchetto che si desidera analizzare. I pacchetti di Echo Request e Echo Reply sono facilmente identificabili dai loro tipi;
- esaminare i dettagli dei pacchetti:
- nel pannello dei dettagli di Wireshark, cercare la sezione ICMP che si trova subito sotto la sezione di IPv4;
- osservare il campo Type per identificare il tipo di messaggio ICMP:
- Type 8: ICMP Echo Request;
- Type 0: ICMP Echo Reply;
- il Timestamp mostra l’orario esatto in cui il messaggio è stato inviato dall’host originale, che può essere utile per calcolare la latenza.
(torna su)
Analisi di TCP e UDP in Wireshark
Quando si utilizza Wireshark per analizzare il traffico di rete, comprendere le differenze tra TCP (Transmission Control Protocol) e UDP (User Datagram Protocol) è fondamentale per l’interpretazione dei dati di rete. Ecco come analizzare questi due protocolli cruciali usando Wireshark.
Filtraggio TCP e UDP
Per iniziare l’analisi:
- filtraggio: inserire tcp o udp nella barra di filtraggio di Wireshark per isolare il traffico corrispondente;
- selezione del pacchetto: scegliere un pacchetto per analizzare i dettagli nel pannello dei dettagli, immediatamente sotto il livello di IPv4.
Dettagli TCP in Wireshark
Con TCP, si troveranno informazioni dettagliate utili per monitorare e diagnosticare la connessione:
- Sequence Number e Acknowledge Number: questi numeri sono cruciali per il controllo di flusso e per garantire che i dati siano trasmessi in modo affidabile e in ordine.
- flags di TCP: i flags come SYN, ACK, e FIN sono utilizzati per gestire lo stato della connessione. Ad esempio:
- SYN: utilizzato per iniziare una connessione;
- SYN-ACK: risposta dal server per accettare la connessione;
- ACK: utilizzato per confermare la ricezione dei pacchetti;
- FIN: indica la chiusura di una connessione;
- RST: quando l’handshake a tre vie non viene concluso correttamente, ad esempio per indisponibilità del servizio, il server restituirà altri messaggi di controllo, come il RST (reset).
L’analisi dei flags è importante per identificare il comportamento della connessione, come l’inizio e la conclusione delle sessioni TCP o possibili anomalie nelle connessioni di rete.
Seguire il Flusso TCP
Per una visione più dettagliata della comunicazione tra client e server:
- attivare “Segui il Flusso TCP”: dopo aver selezionato un pacchetto TCP, clic destro e selezionare “Segui” e poi “Flusso TCP”. Questo aprirà una nuova finestra con i dati trasmessi nel flusso TCP;
- analisi del dialogo: I dati vengono visualizzati con i messaggi del client in rosso e quelli del server in blu, facilitando la visualizzazione della conversazione tra i due;
- leggibilità dei dati: la facilità di lettura dei dati dipende dal protocollo di livello applicativo trasportato. Per esempio, il traffico HTTP è generalmente più facile da interpretare rispetto ad altri protocolli meno verbosi.
Dettagli UDP in Wireshark
UDP è meno complesso rispetto a TCP in quanto non stabilisce una connessione e non garantisce il controllo di flusso o la conferma di ricezione.
(torna su)
Analisi del traffico DNS con Wireshark
- filtraggio del Traffico DNS: per analizzare il traffico DNS in Wireshark, digitare dns nella barra di filtraggio per isolare solo i pacchetti DNS;
- esaminare le Query e le Risposte DNS:
- nel pannello dei dettagli di Wireshark, è possibile vedere la struttura delle query e delle risposte DNS. Questo include i nomi di dominio richiesti, i tipi di record (come A, AAAA, MX), gli indirizzi IP risolti, e altri dettagli DNS;
- ogni pacchetto DNS mostrerà se si tratta di una query o di una risposta e includerà dettagli come il numero di record nella risposta e gli eventuali errori (es. “Non-Existent Domain”).
- monitoraggio per anomalie:
- analizzare il traffico DNS può aiutare a identificare comportamenti anomali come attività di malware, che spesso utilizzano query DNS per comunicare con i server di comando e controllo;
- l’alta frequenza di query DNS fallite o un volume insolitamente elevato di query può essere indicativo di configurazioni errate o attività sospette.
(torna su)
Analisi del Traffico HTTP in Wireshark
Per analizzare il traffico HTTP in Wireshark:
- impostare il filtro: digitare http nella barra di filtraggio di Wireshark per visualizzare solo i pacchetti http;
- selezionare un pacchetto: cliccare su un pacchetto di interesse per visualizzare i dettagli nel pannello inferiore.
Dettagli del traffico HTTP in Wireshark
Nel pannello dettagli di Wireshark, sotto il livello TCP, si trova il livello HTTP che include:
- Content-Type: indica il tipo di dati trasferiti, come text/html per le pagine web o application/json per dati in formato JSON;
- Server: il software server che gestisce la richiesta;
- Request URI: l’URI specifico richiesto dal client;
- User-Agent: identifica il client web e il sistema operativo utilizzato per fare la richiesta;
- Referrer: l’URL della pagina che ha originato la richiesta.
Seguire il flusso TCP
Per una visione completa della conversazione:
- selezionare “Segui Flusso TCP”: clic destro sul pacchetto quindi Analizza > Segui > Flusso TCP. Questo mostra l’intera conversazione tra client e server, inclusi tutti i dati trasmessi;
- analisi: la finestra del flusso TCP permette di leggere l’interazione completa, visualizzando i dati trasferiti e gli header HTTP in un formato leggibile.
Utilizzare il Menu Statistiche
Per una panoramica più ampia:
- gerarchia di protocolli: nel menu Statistiche, selezionare Gerarchia di Protocolli per vedere una sintesi dei protocolli usati nella cattura, inclusi quelli trasportati via http;
- esportazione di oggetti HTTP: Da File > Esporta Oggetti > HTTP, è possibile esportare elementi come immagini, fogli di stile e script che sono stati trasferiti via HTTP.
(torna su)
Analisi del traffico HTTPS e decodifica di TLS in Wireshark
Analisi di HTTPS – TLS in Wireshark
- filtrare il traffico TLS: inserire tls nella barra di filtraggio di Wireshark per isolare il traffico TLS;
- esaminare i dettagli TLS:
- nel pannello dettagli, sotto il livello TCP, si trova il livello TLS;
- HTTP nascosto: poiché il traffico HTTP è cifrato, non comparirà esplicitamente. Sarà indicato come “Encrypted Application Data”;
- dettagli TLS: analizzare i messaggi di “Client Hello” e “Server Hello” per vedere dettagli come la versione TLS, i metodi di cifratura negoziati e i numeri casuali usati per generare la chiave di sessione;
- chiave pubblica: nel certificato del server, si può vedere la chiave pubblica usata per la negoziazione della cifratura;
- visualizzazione di certificati e handshake: è possibile esaminare i certificati scambiati e i dettagli dei messaggi di handshake per avere un’idea di come viene stabilita la sicurezza prima di trasmettere dati sensibili.
Limitazioni nell’analisi di TLS in Wireshark
Decifrare i dati TLS: Wireshark non può decifrare i dati TLS senza le appropriate chiavi di decifrazione. Tuttavia, è possibile configurare Wireshark per decifrare il traffico TLS se si ha accesso alle chiavi di sessione o ai parametri di pre-master secret.
(torna su)
Decodifica del traffico TLS in Wireshark utilizzando le chiavi di sessione
Ecco come farlo utilizzando Firefox e configurando Wireshark per utilizzare il file di log delle chiavi.
Configurazione di Firefox per esportare le chiavi di sessione TLS
- impostazione della variabile di ambiente SSLKEYLOGFILE:
- chiudere Firefox e Wireshark: assicurarsi che entrambe le applicazioni siano chiuse prima di modificare le impostazioni;
- aprire le impostazioni di sistema:
- nel menu di Avvio cercare “env” o “environment variables”.
- cliccare su “Modifica le variabili d’ambiente per il tuo account”;
- aggiungere la variabile SSLKEYLOGFILE:
- clicca su “Nuova…” per creare una nuova variabile d’ambiente;
- assegnare come nome della variabile SSLKEYLOGFILE;
- come valore della variabile, impostare un percorso per il file di log, ad esempio: %USERPROFILE%\Documents\sslkey.log.
- salvare e chiudere: confermare e chiudi tutte le finestre di dialogo;
- verifica della configurazione:
- riaprire Firefox e visitare un sito HTTPS;
- verificare che il file sslkey.log sia stato creato nel percorso specificato e controllare se contiene le chiavi di sessione;
Importazione delle chiavi di sessione in Wireshark
- avviare Wireshark e iniziare una cattura: avviare una cattura di rete in Wireshark mentre si usa Firefox per generare traffico HTTPS;
- configurazione delle preferenze di Wireshark per TLS:
- da Modifica → Preferenze → Protocols → TLS;
- trovare la voce “(Pre)-Master-Secret log filename” e cliccare su Sfoglia….
- selezionare il file sslkey.log che si è precedentemente configurato e confermare;
- analizzare il traffico decodificato:
- con le chiavi di sessione importate, Wireshark sarà in grado di decodificare il traffico TLS e mostrare i dati HTTP in chiaro;
- per esaminare un flusso di comunicazione specifico, cliccare con il tasto destro su un pacchetto e selezionare Segui → Flusso TLS o Flusso HTTP per visualizzare l’intera conversazione tra client e server.
(torna su)
Wireshark – personalizzazione dell’area di lavoro
Wireshark offre ampie possibilità di personalizzazione per adattarsi meglio alle esigenze specifiche di ciascun utente o tipo di analisi. La personalizzazione può aiutare a migliorare l’efficienza nell’analisi del traffico di rete.
Creazione e gestione dei profili di configurazione
- Creare un nuovo profilo:
- da Modifica → Profili di configurazione;
- cliccare su Nuovo e assegnare un nome al nuovo profilo. Questo permette di personalizzare e salvare le impostazioni senza alterare il profilo Default.
- Cambio del profilo: è possibile cambiare profilo ogni qual volta è necessario adattarsi a diversi scenari di analisi. Selezionare semplicemente il profilo desiderato dall’elenco nel menu dei profili di configurazione.
- Esportazione e importazione di un profilo: questo è utile per trasferire le personalizzazioni su un’altra installazione di Wireshark. Dallo stesso menu dei profili, è possibile esportare un profilo e poi importarlo su un’altra macchina.
Modifica delle regole di colorazione
- Accesso alle regole di colorazione:
- da Visualizza → Regole di colorazione;
- modificare le regole esistenti o aggiungerne di nuove cliccando sul simbolo +.
- Personalizzazione dei colori: ogni regola è legata a un filtro di visualizzazione specifico. Definire il colore del testo e dello sfondo per rendere più intuitiva l’analisi visiva del traffico.
Configurazione delle colonne
- Modifica delle colonne:
- da Modifica → Preferenze → Aspetto;
- eliminare colonne non necessarie o aggiungerne di nuove.
- Aggiunta di nuove colonne:
- assegna un nome alla nuova colonna e seleziona il dettaglio da visualizzare, come indirizzi IP o porte;
- è possibile visualizzare i nomi risolti o mantenere i numeri con l’opzione resolved o unresolved.
- Riorganizzazione delle colonne: è possibile trascina le colonne nella posizione desiderata per un’analisi più efficiente.
Memorizzazione dei filtri di visualizzazione
- Aggiunta di filtri personalizzati:
- utilizzare il pulsante + vicino alla barra di filtraggio per salvare i filtri utilizzati frequentemente.
- assegnare un nome al filtro e, se necessario, aggiungere un commento per descriverne l’uso.
- Utilizzo dei filtri salvati: i filtri salvati appariranno come pulsanti nella barra di filtraggio e saranno applicabili rapidamente con un clic.
(torna su)
Wireshark – predisposizione dell’area di lavoro
Per rafforzare la capacità di rilevamento di malware nel traffico di rete, è possibile configurare specificamente Wireshark per analizzare le sessioni HTTP e HTTPS:
Creazione di un nuovo profilo di configurazione: da Modifica → Profili di configurazione e creare un nuovo profilo, es. “Analyst”.
Modifica delle colonne per analisi HTTP/HTTPS
- aprire le preferenze: da Modifica → Preferenze → Aspetto.
- configurazione delle colonne: rimuovere le colonne non necessarie e aggiungere le seguenti per ottimizzare l’analisi del traffico web:
- Time: imposta il formato su UTC per garantire che l’ora sia uniforme e confrontabile globalmente;
- Src e Dst: aggiungere colonne per gli indirizzi IP sorgente e destinatario;
- Port: colonne per le porte sorgente e destinatario, utili per identificare il tipo di traffico;
- Host: una colonna personalizzata che usa il filtro http.host o tls.handshake.extensions_server_name per visualizzare i nomi dei server web.
- Info: per dettagli generali sulla trasmissione.
Impostazioni di data e ora: assicurarsi che il tempo sia impostato su UTC per la consistenza attraverso il menu Visualizza → Formato visualizzazione tempo → Data e ora del tempo UTC.
Creazione di pulsanti di filtraggio
Usare il pulsante + accanto alla barra di filtraggio per creare filtri rapidi:
- (http.request or tls.handshake.type eq 1) and !(ssdp): filtra le richieste HTTP e i nomi di dominio HTTPS, escludendo il traffico SSDP;
- (http.request or tls.handshake.type eq 1 or tcp.flags eq 0x0002 or dns) and !(ssdp): aggiunge TCP SYN e DNS alle sessioni HTTP e HTTPS.
Analisi delle conversazioni di rete e ricerca di minacce
- Gerarchia dei protocolli: da Statistiche → Gerarchia di protocolli per vedere la distribuzione dei dati tra i protocolli;
- Endpoint e conversazioni: utilizzare le opzioni sotto Statistiche per visualizzare gli endpoint e le conversazioni, che possono aiutare a identificare i “top talkers” o le connessioni sospette.
- HTTP Requests: Statistiche → HTTP → Richieste per un elenco di richieste a server web, che può rivelare connessioni a domini sconosciuti o maligni.
Uso avanzato dei filtri di visualizzazione
- udp.port eq 67: visualizza i messaggi DHCP inviati dai client che contengono l’indirizzo IP, l’indirizzo MAC e l’hostname;
- nbns: mostra il traffico Netbios utilizzato tipicamente dagli host Windows, utile per ricavare l’hostname degli endpoint;
- http.request: mostra tutte le richieste di accesso ai server web, che contengono utili info;
- udp and !(dns): visualizza le connessioni UDP non attinenti al trasporto di DNS;
- dns.qry.name contains dominio: mostra le richieste di risoluzione per il dominio indicato;
- frame contains “MZ” and frame contains “DOS”: trova il trasferimento di eseguibili Windows. Le stringhe specificate sono i cosiddetti magic numbers (o anche file signatures[1]), piccole sequenze di caratteri poste all’inizio di ogni file grazie alle quali è possibile identificare il tipo di file; il magic number MZ identifica un file eseguibile per Windows.
- l’operatore matches: simile a contains ma abilita l’uso delle espressioni regolari:
- frame matches “\.(?i)(exe|zip|doc|xls|ppt|jar)”: visualizza i pacchetti che contengono file;
- frame matches “(?i)(username|password)”: trova i pacchetti con credenziali;
- frame matches “User-Agent: Mozilla.*”: visualizza solo le richieste HTTP dei client Mozilla
Attivazione della geolocalizzazione con MaxMind
Durante la ricerca di una minaccia risulta utile avere informazioni sulla provenienza geografica ovvero la nazionalità degli host coinvolti nelle conversazioni di rete; di base Wireshark non fornisce tali informazioni ma possono essere integrati grazie al database fornito dal sito di MAXMIND:
- download dei database MaxMind: registrarsi e scaricare i file .mmdb[2] da MaxMind;
- configurazione in Wireshark:
- da Modifica → Preferenze → Name Resolution;
- aggiungere la directory contenente i file .mmdb.
Utilizzo dei Filtri di Display per la Geolocalizzazione
Completata l’attivazione dei file di database si troveranno subito le nuove informazioni:
- nel pannello dettagli di un pacchetto selezionato, espandendo il livello IPv4;
- nella finestra dedicata alle statistiche per i terminatori di rete (endpoint), scheda IPv4, il pulsante Mappa posto a sinistra nella finestra permette di osservare gli indirizzi IP su di una mappa geografica.
Wireshark permette di utilizzare i dati di geolocalizzazione per filtrare il traffico di rete in base alla località geografica:
- questo filtro visualizza tutti i pacchetti che hanno origine o destinazione nella città di Roma:
ip.geoip.city == “Rome”
- filtro specifico per la città di destinazione:
ip.geoip.dst_city == “Dublin”
- filtro per nazione di destinazione:
ip.geoip.dst_country == “Italy”
(torna su)
[1] https://en.wikipedia.org/wiki/List_of_file_signatures
[2] GeoLite2 ASN, GeoLite2 City e GeoLite2 Country