Politecnico di Milano Re# di Comunicazione e Internet Wireshark e Protocolli Applica1vi
Agenda della lezione Wireshark Protocolli applica1vi: Simple Mail Transfer Protocol (SMTP) Post Office Protocol (POP) Hyper- Text Transfer Protocol (HTTP) File Transfer Protocol (FTP) 2
Wireshark e Protocolli Applicativi Agenda: Wireshark Laboratorio 5. Protocolli Applica1vi e Wireshark 3
Packet sniffing I pacchem seguono normalmente il loro percorso nel nodo (rou1ng, filtraggio, forwarding), ma vengono osserva1 da un tool di sniffing I pacchem sono visualizza1 completamente dal tool di sniffing, con gli header di tua i livelli ed il payload È possibile compiere elaborazioni di vario 1po sui pacchem, per raccogliere sta1s1che, ouenere informazioni... 4
Wireshark È uno dei tool più comodi per sniffare pacchem in rete Con1ene strumen1 avanza1 di analisi e filtraggio È un tool mul1piauaforma (Window, Linux, Mac) ed è liberamente scaricabile: hup://www.wireshark.org/ Necessita dei permessi di root/administrator per poter effeuuare delle cauure di pacchem Nella versione senza permessi, può però essere usato per analizzare cauure già effeuuate 5
Interfaccia di Wireshark 6
Alcune funzionalità u#li Filtri sui pacchea: permeue di creare filtri per vedere solo determina1 pacchem. Il filtraggio si può fare in base ai diversi campi degli header, o ai diversi protocolli Follow TCP Stream: è possibile, selezionando un paccheuo TCP, chiedere a Wireshark di seguire il flusso TCP, concatenando i pacchem e mostrando solo i payload. (ad es., seguite un flusso HTTP...) Analisi degli Header: è possibile, per ogni paccheuo, effeuuare analisi deuagliate degli header, aprendoli e vedendone il contenuto in formato esadecimale e formauato dalla GUI Sta#s#che: è possibile ouenere delle sta1s1che sui flussi e diagrammi temporali 7
Filtri sui pacchea e Follow TCP stream 8
Analisi degli header 9
Sta#s#che 10
Esercizi 1/2 Sul sito web del corso si trovano delle cauure già faue, analizzabili con Wireshark, aprirle e verificare gli scambi di pacchem dei vari protocolli: HTTP, FTP, POP, SMTP Ca-ura HTTP 1: Quali client sono sta1 impiega1? Quante richiesta di pagine web sono state faue? In tum i casi è possibile visualizzare la pagina completa di tuue le par1? Ca-tura HTTP 2: Qual è lo Username e la password di accesso alla zona riservata del sito? Ca-ura FTP: A che porta del server il client si è connesso per ricevere il file server.png? 11
Esercizi 2/2 Ca-ura POP 1: Che client di posta è stato usato per inviare la mail? Ca-ura POP 2: Che 1po di encoding è usato per l'allegato? Ca-ure SMTP: Che differenza c'è tra la cauura SMTP 1 e 2? 12
Wireshark e Protocolli Applicativi Agenda: Protocolli applica#vi Laboratorio 5. Protocolli Applica1vi e Wireshark 13
Protocolli Applica#vi HTTP FTP SMTP POP3 14
Wireshark e Protocolli Applicativi Connessione remota via ssh Laboratorio 5. Protocolli Applica1vi e Wireshark 15
Generalità Il protocollo SSH (Secure Shell) è un procollo per il login da remoto, l esecuzione di comandi da remoto e altri servizi su una macchina remota tramite canale sicuro (connessione criuografata) E l evoluzione di TELNET Ha subito una lunga evoluzione, descriuo da mol1 RFC Protocollo client- server, porta 22 Su alcuni OS è fornito di default dalla linea di comando digitando ssh, su altri (e.g., Windows) occorre un applicazione apposita (e.g., PuTTY) 16
Login remoto ConneMamoci alla macchina remota da cui eseguire le successive amvità Configurazione: indirizzo IP macchina remota: 131.175.123.236 username: userlab password: userlab $ ssh userlab@131.175.123.236 userlab@131.175.123.236's password: Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64) * Documentation: https://help.ubuntu.com/ You have mail. userlab@imdea-latitude-d630:~$ 17
Wireshark e Protocolli Applicativi Agenda: Simple Mail Transfer Protocol Laboratorio 5. Protocolli Applica1vi e Wireshark 18
Generalità (1) Il Simple Mail Transfer Protocol (SMTP) è un protocollo di trasmissione di email RFC 821 Specifica base Protocollo testuale Inizialmente permeueva solo il trasferimento ASCII, è stato successivamente esteso per trasmeuere informazioni binarie (estensione MIME, 8BITMIME,...) U1lizza la porta 25 SMTP originariamente non prevede auten1cazione: SMTP- AUTH / Internet Mail 2000 IETF An1- Spam Research Group 19
Generalità (2) Sender Domain Receiver Domain Relaying SMTP Destination SMTP SENDER RECEIVER 20
Generalità (3) Voglio inviare una mail ad un amico del dominio receivers.com 1) Mi conneuo al server SMTP del dominio receivers.com 2) Dichiaro (nel miuente della mail) il dominio da cui scrivo: senders.com 3) Scrivo la mail e la deposito nella cartella di friend@receivers.com Non mi è stato chiesto USER o PASS!!! (no auten1cazione) I gestori del dominio receivers.com tuuavia possono operare alcuni controlli, ad esempio bannando degli indirizzi IP o loggando ogni accesso I provider offrono server SMTP che si occupano delle consegne alla mailbox del des1natario al posto nostro (gestendo il caso di server occupato, momen1 di down,...) 21
Comandi SMTP Comandi di uso comune: HELO <domain> MAIL FROM:<reverse-path> RCPT TO:<forward-path> DATA RSET VRFY <string> HELP [<string>] QUIT I comandi sono Case Insensitive, tranne nel reverse e forward path, che sono Sensitive 22
Sessione d esempio albertux@antlab101:~$ telnet localhost 25 220 localhost ESMTP Postfix (Debian/GNU) HELO studente.it 250 localhost MAIL FROM:<matr666999@studente.it> 250 2.1.0 Ok RCPT TO:<userlab@localhost> 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> Subject: Verifica SMTP From: matr666999@studente.it To: professore@labrci.it Buongiorno Questa mail serve a dimostrare che ho imparato SMTP.. 250 2.0.0 Ok: queued as F41CC9F6EE QUIT 221 2.0.0 Bye 23
Esercizi Inviare una mail da un miuente falso (pippo@disney.it) all'indirizzo email userlab@localhost Inviare, sempre allo stesso indirizzo mail, altre 2 mail usando miuen1 e subject diversi (serve per un esercizio successivo) [A CASA] provare a mandare delle mail al proprio indirizzo email da pippo@disney.it 24
Wireshark e Protocolli Applicativi Agenda: Post Office Protocol Laboratorio 5. Protocolli Applica1vi e Wireshark 25
Generalità Il Post Office Protocol (deuo anche POP) è un protocollo di accesso alla mailbox RFC 1939 Protocollo testuale Protocollo con Auten1cazione U1lizza la porta 110 Non è cifrato, per cui user e password passano in chiaro 26
Comandi Login in chiaro: USER <username> PASS <password> Risposte del server: -ERR +OK STAT info sullo stato mbox LIST elenca il # messaggi RETR n leggi messaggio n DELE n cancella messaggio n RSET annulla cancellazioni QUIT esce Operazioni comuni: CAPA mostra le capabilities del server 27
Sessione d esempio albertux@antlab101:~$ telnet localhost 110 +OK Dovecot ready. USER userlab +OK PASS userlab +OK Logged in. LIST +OK 1 messages: 1 598. RETR 1 +OK 598 octets Return-Path: <matr666999@studente.it> X-Original-To: userlab@localhost Delivered-To: userlab@localhost Received: from studente.it (ip254 [192.168.0.254]) by localhost (Postfix) with SMTP id F41CC9F6EE for <labrci001@labrci.lan>; Wed, 26 Mar 2008 13:09:43 +0100 (CET) Message-Id: <20080326121008.F41CC9F6EE@localhost> Date: Wed, 26 Mar 2008 13:09:43 +0100 (CET) From: matr666999@studente.it To: undisclosed-recipients:; Subject: Verifica SMTP From: matr666999@studente.it To: professore@labrci.it Buongiorno Questa mail serve a dimostrare che ho imparato SMTP.. DELE 1 +OK Marked to be deleted. QUIT +OK Logging out, messages deleted. 28
Esercizi Collegarsi al server POP sulla macchina remota Scaricare le mail precedentemente inviate Con il comando TOP verificare gli header della mail Cancellare le mail inviate in precedenza Annullare la cancellazione con il comando RSET Cancellarle di nuovo, defini1vamente 29
Wireshark e Protocolli Applicativi Agenda: Hyper- Text Trasfer Protocol Protocolli Applica1vi e Wireshark 30
Generalità Protocollo fondamentale del World Wide Web (WWW) RFC 1945 (HTTP/1.0) RFC 2068 e RFC 2616 (HTTP/1.1) Protocollo Client- Server Completamente testuale Protocollo Stateless (ma il server può implementare tecniche per mantenere lo stato quali i cookies, le sessioni, campi nascosj nei form, URL redirecjon,...) U1lizza la Porta 80 31
Scambio di messaggi Il client invia una richiesta contenente un metodo al server Il server risponde alla richiesta 32
Richieste HTTP Le richieste sono composte da tre par1: Riga di richiesta (request line) Intestazione (header) Corpo del messaggio (body) 33
Header richieste HTTP 34
Risposte HTTP La struuura delle risposte è analoga a quella delle domande. La riga di richiesta prende il nome di Status Line. 35
Risposte HTTP: status codes Ripor1amo alcuni esempi 1pici di status code di HTTP L'elenco completo è definito nell'rfc 2616 ( h-p://www.w3.org/protocols/rfc2616/rfc2616- sec10.html ) 36
Sessione d esempio Ci connemamo al server web sulla porta 80 $ telnet localhost 80 Trying 127.0.0.0... Connected to 127.0.0.0. Escape character is '^]'. Richiediamo una pagina web (è necessaria una riga vuota alla fine della richiesta: dare 2 [INVIO] ) GET /testpage.html HTTP/1.0 La pagina viene scaricata e la connessione viene chiusa 37
Analisi della risposta HTTP/1.1 200 OK Date: Fri, 23 Jan 2015 10:15:43 GMT Server: Apache/2.4.7 (Ubuntu) Last-Modified: Thu, 22 Jan 2015 13:21:39 GMT ETag: "3fb-50d3d8d5a2fc2" Accept-Ranges: bytes Content-Length: 1019 Vary: Accept-Encoding Connection: close Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <title> RCI Test Page </title> <meta name="author" content="docente rci"/> <meta name="description" content="pagina di prova per lo studio del protocollo HTTP - Corso RCI"/> <link rel="stylesheet" type="text/css" href="style_rci.css"> </head> <body> <div class="striscione"> <div class="box"> Questa e' una pagina di prova per testare il protocollo HTTP.<br> Contiene del testo e delle immagini.<br> <br><br> </div> </body> </html> 38
Sessione d esempio È stata scaricata la pagina, ma non gli elemen1 non HTML che la compongono: in questo caso, mancano le immagini! Dal codice HTML leggiamo che si chiamano img/logo_poli_small.png e img/logo-antlab.png Ci connemamo ancora al server web $ telnet localhost 80 [...] Scarichiamo la prima immagine GET /img/logo_poli_small.png HTTP/1.0 (ovviamente l'immagine è un file binario, per cui comparirà a monitor un insieme di cara-eri) 39
HTTP: Keep Alive È possibile rendere persistente una connessione HTTP, in modo che tum i messaggi passino sulla stessa connessione! 40
Download HTTP/1.1 Scarichiamo una pagina usando HTTP/1.1 Ci connemamo al server web sulla porta 80 $ telnet localhost 80 [...] Richiediamo una pagina web GET /testpage.html HTTP/1.1 Usando HTTP/1.1, c'è un header obbligatorio (Host), che con1ene il nome del dominio Host: 131.175.123.236 41
(cont d) Download HTTP/1.1 La pagina viene scaricata, ma la connessione rimane aperta! Scarichiamo allora la prima immagine: GET /img/logo_poli_small.png HTTP/1.1 Host: : 131.175.123.236 Scarichiamo la seconda immagine, chiudendo la connessione: GET /img/logo-antlab.png HTTP/1.1 Host: : 131.175.123.236 Connection: Close La connessione ha un 1meout, scaduto il quale viene chiusa! 42
GET condizionato Per risparmiare banda, HTTP/1.1 prevede l'uso di GET condizionato: GET /testpage.html HTTP/1.1 Host: 131.175.123.236 If-Modified-Since: Thu, 22 Jan 2015 13:30:00 GMT Il server risponde col messaggio 200 OK e invia la pagina se essa è stata modificata dopo il 22/01/2015, altrimen1 risponde con un 304 Not- Modified: HTTP/1.1 304 Not Modified Date: Thu, 22 Jan 2015 13:30:00 GMT 43
Wireshark e Protocolli Applicativi Agenda: File Transfer Protocol Protocolli Applica1vi e Wireshark 44
Generalità Il File Transfer Protocol (FTP) è un protocollo di condivisione e trasmissione di file tra host RFC 959 Protocollo Client- Server Completamente testuale Opera direuamente sul filesystem del sistema Connessione di controllo: porta 21 45
Comandi FTP (1) Comandi necessari a comunicare via FTP: Connessione al server sulla porta 21 (connessione di controllo): myhost$ telnet ftp.elet.polimi.it 21 Auten1cazione: USER <nomeutente> PASS <password> QUIT Informazioni: HELP STAT < NULL nome_file> SYST Lista più completa di comandi: http://www.nsftools.com/tips/rawftp.htm 46
Comandi FTP (2) PWD CWD LIST QUIT RETR STOR DELE Movimenti: Manipolazione: Setup: MODE <Stream Block Compressed> PASV PORT a1, a2, a3, a4, p1, p2 * Modalità di impiego: Protocollo con 2 connessioni (2 telnet) I comandi vengono dati su connessione di controllo I trasferimenti avvengono sulla connessione dati * IP del client a cui connettersi: a1.a2.a3.a4 - PORT a cui connettersi: p1*256 + p2 47
Sessione d esempio Shell 1 $ telnet ftp.elet.polimi.it 21 USER Anonymous PASS Server Shell 2 PASV 227 Entering Passive Mode (131,175,31,10,46,204) 46*256+204 = 11980 CWD outgoing/ilario.filippini $telnet 131.175.31.10 11980 LIST PASV 227 Entering Passive Mode (131,175,31,10,420,21) RETR gpl.txt -rw-r--r-- 1 620 620 826322 Mar 26 13:03 gnome_is_people.png -rw-r--r-- 1 620 620 35147 Mar 26 13:03 gpl.txt $telnet 131.175.31.10 107541 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 [...] 48
Esercizi Loggarsi al server FTP xp.elet.polimi.it (USER anonymous, PASS <anything> ) Provare a scaricare un'immagine Provare l'altro metodo di connessione, PORT (con p1=128, p2= 204): funziona? (per aprire una porta TCP si può usare il tool netcat nel seguente modo: nc - l #porta oppure nc - l - p #porta ) 49