Università degli Studi di Perugia Facoltà di Scienze MM.FF.NN. Corso di Laurea: Matematica Anno accademico 2010/2011 TALK SNIFFER Seminario d’approfondimento Teoria dell’informazione A cura di: Martina Rena e Leonardo Angeli Docente: Prof. Stefano Bistarelli LE RETI • Rete o Network: insieme di macchine connesse tra loro mediante un qualche mezzo di trasmissione (si pensi alla rete telefonica) • Macchina: computer, stampante, altro • Classificazione: • Reti LAN (Local Area Network): insieme di computer interconnessi in uno spazio fortemente limitato, al livello locale, (edifici) Reti MAN(Metropolitan Area Network): le possiamo considerare LAN estese a livello cittadino Reti WAN (Wide Area Network) : Ad ampia copertura geografica, composte da un insieme di dispositivi, collegati a diverse sottoreti interconnesse • • LE RETI • L’architettura di una rete è generalmente rappresentata da un modello gerarchico strutturato in livelli,ognuno responsabile di una parte del sistema di comunicazione, gestito con il relativo protocollo(insieme di regole da rispettare per un’efficace comunicazione tra due macchine). • IL modello più diffuso è TCP/IP, una serie di protocolli che gestiscono la rete, prende il nome dai 2 più importanti protocolli di cui è composto,vale a dire il TCP(Trasmission Control Protocol) e l’IP(Internet Protocol) LE RETI • • • • • INDIRIZZI IP Sorgono in risposta all’esigenza di riconoscere i dispositivi sulla rete Sono identificativi di lunghezza prefissata (idirizzi IP, dal nome del protocollo IP) Il protocollo si basa sull’assegnazione di un idirizzo(codice), univoco, ad ogni dispositivo connesso ad una stessa rete La grande eterogeneità dei dispositivi connessi alla rete, porta alla definizione del Network byte order, l’ordine di trasmissione dei byte di una rappresentazione numerica: I byte sono spediti/ricevuti a partire dal meno al più significativo LE RETI • Pacchetti: Qualunque dato si voglia trasmettere tra macchine collegate ad una rete, viaggia all’interno di entità chiamate pacchetti. • Sono etichettati con indirizzi di destinazione e mittente, espressi tramite rispettivi indirizzi IP • Al loro interno sono presenti i dati che si desidera trasmettere, generalmente “avvolti” dagli indirizzi, dalle informazioni di controllo e dalle informazioni supplementari necessarie a diversi scopi (controllo errori, divisione e assemblaggio dei pacchetti) diversi a seconda del protocollo. I PROTOCOLLI • • • • Il Protocollo Ethernet Sviluppato sul concetto di condivisione, infatti tutte le macchine condividono la stessa connessione tramite lo stesso cavo Necessariamente quindi ogni terminale ha accesso a tutte le informazioni che viaggiano sul canale di trasmissione. (tale protocollo risulta particolarmente adatto per l’esecuzione di uno sniffer) E’ compito dell’hardware, che implementerà il protocollo,filtrare e ignorare tutto il traffico non diretto al dispositivo a cui appartiene Modalità Promiscua (promiscuous mode): è possibile programmare tale modalità dell’hardware in modo che non effettui tale filtraggio, fornendo tutto il traffico del canale al proprio dispositivo. I PROTOCOLLI Protocollo IP • Gestisce la trasmissione dei dati a pacchetto, occupandosi dell’incapsulamento, della frammentazione e riassemblaggio dei pacchetti, gestendo l’indirizzamento dei dispositivi ed altre opzioni di instradamento dei pacchetti nella rete. Protocollo UDP • Consenta gli scambi dati tra due o più processi in esecuzione sui due o più dispositivi collegati alla rete; come per il protocollo IP si usano gli indirizzi IP per localizzare le due entità in comunicazione, e il concetto di Porta per individuare i processi, in esecuzione su tali dispositivi, coinvolti nella trasmissione dati. • Per il resto, i due protocolli IP e UDP sono molto simili, entrambi non offrono garanzie sulla ricezione e sull’ordine d’arrivo dei pacchetti e non danno conferma di ricezione. I PROTOCOLLI • • • • Protocollo TCP Il protocollo TCP è anch’esso basato su IP, ma contrariamente all’UDP offre un servizio di scambi dati affidabile. Tra le sue caratteristiche troviamo una trasmissione orientata allo stream; ovvero le applicazioni non ricevono pacchetti ma un flusso continuo di dati non strutturato,simulato sul protocollo IP mascherandone tutte le problematiche offre una connessione full-duplex (trasmissione di dati bidirezionale con possibilità di trasmettere i dati nello stesso momento). Questo particolare la differenzia dalla trasmissione half duplex, che è un collegamento che permette la trasmissione dei dati in due direzioni ma non allo stesso tempo. Servizi aggiuntivi di controllo del flusso dati. I PROTOCOLLI • Per entrambi i protocolli UDP e TCP esistono delle assegnazioni di porte chiamate well-know port, ovvero porte assegnate a processi di sistema o programmi d’utilità generali che non sono possibili ridefinire, come per esempio il server HTTP sulla porta 80, il servizio FTP sulla porta 20-21, ed anche il programma Talk sulle porte 517-518. TALK • Programma di comunicazione testuale utilizzabile da coppie di utenti, loggati su sistemi Unix compatibili, che trasferisce righe di testo da un terminale all’altro. • Nasce nel 1988, sviluppato nei laboratori della Berkeley University e rilasciato a partire dalla versione4.2BSD dei sistemi UNIX. • Programma di "conversazione privata uno-a-uno" in cui non è richiesto un IRC Server a differenza delle comuni CHAT, dove è necessario un programma chiamato Internet Relay Chat (IRC) che sfrutta un IRC Server. • Curiosità: in una comune sessione di chat gli utenti non vedono cosa si è scritto finchè nnon si digita il tasto [INVIO], ciò non accade con Talk dove i messaggi sono visualizzati in maniera istantanea (instant messages) TALK • Per "Chattare" si deve avere una Connessione Internet (naturalmente!) ed un IRC client software. • Talk invece è come una conversazione telefonica nella quale la composizione del numero telefonico della persona desiderata corrisponde nello specificare l'indirizzo IP della persona desiderata o il nome del suo PC senza bisogno di alcun sistema IRC. TALK • • • • Il programma lavora sul modello Client / Server; Client: svolge le funzioni di interfaccia per l’utente, gestendo le fasi di scrittura dei messaggi e di visualizzazione dei messaggi di risposta. Server: gestisce la fase di notifica delle richieste di comunicazione agli utenti e permette a due client Talk di stabilire una sessione Talk. Canale di scambio messaggi: Canale dedicato allo scambio dei messaggi ovvero alla trasmissione del testo tra due generici Client A e B. TALK • • • • • Il diagramma seguente mostra i canali di comunicazione creati dal programma Talk necessari per effettuare lo scambio dei messaggi tra due utenti generici A e B. Il primo canale creato è quello da Talk Client A verso Talk Server B, questo serve per informare il Talk Server B che si vuole contattare l'utente B. Successivamente Talk server B, prova ad informare il Client B dell’invito ll secondo canale creato è quello da Talk ClientB verso il Talk Server A,esso serve all’utente B per reperire il “recapito” sul quale il Client A aspetta(recapito comunicato al Server A in precedenza, dal Client A) e quindi rispondere. A questo punto i Talk Client A e B, creano un canale di scambio dei messaggi, dedicato alla trasmissione del testo TALK • Lato Client Per attivare il programma Client è necessario digitare il seguente comando: talk { User | User@Host } [Tty] Per iniziare una conversazione, un utente digita il comando talk e specifica la login ID dell’utente che vuole contattare. • Opzioni disponibili: User:Se si desidera conversare con qualcuno che è loggato sullo stesso sistema server, allora User è appunto il login della persona. Se si desidera conversare con un utente loggato su un altro sistema server, allora User è nella forma “utente@macchina” Tty: Se si desidera conversare con un utente che ha più terminali aperti, l'argomento Tty può essere usato per indicare il nome del terminale appropriato, dove Tty è nella forma 'ttyXX'. Es: [email protected] :> talk [email protected] Tty3 TALK Lato Server Il programma server lavora sottoforma di “demone”(eseguito in background senza il controllo dell’utente), esso è attivato dal sistema in fase di boot e rimane continuamente in ascolto di un’eventuale richiesta di connessione da parte dei client. Esistono due versioni di Server, talkd , e la sua evoluzione ntalkd. • TALKD: utilizza il protocollo UDP ed è in ascolto sulla porta 517, è il primo server progettato per il protocollo Talk, ma attualmente è poco utilizzato ed è presente solo su versioni abbastanza vecchie di sistemi Linux (BSD v4.2). Esso lavora in maniera identica a ntalk , eccetto per le strutture dati che sono leggermente differenti. TALK • NTALKD:utilizza il protocollo UDP ed è in ascolto sulla porta 518, esso è il più comune tra i due (BSD v4.3 e superiori). • Un Talk client A prova a contattare il Talk server B, per determinare se c'è già qualche invito di conversazione per lui, chiedendo di controllare la lista degli inviti da recapitare mantenuta dal Talk server B. Se c'è nella lista, esso si connette all'altro Talk client B utilizzando un canale dedicato in protocollo TCP. Altrimenti, esso lascia un invito per l’utente B, e sarà compito del Talk server B presentare tale l’invito di conversazione. • Nota: per effettuare una sessione di Talk è necessario che i due client comunichino attraverso due Talk server dello stesso tipo. SNIFFER • Gli sniffer sono nati in risposta alla necessità di avere uno strumento che esegue il debug (ovvero l’operazione di rilevamento errori) delle comunicazioni in rete. • Essi catturano i pacchetti che viaggiano sulla rete senza però alterarli, li interpretano ed eventualmente li memorizzano per un’analisi successiva. • In questo modo gli amministratori di rete sono in grado di individuare e risolvere i problemi di comunicazione, consultando il traffico nella sua forma “primordiale”. • Nasce quindi come strumento di amministrazione delle reti e non con lo scopo di attacchi di CONFIDENZIALITA’ alle informazioni che viaggiano in rete. SNIFFER • Tuttavia gli sniffer sono stati trasformati, nel corso degli anni, per poter “aiutare” gli hacker più smaliziati. • Si può facilmente immaginare la quantità di preziose informazioni che passano attraverso un segmento di rete anche in un breve intervallo: coppie di nome utente e password, messaggi di posta elettronica confidenziali, interi file con informazioni finanziarie, industriali, grafici di etc. • Perciò qualunque cosa è trasmessa in rete è una possibile preda di uno sniffer in ascolto. (Attacco di CONFIDENZIALITA’) SNIFFER Le funzioni tipiche degli sniffer possono essere riassunte sinteticamente in: • conversione e filtraggio delle informazioni presenti nei pacchetti in una forma leggibile dall’utente; • analisi dei malfunzionamenti di rete, ad es. perché l'host A non riesce a dialogare con l'host B; • analisi di qualità e portata della rete (performance analysis), ad es. per scoprire “colli di bottiglia”(limiti di capacità,che quindi rallentano il traffico) lungo la rete; • ricerca automatizzata di password e nomi di utenti in chiaro, o cifrati per una successiva analisi; • creazione dei log del traffico sulla rete e scoperta di possibili intrusioni in rete attraverso l’analisi degli stessi. SNIFFER • Gli sniffer rappresentano un rischio elevato per una rete o per il pc dell’utente. La semplice esistenza di uno sniffer in rete rappresenta una falla e una minaccia alla sicurezza e alla riservatezza delle comunicazioni all’interno della rete stessa • Se la rete che si utilizza è sottoposta al “controllo” di uno sniffer, ci sono due possibilità: • un intruso, dall’esterno è riuscito ad entrare nella rete e ad installare lo sniffer • un utente o il gestore della rete stessa sta andando ben oltre la manutenzione e il monitoraggio delle connessioni. SNIFFER • Sebbene uno sniffer possa essere installato ovunque nella rete, esistono dei punti strategici che permettendo la raccolta di determinate informazioni. • Uno di questi è un qualsiasi punto adiacente ad una macchina in cui si presume passino notevoli quantità di password; ad esempio un gateway di rete oppure un nodo che smisti il traffico in entrata e in uscita della rete stessa. • Lo sniffer generalmente è installato, sia esso hardware o software, all’interno dello stesso segmento della rete che si vuole controllare. SNIFFER • Lo sniffing viene effettuato principalmente su reti Ethernet, poiché come detto, vi è una condivisione delle informazioni, che sono ricevute contemporaneamente da tutte le schede connesse al bus interessato dal traffico dei pacchetti di dati • Sfruttando infatti la modalità promiscua del protocollo Ethernet, è possibile accettare tutto il traffico in viaggio sulla rete, indipendentemente dall'indirizzo IP di destinazione(contenuto nell’Header =intestazione, dei pacchetti), e conseguentemente di passarlo ad una applicazione in grado di analizzarlo. • Lo sniffer inoltre è dotato di opportuni filtri(Packet Filter) grazie ai quali riesce ad analizzare gran parte del traffico che passa attraverso il tratto di rete al quale è connesso. TALK SNIFFER • Un programma TalkSniffer, viene realizzato per lo sniffing di sessioni Talk. • Lo scopo è quello di consentire all'utente di visualizzare a video i messaggi che una coppia di utenti si scambiano in una sessione di chat privata utilizzando il programma Talk, sulla sezione di rete sulla quale lo sniffer è attivo. TALK SNIFFER • Per accedere a tale traffico abbiamo due possibilità: 1. mettersi in ascolto sull’intero traffico TCP, analizzandolo poi per estrarre solo le informazioni di nostro interesse. soluzione poco conveniente in quanto richiede un enorme lavoro di analisi del traffico catturato e per lo più non di nostro interesse. 2. Sniffare solo il traffico TCP di nostro interesse, per fare ciò è necessario conoscere almeno uno dei front-end della connessione TCP tra i due utenti per la sessione TALK. In un primo momento effettueremo uno Sniffing su canale UDP tra client e server, per catturare Indirizzo IP e Porta TCP(comunicati dal client al server,come recapito per rispondere alla conversazione) necessari ad individuare in seguito i messaggi di chat tra i due utenti della sessione Talk.