prof. Nunzio Brugaletta
EsNET

EnneBi - Computer Science
Avanti - Indietro - Inizio


Wireshark: esame dei pacchetti

Al fine di evidenziare il contenuto dei frame scambiati, si propone un esempio esemplificativo.

In una rete locale (192.168.1.0) c'è un server web che gira nella macchina con IP 192.168.1.100. Il client 192.168.1.101, per mezzo di un browser richiede le pagine web presenti nel server. Nell'esempio proposto, nel server, sono disponibili due pagine:

richiesta

La pagina ~/nunzio/richiesta.html contiene un form con una casella di testo, per inserire un nome, e un pulsante.

Al pulsante Invia è associato un metodo POST che permette l'invio del nome inserito nel form, ad una pagina php successiva che elaborerà tale dato.

risposta

La pagina ~/nunzio/risposta.php, effettua una interrogazione ad un database, estrae il cognome e il nickname associati al nome inviato, costruisce una pagina con i dati trovati e la invia al client.

La sequenza delle azioni esposte nell'esempio è quella che avviene in un ambiente di web dinamico, quando il server web, come in questo caso, interagisce per mezzo del linguaggio di scripting PHP, con un database e costruisce la pagina da restituire al client, in base alle risposte ricevute dal server DB.

Avviata, per esempio premendo il primo a sinistra della barra dei pulsanti, la cattura dei pacchetti, viene mostrata la finestra di dialogo con le statistiche dei pacchetti e il pulsante per fermare la cattura. Dopo aver richiesto la prima pagina, inserito il nome da cercare e aver ricevuto, e visualizzato nel browser, la seconda pagina di risposta, si può fermare la cattura dei frame.

whireshark - traffico

Nell'esempio riportato Wireshark ha catturato 18 frame dal dialogo fra il browser e il server web.

La comunicazione inizia con due pacchetti che trasportano richieste che utilizzano il protocollo ARP. Nel primo pacchetto la scheda di rete installata nel PC con IP 192.168.1.101 chiede, con un pacchetto inviato in modalità broadcasting, a che indirizzo MAC corrisponde l'IP 192.168.1.100.

whireshark - arp

Nel secondo pacchetto è contenuta la risposta dell'host, cui corrisponde l'IP specificato, che invia il proprio MAC. A questo punto la conversazione può essere avviata.

Prima di iniziare la reale conversazione fra client e server è necessario che i due interlocutori si sincronizzino.

Dopo tre pacchetti di sincronizzazione (SYN del richiedente, SYN e ACK del destinatario e successivo ACK del richiedente) la conversazione può essere avviata. Un pacchetto di tipo SYN (SYNchronization) chiama l'interlocutore che, se accetta la conversazione, ritorna un pacchetto ACK (ACKnowledge). A questo punto anche il richiedente invia un ACK e la conversazione vera e propria può essere avviata. Quella descritta è comunemente nota come negoziazione dei pacchetti. I pacchetti successivi contenenti i dati della conversazione fra i due host saranno seguiti da pacchetti di tipo ACK per attestare l'avvenuta ricezione.

whireshark - get

Nel frame 6 viene utilizzato dal client il metodo GET per la richiesta della prima pagina. Il frame riporta nella parte riservata al protocollo HTTP, un insieme di informazioni come quelle già esaminate nell'esempio di uso di Telnet.

La comunicazione avviene, in questo caso, nel verso che va dalla porta, non privilegiata, 42493 aperta dal client, alla porta privilegiata 80 sulla quale risponde il server.

Il frame 8 riporta la risposta del server web: la richiesta è stata soddisfatta (la parte superiore della finestra riporta il codice 200); dopo essersi presentato (nella parte dedicata al protocollo HTTP) mostrando il proprio nome e la versione, invia in ASCII il sorgente della pagina richiesta.

whireshark - pagina 1

In questo caso, come evidenziato nella parte TCP, il pacchetto viaggia dalla porta 80 del web server alla porta 42493 del client.

Il comando POST per l'invio, del dato inserito, al server è suddiviso nei due frame 13 e 15.

whireshark - post

Si fa notare che accodato alla richiesta stessa si trova il nome della variabile utilizzata seguito dal valore, in chiaro, introdotto dall'utente.

Nel frame 17, infine, il server invia al client la pagina HTML con i dati richiesti.

whireshark - pagina 2

L'interrogazione al database non genera traffico nella rete e, quindi, non ci sono frame che testimoniano lo scambio con il server DB. Nei frame c'è solo la pagina dinamica generata dall'interprete PHP.

Wireshark offre anche la possibilità, al di là della sequenza dei pacchetti, di seguire lo scambio di dati.

whireshark - follow tcp

Selezionando uno qualsiasi dei pacchetti scambiati dagli interlocutori, scegliendo Follow TCP Stream dal menù Analyze viene visualizzata una finestra di dialogo con il contenuto della conversazione fra client e server così come, per esempio, avviene in un protocollo di alto livello (HTTP). È possibile scegliere se la visualizzazione deve riguardare l'intero traffico di pacchetti, come anche solamente quello verso una sola direzione.

Come rilevato più volte, nel protocollo HTTP i dati inseriti dagli utenti vengono trasmessi in chiaro in ASCII. È questo il motivo per cui, nel caso la procedura utilizzata richiedesse l'inserimento di dati sensibili come password o altro, sarebbe necessario utilizzare protocolli diversi rispetto ad HTTP.

Per rispondere ad esigenze di trasmissione riservata è nato SSL (Secure Socket Layer) che si occupa dell'autenticazione del client e del server e delle comunicazioni criptate per garantire la protezione dei dati. HTTP, quando usato con SSL prende il nome di HTTPS (HTTP Secure): l'uso di questo protocollo, nei browser, è evidenziato da un lucchetto chiuso visualizzato nella barra di stato della finestra del browser, e dall'URL visualizzato, nella barra dell'indirizzo, su fondo colorato.



Avanti - Indietro - Inizio

http://ennebi.solira.org
ennebi@solira.org