studio ed analisi della sicurezza dei servizi voice over ip
Transcript
studio ed analisi della sicurezza dei servizi voice over ip
Università degli studi di Roma “La Sapienza” Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni STUDIO ED ANALISI DELLA SICUREZZA DEI SERVIZI VOICE OVER IP CON SIP E RTP Relatore Candidato Chiar.mo prof. Marco Listanti Matteo Mogno Co-relatore Emilio Tonelli Anno accademico 2003/2004 Alla mia famiglia ed ai miei amici Desidero ringraziare il Prof. Marco Listanti per avermi dato l’opportunità di svolgere il presente lavoro di tesi al fianco di persone che mi hanno dato molto sia dal punto professionale, sia da quello umano. Ringrazio tutto il gruppo CONSEL per i bei momenti passati insieme, per i consigli e l’aiuto che ognuno mi ha dato. Inoltre ringrazio “la struttura” Telecom Italia, ed in particolare la funzione IT Security di IT Telecom per aver messo a disposizione gli strumenti tecnici per la realizzazione del presente lavoro. Infine, un ringraziamento particolare ad Alessandro e Sebastiano per l’aiuto ed il sostegno ricevuto. INDICE 1 Introduzione ....................................................................... 1 1.1 Stato dell’arte ....................................................................................2 1.2 Struttura della tesi..............................................................................3 2 Visione d’insieme del Voice over IP .................................... 5 2.1 Voice over IP (VoIP) ...........................................................................5 2.1.1 2.2 Architettura del VoIP ...........................................................................................5 Session Initiation Protocol (SIP)...........................................................7 2.2.1 Architettura del SIP .............................................................................................8 2.2.2 Messaggi SIP ....................................................................................................10 2.2.3 Funzionalità del SIP ...........................................................................................13 2.2.3.1 Risoluzione degli indirizzi ............................................................................13 2.2.3.2 Funzioni legate alle chiamate ......................................................................15 2.2.3.3 Funzioni non legate alle chiamate ...............................................................15 2.3 Session Description Protocol (SDP) .................................................... 16 2.4 Real-Time Transfer Protocol (RTP)..................................................... 17 3 Aspetti di sicurezza nel Voice over IP ............................... 20 3.1 Vulnerabilità del VoIP ....................................................................... 21 3.2 Attacchi ad un’architettura VoIP ........................................................ 24 3.2.1 Confidenzialità...................................................................................................25 3.2.1.1 Switch Default Password Vulnerability .........................................................25 3.2.1.2 Classical Wiretap Vulnerability.....................................................................25 3.2.1.3 ARP Cache Poisoning e ARP Floods .............................................................25 3.2.1.4 Web Server Interfaces ...............................................................................26 3.2.1.5 IP Phone Netmask Vulnerability ..................................................................26 3.2.2 Integrità ...........................................................................................................26 3.2.2.1 DHCP Server Insertion Attack .....................................................................27 3.2.2.2 TFTP Server Insertion Attack ......................................................................27 3.2.3 Disponibilità e Negazione del Servizio ..................................................................27 3.2.3.1 CPU Resource Consumption Attack..............................................................28 3.2.3.2 Default Password Vulnerability ....................................................................28 3.2.3.3 Exploitable software flaws ..........................................................................29 3.2.3.4 Account Lockout Vulnerability .....................................................................29 i Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Indice 4 Vulnerabilità di SIP e RTP ................................................. 30 4.1 SIP ................................................................................................. 30 4.1.1 Hijacking ..........................................................................................................30 4.1.1.1 Registration Hijacking ................................................................................30 4.1.1.2 3XX Response code messages ....................................................................32 4.1.2 Man in the Middle..............................................................................................33 4.1.2.1 Impersonating a server: Proxy server ..........................................................33 4.1.2.2 302 Response code message ......................................................................36 4.1.2.3 305 Response code message ......................................................................37 4.1.2.4 Impersonating a server: Registrar server .....................................................39 4.1.3 Denial of Service ...............................................................................................40 4.1.3.1 Tearing down a session..............................................................................40 4.1.3.2 Modifying a session....................................................................................41 4.1.3.3 Cancelling a session...................................................................................43 4.1.3.4 SIP DoS attack and amplification.................................................................44 4.1.3.5 Response code messages ...........................................................................45 4.1.3.6 Toll Fraud .................................................................................................46 4.2 RTP................................................................................................. 47 4.2.1 Man in the Middle..............................................................................................47 4.2.1.1 4.2.2 Modifying IP address..................................................................................47 Denial of Service ...............................................................................................49 4.2.2.1 Fase di lancio ............................................................................................49 4.2.2.2 Malicious payload format............................................................................50 4.2.2.3 RTCP timing rules incorrectly ......................................................................51 4.2.2.4 Change Synchronization Source fileld ..........................................................53 4.2.2.5 BYE attack ................................................................................................55 4.2.2.6 Sequence Number and Timestamp higher....................................................55 4.2.2.7 Injecting malicious Reception Reports (RR)..................................................56 4.3 Implementazione degli attacchi ......................................................... 58 4.3.1 Man in the Middle in VoIP ..................................................................................58 4.3.1.1 Architettura...............................................................................................58 4.3.1.2 Strumenti..................................................................................................59 4.3.1.3 Risultati ....................................................................................................59 4.3.2 Tearing down a session......................................................................................61 4.3.2.1 Architettura...............................................................................................61 4.3.2.2 Strumenti..................................................................................................62 4.3.2.3 Risultati ....................................................................................................62 4.3.3 Cancelling a session...........................................................................................64 ii Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Indice 4.3.3.1 Architettura...............................................................................................64 4.3.3.2 Strumenti..................................................................................................64 4.3.3.3 Risultati ....................................................................................................64 4.3.4 Modifying a session ...........................................................................................65 4.3.4.1 Architettura...............................................................................................65 4.3.4.2 Strumenti..................................................................................................65 4.3.4.3 Risultati ....................................................................................................67 5 Attraversamento di NAT e Firewall ................................... 68 5.1 Introduzione al NAT e Firewall........................................................... 68 5.1.1 Introduzione ai Firewall......................................................................................68 5.1.1.1 Packet Filtering Gateways...........................................................................68 5.1.1.2 Circuit-Level Gateways ...............................................................................68 5.1.1.3 Application Level Gateways ........................................................................69 5.1.2 Introduzione ai NAT...........................................................................................69 5.1.2.1 Static NAT.................................................................................................70 5.1.2.2 Dynamic NAT ............................................................................................70 5.1.2.3 Network Address and Port Translation (NAPT)..............................................71 5.2 Problematiche di attraversamento ..................................................... 71 5.2.1 Il problema Firewall ...........................................................................................71 5.2.2 Il problema NAT ................................................................................................72 5.2.3 Soluzioni proposte .............................................................................................73 5.2.3.1 Universal Plug and Play (UPnP) ...................................................................73 5.2.3.2 STUN........................................................................................................73 5.2.3.3 Configurazione manuale .............................................................................74 5.2.3.4 Tecniche di tunnel .....................................................................................74 5.2.3.5 Application Level Gateway ..........................................................................75 6 Progettazione del SIP ALG ................................................ 76 6.1 Sistema di gestione dei messaggi SIP ................................................ 76 6.1.1 Definizione astratta dei tipi .................................................................................78 6.1.2 Messaggi SIP uscenti .........................................................................................81 6.1.3 Messaggi SIP entranti ........................................................................................82 6.2 Processo NAT L7 .............................................................................. 83 6.2.1 Messaggi in ingresso..........................................................................................85 6.2.2 Messaggi in uscita .............................................................................................86 6.3 Processo Controllo Policies ................................................................ 88 iii Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 6.3.1 Indice Messaggi in ingresso..........................................................................................90 6.3.1.1 REGISTER.................................................................................................91 6.3.1.2 OPTIONS ..................................................................................................92 6.3.1.3 INVITE .....................................................................................................93 6.3.1.4 BYE ..........................................................................................................99 6.3.2 Messaggi in uscita ........................................................................................... 101 6.3.2.1 REGISTER............................................................................................... 102 6.3.2.2 OPTIONS ................................................................................................ 103 6.3.2.3 INVITE ................................................................................................... 104 6.3.2.4 BYE ........................................................................................................ 110 6.3.3 Procedure comuni............................................................................................ 112 7 Risultati e conclusioni ..................................................... 114 Appendice A – SIP Generator .............................................. 116 Appendice B – SDL ............................................................... 118 Bibliografia .......................................................................... 120 iv INDICE DELLE FIGURE Figura 2.1 - Architettura del Voice over IP .................................................................................6 Figura 2.2 - Stack del Voice over IP ..........................................................................................8 Figura 2.3 - Parte delle risposte SIP ........................................................................................11 Figura 2.4 - Intestazione di RTP .............................................................................................17 Figura 4.1 - Registration Hijacking: flusso di messaggi dell'attacco ............................................31 Figura 4.2 - 3XX Response code messages: 301 Moved Permanently .........................................33 Figura 4.3 - Impersonating a Proxy server: l'attaccante modifica i record del DNS.......................35 Figura 4.4 - 302 Response code message: flusso dei messaggi di attacco ..................................37 Figura 4.5 - 305 Response code message: flusso dei messaggi di attacco ..................................38 Figura 4.6 - Impersonating a Registrar Server .........................................................................39 Figura 4.7 - Tearing down a session: BYE verso le due vittime ..................................................41 Figura 4.8 - Modifying a session: fase di attacco ......................................................................42 Figura 4.9 - Cancelling a session: fase di sniffing e attacco .......................................................43 Figura 4.10 - SIP DoS attack ..................................................................................................45 Figura 4.11 - DoS: response code messages............................................................................46 Figura 4.12 - Modifying IP address .........................................................................................48 Figura 4.13 - Malicious payload format....................................................................................51 Figura 4.14 - RTCP timing rules incorrectly ..............................................................................53 Figura 4.15 - Change Synchronization Source field ...................................................................54 Figura 4.16 - BYE attack ........................................................................................................55 Figura 4.17 - Sequence Number and Timestamp higher............................................................56 Figura 4.18 - Pacchetto Reception Report di RTCP ...................................................................57 Figura 5.1 - Il problema Firewall.............................................................................................72 Figura 5.2 - Il problema NAT..................................................................................................72 Figura 6.1 - SDL: Sistema di gestione dei messaggi SIP............................................................76 Figura 6.2 - SDL: Sistema di gestione dei messaggi SIP uscenti.................................................81 Figura 6.3 - SDL: Sistema di gestione dei messaggi SIP entranti................................................82 v 1 Introduzione Superata la bolla speculativa di fine anni novanta legata alle tecnologie Internet, i primi anni del nuovo millennio sono stati caratterizzati dal consolidamento delle innovazioni e delle tecnologie maturate nel corso degli ultimi anni che hanno dimostrato le effettive potenzialità per incrementare la produttività e fornire nuovi prodotti e servizi. In particolare, nell’ambito delle telecomunicazioni sta iniziando il processo di migrazione delle reti esistenti verso il protocollo IP; Telecom Italia è stato il primo operatore europeo ad avere spostato la quasi totalità del traffico long-distance su una rete in tecnologia IP e si sta apprestando a spostare anche il traffico locale sullo stesso protocollo IP. Quest’ultima sfida richiede l’introduzione di un nuovo protocollo sufficientemente versatile per la comunicazione tra utente e rete che consenta la fornitura di servizi multimediali avanzati. La scelta è caduta sul protocollo standard Session Initiation Protocol (SIP) per le sue caratteristiche di apertura, semplicità e flessibilità. La sostanziale apertura e semplicità del protocollo SIP pone però seri problemi relativi alla sicurezza delle comunicazioni, in particolare in relazione alla riservatezza, all’integrità ed alla disponibilità dei servizi erogati. Data la criticità dei servizi di telecomunicazione che SIP si appresta a supportare, è necessario realizzare un’architettura di sicurezza che garantisca la sostanziale immunità nei confronti dei potenziali devastanti impatti che ne potrebbero derivare. Poiché il protocollo SIP nasce e si sviluppa con le tecnologie Internet e l’informatica in generale, la funzione IT Security di IT Telecom ha manifestato la volontà di avviare uno studio strategico volto ad identificare le vulnerabilità del protocollo SIP testandole in un’architettura di riferimento, le soluzioni architetturali per le messa in sicurezza del protocollo e quelle tecnologiche necessarie per garantire la riservatezza, l’integrità e la disponibilità delle informazioni. Questa tesi si proporne di realizzare uno studio strategico sulla sicurezza del protocollo SIP, comprendente l’analisi tecnologica volta ad identificare le vulnerabilità e le minacce alle quali sono esposte le soluzioni realizzate in tecnologia SIP, l’identificazione di una architettura di riferimento per l’erogazione in sicurezza dei servizi multimediali basati su SIP, la progettazione di un SIP Application Level Gateway (SIP ALG) che garantisca le funzionalità di SIP con Firewall e Network Address Translator (NAT). 1 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Introduzione 1.1 Stato dell’arte Negli anni precedenti alla diffusione di Internet, nel panorama delle Telecomunicazioni mondiali, gli utenti e gli addetti ai lavori erano soliti ragionare su due tipi di reti distinte: una per la voce ed una per i dati. Ognuna di esse poteva a sua volta essere divisa in molte varianti, spesso tra loro incompatibili, caratterizzanti un paese o addirittura una piccola porzione di esso. Si era di fronte, quindi, ad un vasto panorama di tecnologie differenti, per pianificazione numerica, per tipo di segnalazione, per codifica audio, per tipo di quelle che le industrie di telecomunicazioni chiamavano data networks – ognuna di essa incompatibile ed impossibile da integrare con le altre in modo da formare un'unica rete globale. Le data networks generate dalle industrie di telecomunicazioni si svilupparono in diverse forme, come delle linee digitali proprietarie, X.25, ISDN, SMDS, frame relay e la rete ATM. Questo tipo di reti furono sin dal principio influenzate dall’esperienza pregressa avuta con le rete commutata a circuito per l’utenza telefonica. Il loro nome, data networks, deriva dalla proprietà di essere state progettate e sviluppate per trasportare dati che non fossero segnali vocali. Al contrario le reti telefoniche, dette appunto voice networks, sono state usate in passato e tuttora per trasportare dati e fax. Il motivo di tale promiscuità è facilmente riscontrabile nella capillare diffusione che hanno avuto negli anni. Resta comunque il fatto che tali reti hanno esaurito la loro spinta evolutiva, poiché da tempo hanno raggiunto un livello soddisfacente per il trasporto del segnale vocale per cui erano state pensate. Ovviamente entrambi i tipi di rete, data networks e voice networks, sono caratterizzati da specifici dispositivi che non possono essere utilizzati in altre reti. Tutt’oggi la maggior parte della telefonia fissa viene fatta sulla vecchia rete PSTN (Public Switched Telephone Network). Questo significa che una singola chiamata occupa una connessione tra i due utenti finali e tale connessione non può essere utilizzata fin quando la comunicazione non termina. La differenza con la telefonia via Internet, anche conosciuta come Voice over IP (VoIP), consiste proprio nel fatto che utilizzando una rete commutata a pacchetto è possibile comunicare contemporaneamente con più utenti senza la necessità di riservare una connessione. Ciò avviene grazie alla digitalizzazione del segnale vocale, registrato attraverso un’interfaccia audio del computer, segnale che viene successivamente incapsulato in pacchetti che vengono spediti ai rispettivi destinatari attraverso il protocollo IP. Dall’altro lato, i pacchetti vengono decapsulati e replicano il messaggio originale dall’interfaccia audio di uscita. Inoltre, altri flussi multimediali, quali video e applicazioni condivise, possono facilmente essere scambiati tra utenti senza che siano necessari grandi cambiamenti. Ma quando Internet si è diffusa, sebbene si sia rapidamente affermata come rete leader nella diffusione e scambio di dati, nelle transazioni commerciali e distribuzione audio-video, l’uso della 2 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Introduzione voce su tale rete ha avuto difficoltà a svilupparsi. Questo fatto si è verificato per l’iniziale incapacità di replicare su Internet la stessa qualità del segnale vocale che si riscontrava se trasportato su rete telefonica. La Qualità del Servizio (QoS) risultava infatti scadente a causa dell’impossibilità di garantire l’effettivo arrivo dei pacchetti entro certi limiti di ritardo e perdita. La rapida diffusione della banda larga e l’introduzione di protocolli che garantiscano una Qualità del Servizio soddisfacente per le reti IP hanno permesso di superare tali ostacoli. A favorire la diffusione del VoIP ci sono inoltre motivazioni di carattere economico: ¾ Riduzione dei costi ¾ Standard open source ¾ Integrazione tra voice network e data network Molti dei servizi e applicazioni multimediali, tra i quali la voce, che hanno luogo su Internet hanno la necessità di creare e gestire una sessione multimediale. Per sessione multimediale si intende un’associazione tra due o anche più partecipanti per lo scambio di dati di qualsiasi tipo: dati, voce, video, testo… Il Session Initiation Protocol (SIP) è una specifica dell’Internet Engineering Task Force (IETF), l’organizzazione che si occupa della standardizzazione dei protocolli internet. Tale protocollo è stato sviluppato con lo scopo di creare, modificare e terminare sessioni multimediali su reti IP. Le caratteristiche di semplicità e scalabilità gli hanno permesso di guadagnarsi rapidamente il ruolo di protocollo per la telefonia su Internet (VoIP). 1.2 Struttura della tesi Durante lo sviluppo del protocollo SIP, la maggior parte dell’attenzione è stata rivolta verso la possibilità di fornire uno strumento flessibile e scalabile, in grado di instaurare sessioni multimediali tra diversi utenti contemporaneamente. A fronte di queste necessità, la sicurezza non è stata sin dal principio una delle tematiche di maggior interesse. In seguito alla rapida diffusione che tale protocollo ha avuto, i requisiti di sicurezza hanno assunto una rilevanza centrale e rappresentano oggi un importante argomento di discussione. In quest’ottica, l’attività della tesi ha avuto più di un obiettivo: a) Comprendere ed analizzare i protocolli SIP ed RTP, in modo tale da individuare le tematiche di sicurezza ad essi legate b) Approfondire tali tematiche in una più ampia visione, quale la rete IP, studiando e comprendendo i meccanismi che possono portare ad un attacco informatico 3 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Introduzione c) Individuare, in base alle conoscenze ottenute dagli studi dei passi precedenti, le vulnerabilità insite in tali protocolli (SIP ed RTP) e testarle (solamente SIP) attraverso un’implementazione reale d) Proporre una soluzione a tali vulnerabilità, attraverso un nodo di rete SIP ALG, che possa evitare attacchi informatici in ambiente VoIP e) Definire dal punto di vista formale le modifiche NAT a livello applicativo e le politiche di sicurezza che il SIP ALG deve apportare all’architettura La tesi è quindi strutturata come segue. Il Capitolo 2 contiene una breve descrizione dell’architettura di una rete Voice over IP, delle funzionalità e dei messaggi del protocollo SIP ed un accenno al ruolo dei protocolli Session Description Protocol (SDP) e del Real-Time Transfer Protocol (RTP). Nel Capitolo 3 si descrivono le minacce e gli attacchi che possono essere portati ad una rete Voice over IP in cui è utilizzato SIP come protocollo di segnalazione e RTP come protocollo di trasporto del flusso multimediale. Il Capitolo 4 investiga sulle vulnerabilità proprie dei due protocolli SIP ed RTP, dimostrandole per il protocollo SIP attraverso un’attività sperimentale. Il Capitolo 5 descrive quali problemi si incontrano nella messa in sicurezza di un’architettura VoIP attraverso i classici strumenti Firewall e NAT. Nel Capitolo 6 viene proposta la soluzione alle vulnerabilità descritte nel Capitolo 4 e ai problemi riscontrati nel Capitolo precedente attraverso la progettazione di un nodo di rete, un SIP ALG, che introduca delle politiche di sicurezza e che permetta il funzionamento dell’architettura VoIP in presenza di Firewall e NAT. Tali soluzioni sono state definite attraverso il linguaggio formale orientato agli oggetti Specification and Description Language (SDL) definito dall’ITU-T (International Telecommunications Union-Telecommunications Standardization Sector). 4 2 Visione d’insieme del Voice over IP 2.1 Voice over IP (VoIP) La trasmissione della voce in reti IP commutate a pacchetto, detta Voice over IP (VoIP), è tra le più importanti realtà che stanno emergendo nel mondo delle telecomunicazioni. Analogamente a molte altre nuove tecnologie, il VoIP introduce, a fronte di bassi costi e grande flessibilità, anche rischi e vulnerabilità. La visione di una rete pronta per essere in grado di trasportare la voce senza alcun accorgimento aggiuntivo è un errore che gli amministratori di rete non devono assolutamente commettere. Infatti, una delle maggiori fonti di confusione è la naturale assunzione che, poiché la voce viaggia in pacchetti come gli altri dati, allora le architetture di rete già esistenti sono sufficienti a trasportare il traffico VoIP. Sfortunatamente, il VoIP introduce un notevole numero di complicanze alle esistenti tecnologie di rete e tra esse hanno gran rilievo le questioni che riguardano la sicurezza e la qualità del servizio (Quality of Service – QoS). La QoS è di fondamentale importanza per l’operatività di una rete VoIP che soddisfi le esigenze degli utenti. Ad aggravare la situazione, va inoltre sottolineato, che il raggiungimento di alti livelli di sicurezza può causare il deterioramento marcato dei livelli di QoS. Infatti, a causa della natura del VoIP, con notevoli vincoli temporali, e della sua bassa tolleranza ai disturbi e alla perdita di pacchetti, molte delle misure volte a garantire la sicurezza e la riservatezza delle comunicazioni vocali rende le stesse comunicazioni poco comprensibili. 2.1.1 Architettura del VoIP In un’architettura VoIP prendono parte tre diverse classi di protocolli: ¾ Protocolli di segnalazione Questi protocolli devono svolgere cinque funzioni: localizzazione di un utente – è la possibilità di localizzare un altro utente con il quale si desidera iniziare una comunicazione – instaurazione di una sessione – è la volontà, da parte del chiamato, di accettare, rifiutare o re-indirizzare la chiamata ad un’altra locazione – negoziazione delle impostazioni – è la possibilità delle due parti coinvolte nella comunicazione di negoziare dei parametri da usare durante la sessione – modifica della sessione – è la possibilità di modificare i parametri suddetti durante una comunicazione – terminazione della sessione – è la possibilità di abbattere la comunicazione. Il Session Initiation Protocol (SIP) è un protocollo di segnalazione sviluppato dall’IETF. 5 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP ¾ Visione d’insieme del Voice over IP Protocolli di trasporto del flusso multimediale Questo tipo di protocolli ha il compito di trasportare da utente ad utente i campioni di voce. I protocolli di trasporto dei media utilizzano dei codificatori per digitalizzare la voce e per comprimerla in piccoli campioni che vengono incapsulati in un protocollo di trasporto (UDP o TCP) e spediti attraverso una rete IP. Il Real-Time Transfer Protocol (RTP) è un protocollo di trasporto di media sviluppato dall’IETF e adottato anche dall’ITU-T. ¾ Protocolli di supporto Quest’ultimo tipo di protocolli si occupano di tutti quei compiti che non riguardano direttamente la gestione di una sessione o del trasporto dell’informazione. Ad esempio sono quelli che garantiscono una certa qualità di servizio, come RSVP, IntServ, DiffServ, MPLS… Altri come il protocollo Domain Naming System (DNS) che permettono la traduzione degli indirizzi logici in indirizzi fisici, garantendo la raggiungibilità di utenti appartenenti a domini differenti… Un’architettura VoIP che garantisca interoperabilità con la tradizionale rete telefonica PSTN può essere del tipo in figura. Signaling Gateway Controller SS7 Signaling Network Media Gateway Controller PSTN PSTN VoIP Gateway IP Backbone Network VoIP Gateway VoIP Gateway Telephone IP Phone Telephone IP Phone Telephone IP Phone Figura 2.1 - Architettura del Voice over IP 6 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP 2.2 Session Initiation Protocol (SIP) Nella vastità di applicazioni che possono essere utilizzate su Internet, una parte di esse richiede l’instaurazione e la gestione di una sessione. Per sessione si intende un’associazione tra due o anche più partecipanti finalizzata allo scambio di dati di qualsiasi tipo: dati, voce, video, testo… L’instaurazione di tale sessione è una pratica non semplice giacché viene resa difficile dalla differente gestione che gli utenti possono avere del flusso informativo da scambiare, ad esempio possono utilizzare diverse codifiche del segnale vocale, e dalla mobilità degli utenti stessi. Per questo motivo SIP [1] è stato progettato in modo da fornire una localizzazione degli utenti che partecipano ad una sessione ed in seguito garantire una negoziazione dei parametri del flusso multimediale da scambiare. SIP quindi può essere visto come un potente strumento capace di creare, modificare e terminare sessioni, indipendentemente dal tipo di protocollo di trasporto utilizzato e senza alcuna dipendenza sulla natura della sessione che viene stabilita. SIP è stato collocato tra i protocolli di strato applicativo ossia nel settimo livello della pila ISO-OSI. Permette di invitare partecipanti a sessioni già instaurate, supporta servizi di redirezione garantendo la mobilità dell’utente, consente l’utilizzo di un singolo identificatore per l’utente in tutta la rete. Tale protocollo si basa su cinque aspetti: ¾ Localizzazione dell’utente: individuazione del sistema terminale da usare per la comunicazione ¾ Disponibilità dell’utente: determinazione della volontà del chiamato a partecipare alla comunicazione ¾ Capacità dell’utente: determinazione dei parametri del flusso multimediale ¾ Instaurazione della sessione: negoziazione dei parametri tra i partecipanti alla sessione ¾ Gestione della sessione: trasferimento e terminazione della sessione, modifica dei parametri della sessione e chiamate di alcuni servizi applicativi Ovviamente SIP da solo non è sufficiente per una comunicazioni tra utenti, accanto ad esso devono essere infatti instaurati altri protocolli per il trasporto del flusso multimediale e per l’interoperabilità con altre tipologie di reti. Tra i primi è necessario citare il Real-Time Transport Protocol (RTP), che consente di trasportare dati in tempo reale e fornisce dei riscontri sulla qualità del servizio fornito e il Session Description Protocol (SDP), per la descrizione delle sessioni multimediali. Tra i secondi appare doveroso citare il Media Gateway Control Protocol (MEGACO), che consente di controllare i gateway che interconnettono la rete SIP con quella PSTN. SIP quindi non fornisce servizi, piuttosto fornisce delle primitive che possono essere utilizzate per implementare differenti servizi. Il SIP è un protocollo indipendente dallo strato di trasporto, può utilizzare sia lo User Datagram Protocol (UDP) che Transmission Control Protocol (TCP) nonché lo Stream Control Transport 7 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP Protocol (SCTP). Nel caso in cui si utilizzi un protocollo inaffidabile come UDP, SIP implementa un proprio meccanismo di ritrasmissione per assicurare l’affidabilità. Media Transport Signaling Physical Link Network Transport H.323 Media Encapsulation (H.261, MPEG) Quality of Service SIP RTSP RSVP TCP RTCP RTP UDP IPv4 PPP AAL 3/4 Sonet IPv6 AAL 5 ATM PPP Ethernet V.34 Figura 2.2 - Stack del Voice over IP Infine SIP opera sia con IPv4 che con IPv6. 2.2.1 Architettura del SIP Come è stato già sottolineato, SIP ricalca in modo particolare la struttura del protocollo HTTP [2], e come esso adotta un modello client-server. Di conseguenza tra le figure che partecipano ad una sessione SIP ci sono degli apparati che hanno la funzione di client ed altri che hanno la funzioni di server, tra di essi viene seguito un modello transazionale di richiesta e risposta. Ogni transazione consiste infatti di una richiesta generata dal client che invoca un particolare metodo, o funzione, sul server, e di almeno una risposta generata da tale server. Una tipica rete di comunicazione che utilizza SIP come protocollo di segnalazione contiene quattro tipi di entità: User Agent (UA), Proxy Server, Redirect Server e Registrar Server. ¾ User Agent: rappresenta un sistema terminale, hardware o software. Essi generano le richieste SIP per stabilire sessioni multimediali e spediscono e ricevono flussi multimediali. Lo User Agent Client (UAC) è la parte dello UA che genera le richieste, mentre uno User Agent Server (UAS) è l’altra parte dello UA che genera le risposte alle richieste ricevute. Durante una sessione, entrambe le parti vengono utilizzate, al contrario di quanto accade per una classica architettura client/server. ¾ Proxy Server: è l’elemento della rete che instrada le richieste verso gli UAS e le risposte verso gli UAC. Una richiesta può attraversare numerosi Proxy Server prima di giungere a destinazione. Ognuno di essi, quando coinvolto nella sessione, prende decisioni sull’instradamento, modificando le richieste prima di inoltrarle verso l’entità successiva. Le 8 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP risposte a tali richieste viaggeranno in verso opposto, attraversando le stesse entità coinvolte nella direzione delle richieste. Le azioni principali di un Proxy Server in una rete SIP sono processare le richieste, autenticare gli utenti, risolvere gli indirizzi, cancellare le chiamate pendenti, rilevare e abbattere dei loop ed infine biforcare le richieste. Tali compiti vengono assolti con un preciso vincolo progettuale: i Proxy Server devono agire in modo da essere il più possibile invisibile agli occhi degli UA. Esistono due classi di questi server: • Stateless Proxy • Stateful Proxy I primi, dopo aver controllato la correttezza dell’intestazione, inoltrano semplicemente i messaggi. Questo significa che una volta che il messaggio è stato inoltrato, il Proxy Server Stateless non conserva alcuna informazione riguardo ad esso. Questo tipo di server quindi permette di costruire una rete altamente performante e scalabile, a discapito di una scarsa conoscenza dello stato della rete e di un’impossibilità di ritrasmettere messaggi andati persi. Al contrario i Proxy Server Stateful sono in grado di memorizzare informazioni sui messaggi che hanno processato, in modo tale da rendersi conto di un’eventuale perdita degli stesso o di ritrasmissioni inutili da parte degli UAC. La conservazione dello stato della sessione implica, però, la possibilità di gestire un numero limitato di transazioni vista la disponibilità limitata di memoria e un maggiore tempo di attraversamento del dispositivo a causa del tempo di processamento dei messaggi. ¾ Redirect Server: è utilizzato in architetture in cui può essere utile ridurre il carico di lavoro dei Server responsabili dell’instradamento delle richieste degli UAC e migliorare la robustezza dei cammini di segnalazione sfruttando il reinstradamento delle richieste. Questo reinstradamento, ottenuto proprio grazie ai Redirect Server, permette ai server di consegnare le informazioni di routing di una richiesta direttamente a chi l’ha originata, evitando in tal modo di prendere parte del percorso che si instaura tra UAC e UAS. Quando lo UAC riceve un messaggio di redirezione, estrae da esso le informazioni necessarie a creare la nuova richiesta. Il propagarsi di tali informazioni dal nucleo verso la periferia consente alla rete di essere maggiormente scalabile rispetto ad una situazione in cui l’instradamento è compito esclusivo dei Proxy Server. ¾ Registrar Server: è un server che accetta solamente un tipo particolare di richieste, quelle che hanno lo scopo di aggiornare il database di localizzazione a cui il dominio è associato con le informazioni di localizzazione fornite dagli utenti. Il database di localizzazione, detto Location Server, può essere interrogato anche dai Proxy Server e dai Redirect Server per ottenere le informazioni di localizzazione di un utente. Bisogna sottolineare che il Location Server non è un componente dell’architettura SIP. 9 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP 2.2.2 Messaggi SIP SIP è un protocollo basato su uno schema transazionale a richiesta e risposta, ciò significa che i messaggi SIP sono o richieste da uno UAC ad un UAS o una risposta da un UAS ad un UAC. Diversamente però da altri protocolli di segnalazione, come H.323 [3], SIP è un protocollo testuale e in particolare il formato ricorda molto quello dell’HTTP. La sintassi del protocollo è specificata attraverso la grammatica “Augmented Backus-Naur Form” (ABNF) [4]. Sia le richieste che le risposte consistono di tre parti: ¾ una start-line, con cui inizia ogni messaggio SIP ¾ un blocco contenente uno o più campi dell’intestazione (header) ¾ opzionalmente il corpo del messaggio (message-body) Per indicare la conclusione del blocco dei campi header si utilizza una linea bianca (blank-line), che deve essere presente anche in assenza del corpo del messaggio. La start-line, ogni header del messaggio e la blank-line devono essere terminati con una sequenza di carraige-return line-feed (CRLF). Start-Line La start-line può essere una Request-Line oppure una Status-Line. Nel primo caso si tratta di un messaggio di richiesta, e contiene il nome della richiesta (anche detta metodo), la Request-URI e la versione del protocollo in uso, separati da un singolo spazio: Request-Line = Method SP Request-URI SP SIP-Version CRLF I messaggi SIP di risposta hanno una Status-line per start-line. Essa contiene la versione del protocollo, un valore numerico detto Status-Code ed una frase testuale associata allo Status-Code: Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF Il significato dei vari campi è: ¾ Method: il metodo è la funzione primaria invocata da una richiesta su di un server. L’ultima specifica del SIP elenca sei metodi: • REGISTER, per informare un Registar Server delle informazioni necessarie ad aggiornare il Location Server • INVITE, per instaurare una sessione multimediale tra User Agent o per cambiare i parametri di una sessione già instaurata • ACK, per confermare la ricezione di una risposta definitiva (si veda dopo) ad una richiesta di INVITE • CANCEL, per terminare sessioni pendenti e quindi ancora non instaurate • BYE, per terminare una sessione multimediale precedentemente instaurata 10 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP • ¾ Visione d’insieme del Voice over IP OPTIONS, per ricevere dai server informazioni sulla loro capacità e disponibilità Request-URI: è una SIP URI (si veda dopo) o un URI di tipo generale, come indicato in [5]. Essa indica l’utente o il servizio a cui la richiesta è stata indirizzata. Gli indirizzi SIP sono URL gerarchici costituiti dal numero di telefono dell’utente o l’host name (ad esempio sip:[email protected]). Per la loro somiglianza, le SIP URL sono facilmente confondibili con gli indirizzi email. ¾ Status-Code: è un valore numerico di tre cifre che indica il risultato di un tentativo di comprendere e soddisfare una richiesta. La prima cifra indica la classe della risposta, che per SIP versione 2.0 sono sei. Le rimanenti due cifre indicano il particolare tipo di risposta appartenente a quella classe. Una risposta appartenente alla prima classe è detta provvisoria (quindi di tipo 1xx), mentre una risposta appartenente alle altre cinque classi sono dette definitive (quindi di tipo 2xx, 3xx, 4xx, 5xx e 6xx): Informational Success 200 OK 100 Trying 180 Ringing 181 Call Forwarded 182 Queued 183 Session Progress Redirection Request Failure 300 Multiple Choices 301 Moved Perm. 302 Moved Temp. 380 Alternative Serv. 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Bad Method 486 Busy Here 500 Server Error 501 Not Implemented 503 Unaivalable 504 Timeout 600 Busy Everywhere 603 Decline 604 Doesn’t Exist 606 Not Acceptable Server Failure Global Failure Figura 2.3 - Parte delle risposte SIP • 1xx – Provisional: le risposte di questa classe sono utilizzate per indicare che la richiesta è stata ricevuta e che i server contattati la stanno elaborando • 2xx – Success: le risposte di questa classe sono utilizzate per indicare che la richiesta è stata ricevuta, compresa ed elaborata con successo • 3xx – Redirection: le risposte di questa classe sono utilizzate per fornire informazioni sulla nuova localizzazione dell’utente o sui servizi alternativi che potrebbero essere in grado di soddisfare la richiesta. Sono tipicamente utilizzate dai Redirect Server • 4xx – Client Error: le risposte di questa classe sono utilizzate per indicare l’impossibilità da parte del server di soddisfare una richiesta, seppur valida. La stessa richiesta potrebbe essere soddisfatta da un altro server • 5xx – Global Failure: le risposte di questa classe sono utilizzate per indicare l’impossibilità di soddisfare la richiesta da parte di alcun server 11 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP ¾ Visione d’insieme del Voice over IP Reason-Phrase: fornisce una breve descrizione testuale dello Status-Code, è di uso semplicemente dell’utente e non entra a far parte dell’elaborazione dello stack SIP. ¾ SIP-Version: è la versione del protocollo in uso. La più recente è la “SIP/2.0”. Header Gli header sono utilizzati per trasportare gli attributi dei messaggi e per modificare il significato dei messaggi stessi. In questa sezione vengono descritti solo alcuni dei SIP header inclusi nell’ultima specifica del protocollo, limitatamente alla pertinenza sull’argomento trattato. In generale si distinguono quattro tipi di header: general-header, request-header, response-header e entità- header. I general-header sono di utilizzo generale, e per questo vengono usati sia nelle richieste che nelle risposte. A questa classe appartengono: • To: indica il destinatario ‘logico’ della richiesta, che può o non può essere quello finale. Può contenere un SIP URI o un URI di tipo generale; • From: indica l’origine ‘logica’ della richiesta. Può contenere un SIP URI o un URI di tipo generale; • Call-ID: identifica univocamente e globalmente una sessione. E’ una sequenza alfanumerica randomica a cui viene aggiunto il dominio dell’utente, ha quindi la forma “local-id@host “; • Cseq: è costituito da un numero di sequenza e dal metodo della richiesta. Il numero di sequenza serve a distinguere eventuali ritrasmissioni e ad associare le risposte alle richieste; • Max-Forwards: indica, attraverso un intero, il numero massimo di nodi SIP attraverso cui una richiesta può transitare prima di giungere a destinazione. Quando i nodi processano le richieste decrementano di uno questo valore. Se dovesse raggiungere il valore zero, la richiesta verrebbe scartata e verrebbe generata una risposta di errore 483 (Too Many Hops). • Via: questo campo è utilizzato per conservare il percorso che una richiesta ha effettuato dalla sorgente alla destinazione e il percorso che una risposta ha effettuato dalla destinazione alla sorgente. Ogni UA che genera una richiesta immette il proprio indirizzo nel campo Via, quando il Proxy Server inoltra tale richiesta aggiunge anch’esso il proprio indirizzo in cima alla lista degli indirizzi del campo Via. Questo metodo permette l’instradamento delle risposte verso il mittente delle richieste. I request-header sono intestazioni che si applicano unicamente alle richieste, con lo scopo di fornire al server informazioni addizionali. Di questa classe fanno parte Authorization e Proxy- Authorization. Anche l’header Route appartiene a questa classe ed ha lo scopo di forzare l’instradamento di una richiesta attraverso una serie di nodi SIP. I response-header, al contrario, si applicano solamente alle risposte. Alcuni esempi di intestazioni di questa classe sono il WWW- Authenticate e Proxy-Authenticate. Infine gli entity-header sono intestazioni che permettono di 12 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP fornire informazioni riguardanti il corpo del messaggio. A tale classe appartengono Content-Length e Content-Type. Message Body Sia le richieste che le risposte possono contenere un corpo del messaggio dopo l’intestazione. Tale corpo è descritto attraverso i l’header Content-Type, che permette di specificare tramite i tipi MIME [6] la tipologia del contentuto. L’header Content-Length specifica invece la lunghezza in bytes del corpo del messaggio. Questa lunghezza è necessaria per individuare la fine di ogni messaggio SIP in un flusso di dati nel caso in cui venga utilizzato un protocollo stream-oriented, come TCP o SCTP. Generalmente nel corpo del messaggio è contenuta una descrizione dei parametri della sessione multimediale che si vuole instaurare o che si vuole modificare. Tali parametri vengono scambiati tra UA attraverso il protocollo SDP. 2.2.3 Funzionalità del SIP Nei prossimi paragrafi il protocollo SIP verrà descritto in base alle funzionalità che esso fornisce all’utente: risoluzione degli indirizzi, funzioni legate alle chiamate (inizializzazione della sessione, modificazione di una sessione, cancellazione e abbattimento di una sessione ed infine controllo della qualità di servizio) e funzioni non legate alle chiamate (mobilità, trasporto di messaggistica, notifica di eventi, autenticazione ed estensibilità a sviluppi futuri). Di tutti questi aspetti che caratterizzano il SIP vengono di seguito descritti solamente quelli che interessano lo studio di tesi. 2.2.3.1 Risoluzione degli indirizzi La risoluzione degli indirizzi è una delle funzioni più importanti del protocollo SIP. Tale procedura, descritta dettagliatamente in [7], permette ad un elemento SIP che desidera spedire una richiesta di determinare a partire da un SIP URI, l’indirizzo IP, la porta e il protocollo di trasporto del nodo di rete successivo, detto next hop, che può essere un Proxy Server oppure uno User Agent. Questa traduzione da nome generico a utente finale è estremamente importante per garantire la mobilità e la portabilità dell’utente e del suo traffico. La risoluzione di indirizzi può essere effettuata sia dagli UA che dai server. Il protocollo Domain Name System (DNS) fornisce due tipi di record rilevanti per le richieste SIP: SRV e NAPTR. Alcune implementazioni utilizzano solamente record di tipo SRV [8]. ¾ SRV Record: questo tipo di record sono nella forma “_Service._Proto.Name TTL Class SRV Priorità Weight Port Target” in cui il campo Service deve essere SIP; il campo Proto è il protocollo di trasporto utilizzato dal server; Name è il nome del dominio in cui risiede il Proxy Server; TTL è il tempo di vita del 13 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP record espresso in secondi; SRV è il tipo di record; Class è sempre del valore IN; Priority indica l’ordine in cui un client interroga i diversi Proxy, ossia più il valore è basso e più il Proxy sarà utilizzato; Weight determina proporzionalmente quanto spesso un proxy viene interrogato se ve ne sono alcuni a pari Priority, quelli con i valori più bassi sono interrogati dai client più raramente; il valore di Port è 5060; Target è infine il nome simbolico del Proxy Server. Ad esempio nel caso in cui si utilizzino due Proxy Server la configurazione del DNS Server avrà i seguenti record: _sip._udp.domain.com 43200 IN SRV 0 0 5060 sipserver1.domain.com _sip._udp.domain.com 43200 IN SRV 1 0 5060 sipserver2.domain.com _sip._tcp.domain.com 43200 IN SRV 0 4 5060 sipserver1.domain.com _sip._tcp.domain.com 43200 IN SRV 0 2 5060 sipserver2.domain.com _sips._tcp.domain.com 43200 IN SRV 0 0 5060 sipserver1.domain.com _sips._tcp.domain.com 43200 IN SRV 0 0 5060 sipserver2.domain.com In questa configurazione del DNS Server una richiesta SIP su UDP sarà consegnata sempre al sipserver1 del dominio domain.com perchè il valore della priorità è minore. Se questa richiesta dovesse fallire, allora il sipserver2 riceverà la richiesta. Di conseguenza si intuisce che il ruolo del sipserver2 è quello di sopperire ad un eventuale sovraccarico del primo. Nel caso venga utilizzato TCP come protocollo di trasporto, allora le richieste che arriveranno al sipserver1 saranno il doppio di quelle che giungeranno al sipserver2 visto che il peso del primo è il doppio del secondo. Nell’ultimo caso, in cui il protocollo di trasporto è TLS su TCP i due server, sipserver1 e sipserver2, sono totalmente paritetici, visto che coincidono sia i valori di Priority che di Weight. Quando uno UA intende iniziare una sessione SIP verso sip:[email protected] manderà inizialmente una richiesta DNS SRV lookup su domain.com. Dopo la ricezione di una risposta dal server DNS, il SIP UA può mandare la propria richiesta verso sip:[email protected]. ¾ NAPTR Record: forniscono un meccanismo per il dominio destinazione dei messaggi che specifica quale protocollo di trasporto preferisce utilizzare. Questo tipo di record sono nella forma: “domain-name TTL Class NAPTR Order Preference Flags Service Regexp Target” in cui il campo domain-name indica il nome del dominio che deve essere contattato dalla richiesta SIP; il TTL indica il tempo di vita del record nel DNS Server; il campo Class è sempre IN; NAPTR descrive il tipo di record; il campo Order specifica l’ordine in cui i record sono letti, se viene trovata una corrispondenza di protocollo di trasporto tra chiamante e chiamato allora deve essere utilizzato quel protocollo e gli altri record devono essere scartati; il campo Preference viene utilizzato nel caso in cui il valore di Order coincida tra due o più record, valori più bassi hanno priorità maggiore; il valore del Flag è specifico dell’applicazione a cui si riferisce, per SIP vale s; il valore di Service specifica il protocollo di trasporto, i valori sono SIP+D2U per SIP su UDP, SIP+D2T per SIP su TCP, SIP+D2S per SIP su SCTP e SIPS+D2T 14 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP per Secure SIP su TLS su TCP; il campo Regexp e quello Target sono usati per indicare il server da contattare per inoltrare la richiesta, però uno solo dei due va specificato. I record che si dovrebbero usare per completare l’esempio precedente sono: domain.com IN NAPTR 0 0 “s” “SIPS+D2T” “” _sips._tcp.domain.com domain.com IN NAPTR 1 0 “s” “SIP+D2T” “” _sip._tcp.domain.com domain.com IN NAPTR 2 0 “s” “SIP+D2U” “” _sip._udp.domain.com Come si può vedere la precedenza è data al trasporto su TLS su TCP, poi solo su TCP e infine su UDP. In pratica le implementazioni di BIND sono spesso sviluppate in modo da fornire come risposta i record SRV e quelli A, allo scopo di non dover spedire DNS lookup addizionali. Il fatto di spedire molte richieste DNS infatti rappresenta un problema, visto che l’instaurazione di una sessione SIP è un processo che richiede vincoli temporali molto stringenti. I passi che devono essere intrapresi da un SIP UAC per spedire una richiesta ad un SIP UAS sono al massimo tre: 1) spedire una richiesta DNS NAPTR al dominio specificato nella Request-URI. Se come risposta ottiene dei record validi allora in base ad essi decide il protocollo di trasporto da utilizzare. 2) se non ottiene alcun record NAPTR in risposta allora deve spedire una richiesta DNS SRV in base al protocollo di trasporto che preferisce. Se ottiene una risposta, allora la richiesta viene inviata attraverso quel protocollo di trasporto e verso il server specificato nella risposta. 3) se non vengono trovati record anche nel caso di DNS SRV allora viene spedita una richiesta di tipo DNS A. Se come risposta ottiene un indirizzo IP valido, la richiesta viene spedita verso esso attraverso il protocollo UDP. 2.2.3.2 Funzioni legate alle chiamate La maggior parte delle funzioni di SIP sono coinvolte nella fase di instaurazione di una sessione. Di esse fanno parte ad esempio l’instaurazione stessa di una sessione ex-novo, l’abbattimento e la cancellazione di una sessione e la modifica di una sessione. Esempi di queste funzioni sono descritte dettagliatamente in [9]. 2.2.3.3 Funzioni non legate alle chiamate Alcune funzioni SIP non si legano direttamente all’instaurazione di una sessione. Queste funzioni possono essere eseguite infatti al di fuori di una sessione SIP. ¾ Mobilità: La possibilità di registrare l’URL su cui ricevere le proprie chiamate è una funzione di SIP che permette di implementare la mobilità, aspetto che rende SIP molto appetibile rispetto ad altri protocolli di segnalazione. E’ anche questo supporto della mobilità che ha portato 15 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP all’utilizzo del protocollo in molte delle nuove applicazioni ed è stato accettato per essere applicato come protocollo di segnalazione per le reti mobili di terza generazione nell’IP Multimedia Subsystem (IMS). La registrazione permette di creare nel suddetto Location Server un’associazione (binding) tra il SIP URI pubblico (Address-of-Record, AOR) di un utente e uno o più indirizzi dove l’utente può essere disponibile. Gli indirizzi tipicamente sono SIP URI, ma possono anche essere usati altri schemi URI, come un tel URL o mailto URL. Chiaramente ha senso registrare un AOR nel Location Server di un dominio se le richieste per quell’AOR saranno instradate verso quel dominio. La registrazione crea quindi binding tra AOR e Contact Address in un Location Server che gestisce un particolare dominio. Perciò, quando un Proxy Server di quel dominio riceve una richiesta in cui la Request-URI coincide con l’AOR, il Proxy inoltra la richiesta al Contact Address registrato per quell’AOR. Una volta che un client ha generato un binding all’interno di un Registrar Server, può generare ulteriori richieste di tipo REGISTER contenenti nuovi binding o modifiche a quelle esistenti. La risposta del Registrar Server con un messaggio di tipo 2XX conterrà nel campo Contact dell’intestazione una lista completa dei binding che sono registrati presso quel Server per quell’address-of-record. Inoltre, quando un client genera delle richiesta REGISTER, di solito indica un intervallo di validità della binding che crea all’interno del Registrar Server. Se il valore dell’intervallo non è indicato dal client, sarà il server, secondo le proprie politiche locali, a decidere autonomamente la cancellazione del binding all’interno della propria memoria. Ogni UA è responsabile dell’aggiornamento dei propri binding da esso creati. Un UA non dovrebbe infatti, secondo [1], aggiornare l’intervallo temporale di cancellazione di binding creati da altri UA. Le registrazioni vengono cancellate dal Registrar Server quando l’intervallo di validità scade, ma possono anche essere esplicitamente cancellate dall’utente. Nel secondo caso l’utente infatti mandando una richiesta REGISTER con un intervallo di validità nullo, cancella tutti i binding associati al proprio address-of-record [10]. 2.3 Session Description Protocol (SDP) Il Session Description protocol (SDP), definito da [11], è stato sviluppato dal gruppo di lavoro MMUSIC dell’IETF. E’ il protocollo utilizzato per descrivere i parametri delle sessioni multimediali durante le fase di three-way-handshake per instaurare una sessione. In questa fase il messaggio SDP viene incapsulato in un messaggio SIP, che nel campo Content-Type dell’intestazione contiene il valore application/sdp. Le informazioni trasportate concernono: ¾ il nome e lo scopo della sessione 16 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP ¾ la durata della sessione ¾ il modo in cui utilizzare la banda disponibile ¾ il tipo di dati trasmessi (audio, video, …) ¾ il protocollo di trasporto adottato (RTP/UDP/IP, H.320, …) ¾ il formato dei dati trasmesso (H.261 video, Mpeg video, …) ¾ Multicast Address e Transport Port, indirizzo e porta di destinazione del flusso dati, nel caso di una sessione multicast ¾ Remote Address e Transport Port, indirizzo e porta di destinazione del flusso dati, nel caso di una sessione unicast 2.4 Real-Time Transfer Protocol (RTP) Il Real-Time Transfer Protocol [12] è stato sviluppato per consentire il trasporto in tempo reale di pacchetti che contenessero voce, video o altre informazioni su una rete IP. RTP non fornisce alcuna garanzia di qualità del servizio su una rete IP, i pacchetti RTP infatti vengono trattati in modo indistinto da tutti gli altri pacchetti che viaggiano nella rete. Comunque RTP rileva di alcune delle debolezze introdotte dalla natura delle reti IP, come: ¾ perdita di pacchetti (packet loss) ¾ variabilità del ritardo di trasporto ¾ arrivo dei pacchetti fuori sequenza ¾ instradamento asimmetrico Dallo stack dei protocolli VoIP si può notare come RTP sia un protocollo di livello applicativo che utilizza UDP come protocollo di trasporto. RTP non è codificato in testo come SIP, ma è orientato ai bit, come UDP e IP del resto. In figura è rappresentata l’intestazione di un pacchetto della versione due del protocollo RTP. V P X CC M PT Sequence Number Timestamp SSRC CSRC Figura 2.4 - Intestazione di RTP 17 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP RTP è stato progettato per essere il più generale possibile, molti dei campi dell’intestazione sono solo vagamente descritti nello standard mentre i dettagli sono lasciati alle diverse implementazioni. I dodici ottetti dell’intestazioni sono divisi in: ¾ Version (V): questi due bit sono impostati a 2, la versione corrente di RTP ¾ Padding (P): se questo bit è settato, allora c’è del padding (bit di riempimento) alla fine del pacchetto per renderlo di dimensione fissa ¾ Extension (X): se il bit è settato, c’è un’estensione addizionale che segue l’intestazione (portando a 14 gli ottetti totali dell’header). Le estensioni sono definite per particolari payload ¾ CSRC count (CC): questo campo di 4 bit contiene il numero del content source identifiers (CSRC) che segue l’intestazione. Questo campo è usato solamente dai mixers che da diversi flussi RTP ne creano uno singolo ¾ Marker (M): questo singolo bit è usato per indicare l’inizio di un nuovo frame video, o l’inizio di un dialogo dopo dei momenti di silenzio ¾ Payload Type (PT): è un campo di 7 bit che definisce il codificatore (codec) utilizzato. Il valore in questo campo deve coincidere con quello specificato nel corpo del messaggio SDP ¾ Sequence Number: questo campo di 16 bit è incrementato per ogni pacchetto RTP spedito ed è usato per rilevare pacchetti mancanti o fuori sequenza ¾ Timestamp: è un campo di 32 bit che indica in termini relativi il tempo in cui il payload è stato digitalizzato. Questo campo permette al ricevitore di eliminare il jitter e riprodurre il contenuto dei pacchetti con l’intervallo corretto assumendo che ci sia un buffer sufficiente ¾ Synchronization Source Identifier (SSRCI): è un campo di 32 bit che identifica la sorgente dei pacchetti RTP. All’inizio della sessione, ogni partecipante sceglie un SSRC randomico. Se due partecipanti casualmente scegliessero lo stesso, devono cambiarlo per continuare la trasmissione ¾ Contributing Source Identifier (CSRC): questo campo è presente solo se il pacchetto RTP è stato generato da un mixer. Bisogna notare che RTP attraverso il Sequence Number consente la rilevazione di un fuori sequenza o della perdita di pacchetti, ma lascia la risoluzione di tali problemi ai codec utilizzati. Ad esempio, un codec video può compensare la perdita di pacchetti ripetendo lo stesso frame, mentre un codec audio può riprodurre un rumore di fondo. La variabilità del ritardo o il jitter invece possono essere rilevati attraverso il campo Timestamp. Infatti un codec che ha un flusso di bit continuo nel tempo, come il PCM, avrà un incremento lineare nel tempo del Timestamp. In una sessione multimediale instaurata attraverso SIP, le informazioni necessarie sulla scelta dei codec sono trasportate nel corpo di un messaggio SDP. In alcuni casi può essere necessario cambiare i codec durante una sessione RTP. Poiché il pacchetto RTP contiene il campo Payload Type nell’intestazione teoricamente è possibile cambiare al volo i codec senza alcuna informazione 18 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Visione d’insieme del Voice over IP di segnalazione tra i due partecipanti alla sessione. Ma da un punto di vista pratico, cambiare i codec senza alcuna segnalazione potrebbe portare alla scelta di un codec che uno dei due partecipanti non supporta e ciò causerebbe il fallimento della chiamata. Appare evidente quindi la funzione del messaggio re-INVITE di SIP: permettere di cambiare i parametri della sessione senza che i partecipanti ne risentano. 19 3 Aspetti di sicurezza nel Voice over IP La sicurezza e la riservatezza sono requisiti obbligatori in una rete di fonia. Sebbene non sia perfetta, con gli anni la tradizionale rete telefonica PSTN ha raggiunto un soddisfacente grado di sicurezza. Dall’altra parte, il Voice over IP (VoIP), che potrebbe rappresentare il nucleo centrale dell’infrastruttura di rete di fonia nel prossimo futuro, introduce vulnerabilità e problematiche di sicurezza che la vecchia rete telefonica non aveva. Quando si progetta una rete VoIP si devono tenere in considerazione differenti parametri, oltre alla sicurezza e alla riservatezza. Di essi fanno parte: Qualità della voce – senza un’accettabile qualità della voce la telefonia attraverso IP non può essere adottata. La qualità della voce in VoIP è funzione di diversi fattori come la latenza, il ritardo, il jitter, la perdita di pacchetti e altri… Con la tradizionale rete telefonica alcuni di questi aspetti non rappresentano un problema data l’architettura commutata a circuito. Qualità del servizio – quando un utente vuole effettuare una chiamata la rete dovrebbe riservare per essa un’appropriata larghezza di banda. Se dovesse accadere che nel contempo si verifica il trasferimento di una larga quantità di dati, la priorità deve essere data al traffico voce rispetto a quello dati per prevenire l’accodamento, la latenza e la perdita di pacchetti. Anche se la rete dovesse congestionarsi, il traffico voce non dovrebbe risentirne. Disponibilità – deve essere garantita agli stessi livelli di quella della rete tradizionale. Per esempio, i carrier devono garantire la funzionalità della rete PSTN per il 99.999% del tempo: questo significa che la rete può essere fuori servizio per massimo 5 minuti l’anno. Analogamente, la rete VoIP deve garantire la disponibilità del servizio esattamente come accade oggi, il 99.999% del tempo. Scalabilità – una rete VoIP necessita di essere scalabile, di supportare centinaia di migliaia di connessioni contemporanee e di mantenere la possibilità di crescere secondo la domanda. Sebbene i parametri descritti in questa sezione non sembrino direttamente inerenti agli aspetti di sicurezza di una rete VoIP, l’abilità di un utente malintenzionato di interferire con le operazioni della suddetta rete può minarne la qualità, la disponibilità e la scalabilità. 20 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP 3.1 Vulnerabilità del VoIP La tecnologia VoIP permette che termini come hacker e phreaker (coloro che tentano di introdursi nella rete telefonica senza permesso) coincidano. Alcune proprietà della telefonia via IP rendono facile il compito ad un phreaker/hacker di compromettere o addirittura controllare diversi apparati di una rete VoIP. Le caratteristiche di sicurezza associate ad una rete VoIP inoltre sono molto diverse da quelle che finora sono state studiate e sviluppate per una classica rete telefonica; per questo motivo prima di implementare una rete di tale tipo bisogna tenere in considerazione diversi fattori: Utilizzo di IP Poiché il VoIP utilizza IP come protocollo per trasportare le informazioni, allora eredita da esso tutte le vulnerabilità conosciute e non conosciute. Diffusione di IP Le reti IP sono diffuse e facilmente accessibili. Ciò permette che molti utenti possano investigare sulle tematiche di sicurezza ed eventualmente rendere di dominio pubblico le vulnerabilità trovate. Nessuna separazione di rete Diversamente da quanto avviene per la rete PSTN, dove l’unico punto della rete in cui la segnalazione (SS7) condivide il collegamento con il flusso audio è la linea che va dall’apparecchio dell’utente al commutatore dell’operatore telefonico; nel VoIP non esiste isolamento o alcuna separazione fisica tra informazioni di segnalazione e informazione dell’utente. Questo ovviamente aumenta i rischi e le vulnerabilità di tale struttura. Voce e dati condividono la stessa rete Con la rete PSTN, voce e dati sono trasportate su reti fisicamente separate. Sebbene diverse tecnologie possano essere utilizzate per separare virtualmente voce e dati quando viaggiano sulla stessa rete (attraverso le Virtual LAN ad esempio), di solito queste possono costituire un aumento del livello di rischio. Infatti, poiché entrambe le reti virtuali condividono gli stessi apparati, è possibile attuare delle interferenze nella rete voce utilizzando la rete dati. Per esempio, gli attacchi Denial of Service lanciati da una rete dati hanno di solito come obiettivo gli switch della rete, che se colpiti provocano il deterioramento delle prestazioni sia per quanto riguarda il traffico dati che quello voce. Intelligenza dei dispositivi 21 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP Nella telefonia tradizionale gli apparecchi telefonici costituiscono dei dispositivi stupidi, ossia sono semplicemente in grado di collegarsi ai commutatori telefonici, in cui risiede l’intera intelligenza della rete. Con alcuni protocolli di segnalazione della rete VoIP, ed è il caso di SIP, i dispositivi terminali d’utente gestiscono una parte o la totalità dell’intelligenza della rete. Cioè, questi dispositivi terminali dispongono delle funzionalità e abilità di interagire con differenti componenti e servizi della rete VoIP. Per questo motivo alcuni utenti possono sfruttare tale intelligenza dei dispositivi terminali per perpetrare attacchi alla rete VoIP. L’abilità di un dispositivo terminale di interagire attivamente con differenti elementi dell’architettura VoIP favorisce grandi rischi per una rete telefonica via IP rispetto ad una rete telefonica tradizionale in cui i commutatori, a cui i telefoni sono connessi, rappresentano il bersaglio preferito per perpetrare degli attacchi. Assenza di una singola autorità di controllo In alcune architetture VoIP l’informazione di segnalazione e il segnale audio digitalizzato attraversano differenti reti IP controllate da diverse entità. In molti casi non è possibile determinare il livello di sicurezza che i differenti provider garantiscono nella propria rete, trasformando tali reti un potenziale fattore di rischio e rendendo la sicurezza una questione relativa. Apparati di rete Gli apparati di una rete VoIP sono dei tradizionali calcolatori, in alcuni casi utilizzano addirittura sistemi operativi conosciuti. Gli apparati della rete VoIP interagiscono con altri apparati della rete IP e per questo sono più vulnerabili rispetto a quelli della rete PSTN, che generalmente sono proprietari ed utilizzano sistemi operativi sconosciuti alla maggior parte degli utenti. Protocolli VoIP Inizialmente molti dei protocolli VoIP sono stati progettati senza tenere conto delle tematiche di sicurezza; inoltre se si considerano inevitabili difetti di progettazione ne scaturisce un quadro interessante per ogni utente malintenzionato. Per esempio si consideri il caso di un protocollo di segnalazione che non conserva la conoscenza dei cambiamenti apportati al flusso multimediale durante una chiamata. Protocolli di supporto Non sono solo i protocolli VoIP a introdurre delle vulnerabilità per la telefonia via IP, ma anche tutti i protocolli di supporto e tutte le tecnologie che fanno parte del mondo VoIP. Si possono citare ad esempio i protocolli applicativi – ad esempio DNS, Quality of Service Protocols – oppure le tecnologie di internetworking – Ethernet, Token Ring, Wi-Fi. Questa varietà di protocolli, non essendo immune dagli attacchi apporta tali vulnerabilità alla tecnologia VoIP, permettendo ad utenti maliziosi di controllare diversi aspetti o parti di una rete. 22 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP Accesso fisico L’accesso diretto al collegamento, alla rete o addirittura all’apparato è di solito visto come il pericolo maggiore per una rete di telecomunicazioni. Un utente malintenzionato che ottiene tale accesso fisico può disporre di diversi vantaggi chiave che in un’analoga struttura PSTN non aveva. I vantaggi derivano direttamente dal modo in cui una rete IP funziona, dal collocamento dell’intelligenza nella rete VoIP nei terminali, e dalle barriere usuali in una rete PSTN per la sicurezza e l’accesso fisico. Per esempio, se un utente malizioso fosse in grado di ottenere un accesso fisico non autorizzato al collegamento tra il terminale dell’utente e lo switch della rete, l’attaccante sarebbe in grado di effettuare delle chiamate a spese dell’utente legittimo, senza interferire in alcun modo con il traffico dell’utente legittimo. Uno scenario simile per la rete PSTN portava ad effetti differenti, infatti se un utente malizioso si attacca alla rete di un altro utente, quest’ultimo sarebbe rimasto isolato e sarebbe riuscito facilmente a rilevare l’attacco. Affidabilità L’affidabilità è uno degli aspetti di maggiore importanza per una rete telefonica. Si consideri ad esempio il nodo cruciale dell’alimentazione degli apparati. Se da una parte i fornitori di servizi (Carrier e Internet Telephony Service Provider - ITSP) possono garantire l’affidabilità attraverso la ridondanza o attraverso generatori indipendenti dalla rete elettrica nazionale, per quanto riguarda gli utenti finali il problema non è di facile risoluzione considerando il fatto che la maggior parte di telefoni IP hanno bisogno di alimentazione. Architettura di rete In tutte le reti VoIP dovrebbero essere implementati alcuni meccanismi basilari di sicurezza che rendano vano ogni tentativo di attacco abbastanza semplice. Ad esempio, si consideri il caso in cui gli elementi non vengano autenticati dalla rete. Questa situazione rende agevole l’attacco di un phreaker, che installando un dispositivo terminale appositamente modificato riesce a fare telefonate gratuitamente. Identità non fidate In una rete VoIP senza configurazioni e meccanismi ad hoc, un utente non dovrebbe fidarsi dell’identità dichiarata da un altro utente che partecipa alla chiamata. L’identità dell’utente, ad esempio l’informazione contenuta nel campo Call-ID dell’intestazione di un messaggio SIP, è facilmente falsificabile utilizzando semplici metodi. La natura della voce Senza un’adeguata qualità della riproduzione vocale, il VoIP non potrebbe avere futuro. La qualità della voce, come è stato già sottolineato, è una funzione di diversi fattori come la latenza, il 23 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP ritardo, la variazione del ritardo (jitter), la perdita del pacchetto e altri… Con la rete PSTN tali aspetti non rappresentano un problema. Si consideri ad esempio il jitter. Durante l’instaurazione di una chiamata PSTN, viene creato un cammino di comunicazione dedicato tra i diversi commutatori permettendo il passaggio della voce tra i partecipanti alla chiamata. Poiché c’è questo circuito dedicato, il traffico voce impiegherà lo stesso tempo per raggiungere gli utenti in qualsiasi istante della chiamata. Inoltre il jitter è praticamente assente. Sebbene la condizione di qualità della voce inaccettabile possa essere categorizzata come un problema di disponibilità del servizio, in alcuni casi l’abilità di creare tali condizioni è il risultato non della naturale congestione della rete ma di un’azione volontaria, ad esempio i casi in cui degli utenti malintenzionati possano acquisire il controllo di alcuni nodi della rete VoIP. Tecnologie di sicurezza Con lo scopo di sopperire alle mancanze di garanzie sulla sicurezza, per una rete VoIP si possono adottare le tecnologie di sicurezza sviluppate per la rete IP. Sfortunatamente, di esse non tutte sono adatte ad essere utilizzate in un ambito in cui i requisiti di qualità del servizio sono molto stringenti, dovendo garantire la comunicazione di utenti in tempo reale. Si consideri ad esempio l’utilizzo delle Virtual Private Network (VPN). Se utilizzate in una rete VoIP per crittografare le informazioni di segnalazione e il flusso multimediale che gli utenti si scambiano, il processo di crittografia da un lato e di decifrazione dall’altro introducono ulteriore latenza e degradano la qualità della comunicazione. Una soluzione a tale problema potrebbe essere l’utilizzo della crittografia direttamente tra i partecipanti della sessione, senza far intervenire gli elementi della rete VoIP. 3.2 Attacchi ad un’architettura VoIP Questa sezione introduce alcuni dei potenziali attacchi e vulnerabilità tipici di un ambiente VoIP, includendo alcune delle vulnerabilità dei telefoni e switch VoIP. I rischi inerenti la sicurezza delle informazioni possono essere classificate in senso lato nelle seguenti categorie: confidenzialità, integrità e disponibilità. Ulteriori rischi rilevanti per gli switch sono rappresentati dalla frode e dalla sicurezza fisica degli apparati di rete e dei dispositivi terminali. Le reti a pacchetto devono parte del loro successo al largo numero di parametri configurabili: indirizzo IP del dispositivo terminale, indirizzi dei router e dei firewall e software specifico – ad esempio il Call Manager – utilizzato per gestire le chiamate. Molti di questi parametri vengono definiti dinamicamente ogni qualvolta la rete viene avviata, o quando un telefono VoIP viene accesso o aggiunto alla rete stessa. Poiché vi sono così tanti parametri configurabili dinamicamente, un attaccante ha un’ampia gamma di potenziali punti vulnerabili da attaccare [13]. 24 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP 3.2.1 Confidenzialità La confidenzialità consiste nel bisogno di mantenere le informazioni sicure e private. Per gli utilizzatori domestici, questa categoria include dati personali, informazioni finanziarie e informazioni riguardanti la sicurezza come le password. In ambito telecomunicazionistico, le intercettazioni telefoniche sono una preoccupazione comune, ma la confidenzialità di altre informazioni deve essere garantita per evitare frodi e attacchi che neghino il servizio. Gli indirizzi in una rete IP, il tipo di sistema operativo, le estensioni del telefono per l’assegnazione dell’indirizzo IP e i protocolli di comunicazione sono tutti esempi di quelle informazioni che, sebbene non facciano parte delle informazioni riservate dell’utente, possono rendere la vita facile ad un attaccante. Con la telefonia tradizionale, intercettare i dati dell’utente richiede o l’accesso fisico per mettere sotto controllo una linea oppure l’accesso allo switch telefonico. Questa necessità di accedere fisicamente alla rete da colpire aumenta notevolmente il rischio per l’intruso di essere scoperto. Considerando che la telefonia PSTN ha molti meno punti di accesso di una rete VoIP, le opportunità per un attaccante aumentano drammaticamente. Gli attacchi alla confidenzialità sono: 3.2.1.1 Switch Default Password Vulnerability E’ frequente per gli switch avere configurata una password di accesso comune. Questa vulnerabilità permette ad un attaccante che ottiene l’accesso di deviare le conversazioni verso altri dispositivi e quindi di intercettare le chiamate. Dimenticarsi di cambiare le password di default è uno degli errori più comuni tra gli utenti meno esperti. 3.2.1.2 Classical Wiretap Vulnerability Utilizzare un programma di sniffing in un segmento della rete VoIP rende facile intercettare il traffico voce. Una buona politica di sicurezza fisica riguardo l’installazione di apparati è il primo passo verso il mantenimento della confidenzialità. Per esempio, il non utilizzare gli hub con i telefoni IP o lo sviluppare un sistema di allarme che segnali all’amministratore quando un telefono IP è stato disconnesso dalla rete permettono di rilevare questa classe di attacchi. 3.2.1.3 ARP Cache Poisoning e ARP Floods Poiché l’accesso ad una rete VoIP può essere regolato attraverso un politica di autenticazione, per aggirarlo l’attaccante può utilizzare dei messaggi ARP per avvelenare le ARP cache dell’utente che vuole colpire. Un attacco di tipo ARP flood sullo switch può rendere la rete vulnerabile agli attacchi che hanno lo scopo di origliare le comunicazioni altrui. Spedire in broadcast messaggi di risposta ARP è sufficiente per corrompere molte ARP cache. Ciò permette di reinstradare il traffico originalmente diretto verso un utente verso il dispositivo che si preferisce. 25 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 3.2.1.4 Aspetti di sicurezza nel Voice over IP Web Server Interfaces Sia gli switch che i dispositivi terminali VoIP dispongono tipicamente di un interfaccia web server per la gestione locale o remota. Un attaccante potrebbe intercettare attraverso un programma di sniffing per intercettare i messaggi HTTP che in chiaro e in maniera testuale trasportano informazioni confidenziali. Questo potrebbe richiedere l’accesso alla rete locale oppure alla rete in cui il server risiede. La soluzione a tale attacco consiste nell’utilizzare HTTPS come protocollo per visualizzare le informazioni remote. 3.2.1.5 IP Phone Netmask Vulnerability Un effetto del tutto simile all’ARP Cache Vulnerability può essere raggiunto assegnando la maschera di rete e l’indirizzo IP di un gateway ad un IP Phone per fare in modo che molti o tutti i pacchetti che esso trasmette passino attraverso il dispositivo in possesso dell’attaccante. Un meccanismo di filtraggio dei pacchetti attraverso un firewall riduce di molto la probabilità di successo di questo attacco. 3.2.2 Integrità Mantenere integra un’informazione trasportata in una rete significa che l’informazione non può essere alterata da utenti non autorizzati. Gli apparati di una rete di telecomunicazioni devono proteggere l’integrità dei dati dei loro sistemi e le proprie relative configurazioni. A causa della ricchezza di funzionalità disponibili su uno switch, un attaccante che dovesse compromettere la configurazione del sistema potrebbe compiere facilmente ogni tipo di azione maliziosa. Per esempio l’atto di modificare le informazioni utilizzate da una rete VoIP per la consegna dei pacchetti risulta un attacco di negazione del servizio. I sistemi di sicurezza, se violati, garantiscono ad un utente malintenzionato di utilizzare ed abusare di un sistema. Cioè, la compromissione del sistema di sicurezza che protegge una rete non solo consente l’utilizzo senza regole delle risorse, ma permette l’eliminazione di tutte quelle tracce che potrebbero far risalire all’attaccante e permette anche l’installazione di trapdoors, ossia di falle del sistema attraverso cui si può riottenerne il controllo nelle visite future. Per questa ragione, i sistemi di sicurezza devono essere oculatamente gestiti. Gli attacchi all’integrità delle informazioni possono essere frutto di azioni accidentali o veri e propri atti intenzionali. Questo utilizzo improprio delle funzioni del sistema può essere causato da utenti interni o intrusi. Un utente interno può effettuare una operazione incorretta o non autorizzata e causare la modifica, distruzione o cancellazione dei dati o dei programmi di gestione della rete. Questo attacco può essere causato da diversi fattori, tra i quali la possibilità che il livello dei 26 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP permessi assegnati a quel particolare utente è troppo alto rispetto a quello di cui l’utente avrebbe effettivamente bisogno. Mentre per quanto riguarda gli utenti non autorizzati, gli intrusi, possono cercare di mascherarsi da utenti interni e accedere a tutte quelle operazioni che sono loro permesse. In questo caso vi sono diversi attacchi estremamente pericolosi, alcuni dei quali costituiscono una vera e propria crisi del sistema. Per esempio, un intruso può utilizzare il livello dei permessi garantiti all’utente legittimo e danneggiare delle funzioni quali acquisire dati confidenziali, causare il deterioramento del servizio attraverso la modifica del software degli switch, spegnere da remoto gli switch e rimuovere tutte le tracce della propria intrusione. 3.2.2.1 DHCP Server Insertion Attack Spesso è possibile cambiare la configurazione di un telefono sfruttando il protocollo DHCP che viene utilizzato all’accensione. Infatti, nel momento in cui un telefono IP viene acceso, esso genera una richiesta DHCP in broadcast affinché gli vengano assegnati dei parametri necessari al proprio utilizzo, in questo momento un attaccante può consegnargli una risposta DHCP contenente false informazioni. Questo tipo di attacchi consentono di ottenere quello che viene definito un man in the middle attack, ossia l’attaccante può essere un nodo che si interpone nella comunicazione di due utenti ignari. Alcuni dei metodi che permettono tali attacchi si basano sul fatto che sia possibile riavviare il telefono da remoto attraverso tecniche come il ping flood, MAC spoofing, etc… 3.2.2.2 TFTP Server Insertion Attack E’ possibile cambiare le impostazioni di un telefono IP spacciandosi per il server TFTP che fornisce i parametri di configurazione ai dispositivi terminali. Un TFTP server falso può fornire informazioni maliziose prima che il server legittimo sia in grado di rispondere alla richiesta. Questo metodo consente ad un attaccante di cambiare i parametri di configurazione di un telefono IP. 3.2.3 Disponibilità e Negazione del Servizio La disponibilità consiste nel mantenere accessibili le informazioni e i servizi agli utenti. La disponibilità è uno dei rischi maggiori per uno switch; gli attacchi che sfruttano le vulnerabilità infatti nel software o nei protocolli di un apparato di rete possono portare alla degradazione delle prestazioni e quindi alla negazione del servizio della porzione di rete servita. Una rete Voice over IP presenta maggiori debolezze da questo punto di vista rispetto ad una normale rete dati. Considerando infatti che i sistemi anti-intrusione (Intrusion Detection System – IDS) a volte falliscono nell’intercettare degli attacchi allo stack TCP/IP, un attaccante può sfruttare questa debolezza del sistema per colpire la rete VoIP. 27 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP Ogni rete può essere considerata vulnerabile agli attacchi Denial of Service, semplicemente sovraccaricando le capacità del sistema. Con un sistema VoIP il problema è particolarmente grave, poichè la qualità del servizio offerto dipende fortemente dalla perdita dei pacchetti e dal ritardo. Quindi una rete che introduce un ritardo superiore ai 150msec per il traffico in una direzione [14] o una perdita di pacchetti superiore al 3% [15] è considerata inaffidabile. 3.2.3.1 CPU Resource Consumption Attack Un attaccante che abbia la possibilità di accedere da remoto ad un server può essere in grado di forzare il riavvio del sistema (shutdown all/restart all) inserendo il massimo numero di caratteri possibili per il login e password buffer in tentativi a ripetizione. Infatti alcuni telefoni IP si riavviano dopo che viene eseguito un attacco di questo tipo. Inoltre per provocare il riavvio di un sistema, la fase di ripristino delle impostazioni iniziale può introdurre dei cambiamenti non voluti dall’amministratore o addirittura re-inizializzare alcune proprietà, ad esempio le password di sistema. L’utilizzo di firewall che non permettono la connessione da reti sconosciute rappresenta il primo passo per risolvere tale problema. Comunque rimane la possibilità per l’attaccante di modificare l’indirizzo MAC e IP dei pacchetti che utilizza per perpetrare l’attacco in modo che non siano scartati dal firewall. 3.2.3.2 Default Password Vulnerability E’ comune trovare nei nodi di rete delle password di default (ad esempio admin o root). Similmente i telefoni VoIP hanno spesso una sequenza di default come password e che può essere utilizzata per sbloccare e poi modificare le informazioni contenute. Questa vulnerabilità permette ad un attaccante di controllare la topologia della rete da remoto, consentendogli di perpetrare non un attacco denial of service alla rete completa, ma attraverso un attacco di tipo port mirroring alla singola locazione della vittima, può acquisire l’abilità di intercettare ogni comunicazione che ha inizio dal terminale compromesso. Inoltre, lo switch della rete generalmente ha un’interfaccia web attraverso cui è possibile configurare le impostazioni, ma essa rappresenta una vulnerabilità giacché permette che anche utenti non esperti siano in grado di modificarle. In molte architetture VoIP i telefoni IP scaricano la propria configurazione all’avvio da un server TFTP o attraverso protocolli simili. Queste configurazioni specificano ad esempio l’indirizzo del Call Manager o del SIP Proxy Server in modo che ogni utente sia in grado di instaurare una comunicazione. Ma poiché il protocollo TFTP non ha alcuno strumento che ne garantisca la sicurezza è facile per un attaccante spacciarsi per un server TFTP e caricare nei terminale che ha scelto come vittime una configurazione in cui egli stesso risulta SIP Proxy Server. In questo modo controlla il flusso delle chiamate delle vittime o può intercettarne il contenuto. 28 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Aspetti di sicurezza nel Voice over IP In conclusione, cambiare la password di default è cruciale, ma anche disabilitare l’interfaccia grafica di gestione dei nodi di rete è una buona pratica di sicurezza, in quanto spesso le informazioni di amministrazione gestite vengono trasmesse nella rete in chiaro. 3.2.3.3 Exploitable software flaws E’ stato riscontrato [13] che i sistemi VoIP, sono sensibili a vulnerabilità di tipo “buffer overflows” ed “improper packet header handling”. Questo tipo di imperfezioni sono causate da una cattiva valutazione delle informazioni. Le imperfezioni software possono causare vulnerabilità riconducibile principalmente a due tipi: • Denial of Service • Rivelazione di parametri critici sui sistemi Attacchi di tipo DoS, sono attuabili anche da remoto, inviato pacchetti TCP, con header malformati, producendo crash di sistema, memory dump in cui un aggressore puo’ rinvenire informazioni rilevanti come password, ed indirizzamento IP di altri sistemi. Inoltre, buffer overflow che permettono l’introduzione di codice malizioso sono stati scoperti in software VoIP [13], come del resto in molte altre applicazioni. 3.2.3.4 Account Lockout Vulnerability Un attacker, può tentare innumerevoli tentativi di login, con lo scopo di bloccare l’account utente, compromettendo lo svolgimento regolare delle attività. Questa vulnerabilità è comune ai sistemi protetti da password, poiché non consente ad un attaccante di accedere attraverso il tentativo di tutte le possibili combinazioni di caratteri finché viene immessa la password corretta. In questo modo l’accesso viene vietato anche all’utente legittimo se prova a collegarsi da remoto. 29 4 Vulnerabilità di SIP e RTP SIP è un protocollo che richiede molti sforzi e implementazioni affinché lo si possa rendere sicuro. L’utilizzo di dispositivi intermediari – come i Proxy Server, i Registrar Server e i Redirect Server – le relazioni di fiducia con diverse sfaccettature tra componenti, l’utilizzo di elementi cui non è richiesto alcuna relazione di fiducia e l’utilizzo da utente a utente rendono la sicurezza difficile da implementare in una rete VoIP. Sono necessarie infatti delle soluzioni applicabili nei molti scenari in cui il protocollo SIP è utilizzabile, si pensi ad esempio ad Internet, le reti IP wireline o quelle wireless. La varietà di usi che si possono fare di questo protocollo quindi comportano la necessità di uno studio di soluzioni alle esigenze di sicurezza. Per fare ciò, devono essere identificati particolari meccanismi a seconda dei differenti aspetti e usi del SIP. Un concetto molto importante da sottolineare è che la sicurezza della segnalazione SIP non inficia in alcun modo la scelta delle implementazioni di sicurezza del protocollo di trasporto del flusso multimediale utilizzato, ad esempio RTP (Real-Time Transfer Protocol). Cioè ogni flusso media può essere crittografato dall’utente sorgente all’utente destinatario indipendentemente dalla segnalazione SIP ad esso associata. 4.1 SIP 4.1.1 Hijacking 4.1.1.1 Registration Hijacking Scopo di questo attacco è modificare le associazioni nel Registrar Server di un dominio per dirottare le successive richieste di instaurazione di sessioni verso l’attaccante. Il meccanismo di registrazione di SIP permette ad uno UA di identificarsi come terminale sul quale un utente con un particolare address-of-record desidera ricevere le chiamate. La richiesta SIP REGISTER è utilizzata proprio a questo scopo, infatti contiene un campo addizionale dell’intestazione (Contact) in cui è specificata l’URL che l’utente vuole registrare e quindi su cui vuole essere raggiunto. L’operazione di registrazione crea quindi delle associazioni (binding) tra address-of-record URI e Contact address in un Location Service che gestisce un particolare dominio. Perciò quando un Proxy Server dello stesso dominio riceve una richiesta in cui la Request- 30 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP URI coincide con l’address-of-record registrata nel Location Service, il Proxy inoltrerà tale richiesta al Contact address associato ad esso. Poichè il Registrar Server si basa sull’address-of-record presente nel campo From della richiesta REGISTER per verificare l’identità del mittente, allora l’attaccante modificando maliziosamente questo campo può impersonare l’identità della vittima. Oppure l’attaccante può impersonare l’identità di un utente che sia autorizzato a modificare le associazioni della vittima, secondo la relazione della third-party registration, acquistando la possibilità di cancellare tutte le associazioni presenti e inserire il proprio UAC come contatto appropriato, in modo da ricevere tutte le richieste dirette alla vittima. Se l’attaccante genera una richiesta REGISTER con campo To e From contenenti la SIP URI della vittima e con il campo Contact contenente il proprio SIP URI, allora riesce a compromettere la raggiungibilità della vittima sostituendosi ad essa. In [1] è specificato che i Registrar Server dovrebbero accettare le registrazioni provenienti da un SIP URI se hanno sempre il valore del campo Call-ID sempre uguale; ma tale raccomandazione non è vincolante. Quindi in questo caso per l’attaccante non c’è la necessità di ricercare informazioni tramite sniffing poiché il Registrar Server accetta le registrazioni con un qualsiasi valore del campo Call-ID. Attacker sip:[email protected] 192.0.3.103 Registrar Server / Location Service SIP Proxy REGISTER sip:registrar.atlanta.com SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 REGISTER Contact: <sip:[email protected]> Content-Length: 0 Victim B sip:[email protected] 192.0.2.102 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=45243254 Call-ID: [email protected] CSeq: 1 REGISTER Contact: <sip:[email protected]> Content-Length: 0 INVITE sip:[email protected] …. Query Response INVITE sip:victimA.atlanta.com SIP/2.0 Via: SIP/2.0/UDP proxy.atlanta.com Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=42314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 0 Figura 4.1 - Registration Hijacking: flusso di messaggi dell'attacco 31 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Una volta inviato il REGISTER malizioso, ogni qual volta un utente cercherà di inviare un messaggio di segnalazione alla vittima, il Proxy SIP riceverà come risposta alla query dal Location Server l’indirizzo dell’attaccante. In questo modo quest’ultimo è in grado di intercettare tutte le chiamate destinate alla vittima. La traccia più evidente di questo attacco è il binding presente nel Location Server in cui è associato come address-of-record della vittima la SIP URI dell’attaccante. La vittima può controllare agevolmente i binding associati al proprio address-of-record inviando una richiesta REGISTER in cui è assente il campo Contact, a cui il Registrar risponderà con un 200 OK in cui sono presenti tutti i contatti associati al proprio address-of-record. 4.1.1.2 3XX Response code messages Scopo di questo attacco è divenire l’utente chiamato, sostituendosi al legittimo destinatario delle richieste SIP. Le response di tipo 3XX forniscono informazioni sulla nuova localizzazione dell’utente, o su servizi alternativi che possono aiutare ad instaurare la sessione SIP. In particolare la response 301 Moved Permanently viene generata dai Server in risposta ad una richiesta la cui Request-URI indica un indirizzo per cui un utente non può essere più trovato. Lo UAC quindi dovrebbe inviare una richiesta analoga ma all’indirizzo fornito nel campo Contact della response 301 Moved Permanently. Lo UAC inoltre dovrebbe aggiornare tutti i contatti che conserva in memoria con questo nuovo valore e indirizzare tutte le future richieste a questo indirizzo. Se da un lato la successione dei messaggi da inviare in questo tipo di attacco è abbastanza semplice, dall’altro la tempestività con cui si generano riveste un ruolo molto importante. Un secondo aspetto da sottolineare è che in questo caso la localizzazione dell’attaccante non condiziona in alcun modo il successo dell’attacco, ossia può far parte indifferentemente della rete del chiamante, della rete del chiamato che delle eventuali reti che si frappongono fra esse; importante è comunque che l’attaccante riesca a sniffare il traffico delle vittime in modo da agire tempestivamente. Nell’esempio mostrato in figura, l’attaccante riesce a captare un messaggio di INVITE diretto al legittimo destinatario. Prima che questo risponda, l’attaccante genera una risposta di tipo 301 Moved Permanently i cui valori dei campi From, To e Call-ID sono gli stessi della richiesta intercettata. Ad essi aggiunge un nuovo campo Contact in cui specifica il proprio SIP URI. Quando la vittima riceve tale risposta aggiornerà la lista dei contatti in modo l’attaccante sarà il destinatario di tutte le richieste future dirette in realtà alla seconda vittima. 32 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Attacker sip:[email protected] 192.0.3.103 4) 301 Moved Permanently B ictim ITE V V N I 6) im B Vict VITE rying N I 1) B 00 T 2) 1 E Victim T I NV 5) I 3) INVITE Victim B Victim B sip:[email protected] 192.0.2.102 Victim A sip:[email protected] 192.0.1.101 Figura 4.2 - 3XX Response code messages: 301 Moved Permanently Si può ottenere un risultato analogo qualora l’attaccante generasse una risposta di tipo 302 Moved Temporarily, caso in cui associato al contatto nel campo Contact può esserci un valore di validità temporale. Sia i Proxy Server che gli UA possono memorizzare tale SIP URI per la durata dell’intervallo temporale, scaduto il quale va scartato. Qualora non fosse specificato alcun intervallo di validità, l’indirizzo sarebbe valido unicamente per la richiesta successiva di tale richiesta e non dovrebbe assolutamente essere memorizzato. Poiché gli UA sono progettati per gestire automaticamente le risposte di tipo 3XX, l’attacco avviene in maniera del tutto trasparente alla vista dell’utente. L’unica traccia lasciata è costituita dall’indirizzo IP dell’attaccante presente nel campo Contact della response 3XX e successivamente memorizzata dall’UAC nella lista dei contatti. Poiché però un eventuale utilizzo del messaggio 302 Moved Temporarily, in cui non è specificato alcun intervallo di validità, non consente all’UAC di memorizzare tale indirizzo, allora le tracce lasciate sarebbero nulle. 4.1.2 Man in the Middle 4.1.2.1 Impersonating a server: Proxy server Scopo di quest’attacco è quello di impersonare il server del dominio di destinazione di una richiesta per deviare la sessione verso l’attaccante. Il dominio verso cui una richiesta è destinata è specificato nella Request-URI. Gli UA contattano direttamente un server in questo dominio in modo che consegni esso stesso la richiesta al reale destinatario. Bisogna considerare che c’è la possibilità che un attaccante riesca ad impersonare un server remoto e quindi ad intercettare le richieste e le comunicazioni delle vittime. Mentre l’attacco descritto nel paragrafo precedente, Registration Hijacking, compromette la correttezza delle 33 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP informazioni contenute nel Registrar Server, in attacchi di questo tipo, Man in the Middle, si possono attaccare server di tipo Redirect o Proxy. Come descritto in [7], si consideri il caso in cui uno UAC debba instaurare una sessione SIP con uno UAS che si trova in un dominio differente, ad esempio domain.com. Per localizzare lo UAS, il client o il Proxy Server che lo rappresenta deve fare una richiesta al DNS su quale protocollo, porta ed indirizzo IP deve utilizzare per instradare la richiesta INVITE verso il dominio di destinazione. Se il dominio di destinazione è servito da due Proxy SIP che supportano TCP, UDP e TLS su TCP allora la risposta alla query DNS SRV sarà del tipo: _sip._udp.domain.com 43200 IN SRV 10 0 5060 sipserver1.domain.com _sip._udp.domain.com 43200 IN SRV 11 0 5060 sipserver2.domain.com _sip._tcp.domain.com 43200 IN SRV 10 4 5060 sipserver1.domain.com _sip._tcp.domain.com 43200 IN SRV 10 2 5060 sipserver2.domain.com _sips._tcp.domain.com 43200 IN SRV 10 0 5060 sipserver1.domain.com _sips._tcp.domain.com 43200 IN SRV 10 0 5060 sipserver2.domain.com Quindi a seconda del protocollo prescelto, il client utilizzerà il Proxy Server sipserver1 o sipserver2 del dominio domain.com. Seguirà quindi una query DNS di tipo A per risolvere il nome simbolico in indirizzo numerico. domain.com 43200 IN A 10.0.0.30 sipserver1.domain.com 43200 IN A 10.0.0.31 sipserver2.domain.com 43200 IN A 10.0.0.32 Se un attaccante riuscisse ad impersonare un server del dominio di destinazione, allora potrà ricevere le richieste dirette allo UAS e, per operare da Man in the Middle, inoltrerà poi tali richieste verso il legittimo destinatario con opportune modifiche, in modo da ricevere il flusso da entrambi i versi di comunicazione. Per perpetrare tale attacco l’attaccante deve avvelenare le tabelle del DNS server ad esempio creando un nuovo server fittizio del dominio di destinazione che abbia priorità altissima, in modo che sia scelto come prima risorsa: _sip._udp.domain.com 43200 IN SRV 10 0 5060 sipserver1.domain.com _sip._udp.domain.com 43200 IN SRV 11 0 5060 sipserver2.domain.com _sip._udp.domain.com 43200 IN SRV 0 100 5060 sipserver3.domain.com _sip._tcp.domain.com 43200 IN SRV 10 4 5060 sipserver1.domain.com _sip._tcp.domain.com 43200 IN SRV 10 2 5060 sipserver2.domain.com 34 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP _sip._tcp.domain.com 43200 IN SRV 0 100 5060 sipserver3.domain.com _sips._tcp.domain.com 43200 IN SRV 10 0 5060 sipserver1.domain.com _sips._tcp.domain.com 43200 IN SRV 10 0 5060 sipserver2.domain.com _sips._tcp.domain.com 43200 IN SRV 0 100 5060 sipserver3.domain.com In questo modo tutte le richieste destinate al domain.com passano attraverso il sipserver3. Per completare l’opera, l’attaccante deve modificare anche i record di tipo A, in modo che il proprio indirizzo IP sia associato al sipserver3: domain.com 43200 IN A 10.0.0.30 sipserver1.domain.com 43200 IN A 10.0.0.31 sipserver2.domain.com 43200 IN A 10.0.0.32 sipserver3.domain.com 43200 IN A indirizzo IP attaccante Quando la vittima, o il Proxy Server che la serve, interrogherà il DNS server riceverà come destinatario per le richieste da inviare agli utenti del domain.com l’indirizzo dell’attaccante e quindi manderà ad esso la richiesta di INVITE. Quando l’attaccante riceve tale messaggio SIP deve modificarlo aggiungendo il campo Record-Route nell’intestazione con il proprio indirizzo IP. In questo modo controllerà il flusso da entrambe le direzioni. Victim A sip:[email protected] 192.0.1.101 DNS Server 2) Query 3) Response Victim B sip:[email protected] 192.0.2.102 4) INVITE sip: [email protected] 1) DNS Poisoning Attacker sip:[email protected] 192.0.3.103 Figura 4.3 - Impersonating a Proxy server: l'attaccante modifica i record del DNS Poiché però questo attacco funziona solamente se il protocollo di trasporto scelto dal client è TCP o UDP, visto che un eventuale utilizzo di TLS su TCP vanificherebbe ogni sforzo dell’attaccante essendo alcuni campi dell’intestazione crittografati, l’ultimo passo da compiere è quello di scoraggiare l’utilizzo di TLS da parte dello UAC. Per fare ciò è necessario modificare i record NAPTR del DNS in modo che TLS su TCP venga cancellato, ossia devono essere di questo tipo: 35 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP domain.com IN NAPTR 0 0 “s” “SIP+D2T” “” _sip._tcp.domain.com domain.com IN NAPTR 0 0 “s” “SIP+D2U” “” _sip._udp.domain.com In questo modo il client non potrà scegliere TLS visto che è assente il record NAPTR ad esso associato e quindi tutta la sessione SIP sarà in chiaro. In questo tipo di attacco le tracce lasciate sono molte. La prima è la modifica nel DNS server dei record associati al dominio di destinazione delle richieste. Queste modifiche però non sono così evidenti all’utilizzatore comune e quindi possono facilmente passare inosservate. Una seconda traccia, molto più lampante, è costituita dal campo Record-Route aggiunto nella richiesta. Questo campo, contenente l’indirizzo IP dell’attaccante, è visibile sia al legittimo destinatario della richiesta che al suo mittente. A giocare a favore dell’attaccante c’è però il fatto che i campi Record-Route sono frequentemente utilizzati dai Proxy Server che devono monitorare il traffico di un dominio, ad esempio per questioni di tariffazione. 4.1.2.2 302 Response code message Gli attacchi di tipo Man in the Middle descritti nei due prossimi paragrafi sfruttano la semplice falsificabilità dei messaggi di risposta del tipo redirection (3XX). Infatti un utente malizioso può facilmente far credere alla vittima che un messaggio SIP sia stato generato da un SIP Registrar, da un Proxy Server, da un SIP Redirect Server o da un SIP UA. In questo particolare caso l’attaccante genera un messaggio di tipo 302 Moved Temporarily in cui si spaccia per l’utente destinatario della richiesta inviato dalla vittima. Questo attacco ha quindi lo scopo di re-direzionare le richieste verso l’attaccante, che per agire da Man in the Middle le inoltrerà poi verso il legittimo destinatario. Analagomente al caso descritto nella sezione Hijacking, quando l’attaccante intercetta una richiesta INVITE inviata dalla vittima, genera un risposta di tipo 302 Moved Temporarily. In particolare, spacciandosi per l’utente chiamato, specifica nel campo Contact dell’intestazione che questi è raggiungibile al proprio indirizzo IP. E’ importante notare che questa risposta deve essere ben costruita dall’attaccante, cioè deve essere composta da tutti i parametri caratterizzanti la richiesta originale inviata dall’utente chiamante: To, From e Call-ID. In questo modo quando l’utente chiamante riceve questa risposta, lo UAC genera all’interno dello stesso dialogo un nuovo messaggio di INVITE il cui destinatario a sua insaputa è proprio l’attaccante. Per operare da Man in the Middle, quest’ultimo non deve far altro che inoltrare i messaggi che riceve verso il legittimo destinatario e aggiungervi un campo di Record-Route in cui specifica il proprio indirizzo IP. Da questo momento in poi tutte le richieste e le risposte relative a tale sessione SIP passeranno quindi attraverso lo UA dell’attaccante. 36 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Victim A sip:[email protected] 192.0.1.101 SIP Proxy INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Content-Type: application/sdp Content-Length: 125 Attacker sip:[email protected] 192.0.3.103 SIP/2.0 302 Moved Temporarily Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=46453645 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 125 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Content-Type: application/sdp Content-Length: 125 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Record-Route: <sip:192.0.3.103;lr> Content-Type: application/sdp Content-Length: 125 Figura 4.4 - 302 Response code message: flusso dei messaggi di attacco Quando l’attaccante genera un messaggio 302 Moved Temporarily indica in esso nel campo Contact il proprio indirizzo IP, analogamente accade nel campo Record-Route del messaggio inoltrato. Questi rappresentano le uniche tracce lasciate nella comunicazione dall’azione dell’attaccante. 4.1.2.3 305 Response code message Analogamente a quanto descritto nel paragrafo Impersonating a server: Proxy Server, scopo di questo attacco è divenire il Proxy Server della vittima, utilizzando però unicamente messaggi SIP. Quando uno UAC riceve una risposta di tipo 305 Use Proxy, significa che la risorsa che aveva intenzione di contattare deve essere acceduta attraverso il Proxy specificato nel campo Contact. 37 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Questo tipo di risposta può essere inviata solo da UAS e lo UAC che le riceve deve riformare un nuova richiesta in base alle informazioni in essa contenute, ma tutte le successive richieste devono essere generate normalmente. L’attacco si svolge nelle seguenti fasi. Nel momento in cui la vittima genera un richiesta, l’attaccante risponde con un messaggio 305 Use Proxy, spacciandosi per l’utente chiamato e indicando nel campo Contact il proprio indirizzo IP come Proxy adatto ad inoltrare il messaggio. A questo punto lo UAC della vittima rigenera una nuova richiesta indirizzandola verso l’attaccante, che, analogamente ai casi visti precedentemente, deve inoltrare verso il legittimo destinatario. Aggiungendovi inoltre il campo Record-Route nell’intestazione fa in modo che tutti i messaggi relativi al dialogo passino attraverso di lui. Victim A sip:[email protected] 192.0.1.101 SIP Proxy INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Content-Type: application/sdp Content-Length: 125 Attacker sip:[email protected] 192.0.3.103 SIP/2.0 305 Use Proxy Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=46453645 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:192.0.3.103> Content-Type: application/sdp Content-Length: 125 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Content-Type: application/sdp Content-Length: 125 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Record-Route: <sip:192.0.3.103;lr> Content-Type: application/sdp Content-Length: 125 Figura 4.5 - 305 Response code message: flusso dei messaggi di attacco 38 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Poiché la risposta 305 ha validità solamente per la richiesta a cui si riferisce, il client che la riceve non memorizza assolutamente il campo Contact che indica l’indirizzo IP dell’attaccante. Per questo motivo la vittima non dovrebbe accorgersi dell’attacco che sta avvenendo. L’unica traccia che indica l’intrusione di un client non autorizzato nella comunicazione di segnalazione è costituita dal campo Record-Route inserito dall’attaccante. 4.1.2.4 Impersonating a server: Registrar server Scopo di quest’attacco è di impersonare lo UAS che riceve l’invito alla partecipazione ad una comunicazione avvelenando il Location Service del dominio di appartenenza della vittima. Un utente malizioso può inviare messaggi di risposta spacciandosi per il Registrar Server del dominio cui appartiene la vittima. Agire da Man in the Middle in questo modo evita di prestare continuamente attenzione al traffico di segnalazione che le due vittime si scambiano, mentre è sufficiente concentrare l’attenzione unicamente nella fase preliminare di registrazione dello UAC della vittima. Nel momento in cui intercetta una richiesta REGISTER, l’attaccante tempestivamente deve rispondere con un 301 Moved Permanently attraverso cui, spacciandosi per il reale Registrar Server, specifica il proprio indirizzo come quello corretto per verso cui mandare le nuove richieste di registrazione. Parallelamente a questi eventi, l’attaccante deve inoltre inviare una richiesta REGISTER al reale Registrar Server, spacciandosi per la vittima. Attacker Location Service 2) 301 Moved Permanently 6) 401 Unauthorized 7) REGISTER con credenziali per l’autenticazione 4) REGISTER’’ 5) 401 Unauthorized 8) REGISTER con credenziali della vittima 9) Store 3) REGISTER’ 1) REGISTER Victim A Registrar Server Figura 4.6 - Impersonating a Registrar Server 39 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP I Registrar Server generalmente richiedono l’autenticazione dei client che si vogliono registrare ad un dominio e quindi risponderà con un messaggio 401 Unauthorized in cui sono specificati tutti i campi necessari a fare ciò – Nonce, Realm, Algorithm... A questo punto lo UAC della vittima, credendo l’attaccante il Registrar Server del dominio, spedirà ad esso una nuova richiesta di registrazione. All’attaccante non resta che inoltrare verso la vittima il messaggio 401 per ottenere come risposta le credenziali necessarie a registrarsi a nome della vittima. Quando dunque arriveranno al Proxy Server che gestisce il dominio delle richieste indirizzate verso la vittima, esso, interrogando il Location Service, otterrà come risposta l’indirizzo dell’attaccante. Ad esso non basta che inoltrare tali messaggi verso il reale destinatario per essere il Man in the Middle. Le tracce lasciate in quest’attacco sono alquanto evidenti, dato che nel Location Service è memorizzato il binding relativo al contact address dell’attaccante. Ovviamente però tali tracce non sono permanenti, giacchè se tali binding non vengono aggiornati periodicamente, allo scadere di un intervallo stabilito vengono cancellati definitivamente. 4.1.3 Denial of Service 4.1.3.1 Tearing down a session L’obiettivo di questo attacco è abbattere un dialogo o una sessione SIP senza farne parte. Si considera il caso in cui un utente malizioso riesce ad ottenere, attraverso un’attività di sniffing, i parametri che i partecipanti ad un dialogo SIP si stanno scambiando nei messaggi di instaurazione: Call-ID, To e From. La fase di instaurazione della comunicazione è costituita dalla richiesta di INVITE generata dall’utente chiamante, dalla risposta – eventualmente affermativa – di tipo 200 OK generata dall’utente chiamato e infine dalla conferma di avvenuta ricezione e accettazione dei parametri della sessione attraverso la richiesta ACK generata anch’essa dal chiamante. In questo scambio di messaggi il chiamante stabilisce il valore del campo Call-ID dell’intestazione e del campo Tag all’interno del campo From dell’intestazione. Il chiamato completa la tripletta che identifica il dialogo SIP aggiungendo alla risposta 200 OK il campo Tag all’interno del campo To dell’intestazione. Questi tre parametri identificano univocamente il dialogo SIP che è stato instaurato, ed ogni messaggio che modifica tale dialogo deve avere questi parametri. Per questo motivo, l’attaccante generando un messaggio di BYE – che termina i dialoghi SIP – deve inserire i parametri della sessione che vuole abbattere. A questo punto l’abbattimento della sessione è avvenuta solamente in una direzione perchè un client non ha ricevuto alcun messaggio ed è quindi convinto che la comunicazione sia ancora in atto. Per abbattere completamente la sessione e quindi evitare che rimanga pendente, l’attaccante deve mandare un messaggio di BYE al 40 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP chiamato ed uno al chiamante, spacciandosi per il chiamante nel primo caso e per il chiamato nel secondo. SIP Proxy SIP Proxy 200 OK 200 OK 200 OK 200 OK 200 OK 200 OK Victim B Victim A BYE da Victim B Attacker BYE da Victim A Figura 4.7 - Tearing down a session: BYE verso le due vittime In questa tipologia di attacco non vi sono tracce lasciate dall’utente malizioso, giacchè tutti gli indirizzi – a livello IP e a livello applicativo (SIP) – sono falsificati. 4.1.3.2 Modifying a session Lo scopo di questo attacco è fare in modo che i due partecipanti ad una sessione SIP, attraverso una transazione di re-INVITE, non riescano più a fruire dei contenuti multimediali perchè utilizzano codificatori audio differenti Il three-way-handshake che inizializza un dialogo SIP – INVITE, 200 OK e ACK - consente agli UA di negoziare i parametri della sessione multimediale. Questa negoziazione avviene attraverso lo scambio di messaggi SDP [11] tra lo UAC e lo UAS. Ossia, lo UAC allega all’INVITE iniziale un messaggio SDP in cui elenca tutti i media capabilities che è in grado di supportare, le porte per RTP e RTCP su cui vuole ricevere il flusso multimediale ed altre informazioni. Lo UAS risponde con un 200 OK in cui è impacchettato un messaggio SDP contenente la media capability che supporta e le porte RTP/RTCP. Il protocollo SIP prevede che questi parametri possano essere contrattati anche durante lo svolgimento di una sessione, e non solo durante la fase iniziale, inviando una nuova richiesta di INVITE all’interno del dialogo SIP esistente. Questo messaggio viene appunto detto re-INVITE. Sia il chiamante che il chiamato possono inviare un re-INVITE. Qualora venissero proposti dei parametri che la controparte non è in grado di supportare, la proposta viene rifiutata attraverso una risposta di tipo 488 Not Acceptable Here. La sessione SIP non risentirebbe del fallimento del re-INVITE perchè i parametri rimangono quelli nell’ultima proposta negoziata ed accettata. Se, al contrario, i parametri vengono accettati dalla controparte la procedura si conclude con una risposta 200 OK e un ACK, analogamente a quanto accade nella fase di start-up. 41 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Si considera anche in questo caso uno scenario in cui l’attaccante riesca a catturare il traffico che inizializza la sessione SIP, in modo da carpire i parametri che caratterizzano il dialogo. Qualora lo UAC proponesse più media capabilities allo UAS, l’attaccante può sfruttare queste informazioni una volta che la sessione è instaurata inviando allo UAC un re-INVITE spacciandosi per lo UAS. In caso contrario l’attaccante può notificare nella re-INVITE un cambio di porta o di protocollo di trasporto, giungendo allo stesso esito. La vittima – lo UAC – accetterà tali cambiamenti inviando verso lo UAS una risposta 200 OK all’INVITE. A questo punto l’attaccante per renderli effettivi, deve confermare il tutto attraverso un messaggio di ACK, spacciandosi sempre per lo UAS. Da questo momento in poi la rinegoziazione dei parametri rende incomprensibile o irraggiungibile il flusso multimediale ai due partecipanti alla sessione. Attacker sip:[email protected] 192.0.3.103 Victim A sip:[email protected] 192.0.1.101 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=5345324 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.biloxy.com> Content-Type: application/sdp Content-Length: 139 ... m=audio 49100 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 49172 RTP/AVP 32 a=video 0 49200 RTP/AVP 32 ... SIP/2.0 200 OK Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=5345324 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client.atlanta.com> Content-Type: application/sdp Content-Length: 125 Victim B sip:[email protected] 192.0.2.102 ... m=audio 44100 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 44200 RTP/AVP 32 a=video 0 49200 RTP/AVP 32 ... ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=5345324 Call-ID: [email protected] CSeq: 1 ACK Contact: <sip:client1.biloxy.com> Content-Length: 0 Figura 4.8 - Modifying a session: fase di attacco Anche in questo attacco non vi sono tracce evidenti lasciata dall’azione dell’utente malizioso, visto che la sua è un’azione completamente cieca. Ossia non può avere riscontro del successo del proprio tentativo di attacco, perchè falsificando i propri indirizzi con quelli dei partecipanti alla sessione ad esso non ritorna alcuna conferma o messaggio di risposta. Solo dall’attività di sniffing è in grado di verificare l’avvenuto successo o meno della sua azione. 42 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 4.1.3.3 Vulnerabilità di SIP e RTP Cancelling a session Lo scopo di questo tipo di attacchi è rendere irraggiungibile un particolare UA cancellando le richieste di sessioni che gli pervengono o che vengono da esso generate. La richiesta CANCEL, come lo stesso nome indica, è utilizzata dagli UAC per cancellare una richiesta precedentemente inviata [1]. Specificatamente, è un comando indirizzato allo UAS destinatario della prima richiesta di interrompere ogni operazione ad essa collegata e di generare come risposta un messaggio di errore. La richiesta CANCEL non ha ovviamente alcun effetto su una richiesta per cui lo UAS abbia già generato una risposta definitiva (non 1XX). Perchè quindi una CANCEL abbia effetto, deve essere legata ad una richiesta che richiede molto tempo per essere processata. In [1] viene specificato che l’unica richiesta che richiede molto tempo di processamento è l’INVITE. Anche in questo caso l’azione di sniffing dell’attaccante sul traffico della vittima è basilare. Questa fase è resa necessaria dall’importanza dei parametri che caratterizzano un dialogo SIP e dalla necessità di tempestività che tale attacco richiede. Quando lo UAS vittima riceve una richiesta INVITE da parte di un qualunque UAC, l’attaccante deve inviare una richiesta di CANCEL ad essa riferita – e con ciò si intende che i parametri del dialogo delle due richieste devono coincidere – in modo da rendere impossibile l’instaurazione di una sessione SIP. Victim B sip:[email protected] 192.0.2.102 Victim A sip:[email protected] 192.0.1.101 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.biloxy.com> Content-Type: application/sdp Content-Length: 139 Attacker sip:[email protected] 192.0.3.103 CANCEL sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]> Call-ID: [email protected] CSeq: 2 CANCEL Content-Length: 0 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=42353245 Call-ID: [email protected] CSeq: 2 CANCEL Content-Length: 0 Figura 4.9 - Cancelling a session: fase di sniffing e attacco 43 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP La tempestività è importante perchè lo UAS accetta tale CANCEL solo se non ha ancora inviato una risposta definitiva (non 1XX) alla richiesta INVITE. Un attacco Denial of Service attraverso il metodo CANCEL può essere diretto non solo verso chi riceve degli inviti ad instaurare sessioni, ma anche verso chi li genera. Ossia, se il primo tipo di tale attacco ha l’intento di rendere irraggiungibile uno UAS da tutti gli altri client, quest’altro tipo ha lo scopo di far fallire tutti i tentativi di un particolare UAC di instaurare sessioni SIP. Per fare ciò, l’attaccante deve sniffare il traffico generato da un particolare UAC e spedire delle CANCEL falsificate dirette agli UAS che quell’UAC ha contattato. Analogamente con alcuni attacchi descritti precedentemente, visto che la richiesta di cancellazione contiene indirizzi falsificati non vi sono tracce lasciate dall’attaccante. 4.1.3.4 SIP DoS attack and amplification Lo scopo di questo attacco è rendere inutilizzabile un elemento o l’intera rete. Gli attacchi Denial of Service hanno lo scopo di rendere non disponibile un particolare elemento della rete, generalmente indirizzando verso di esso una quantità di traffico che non riesce a processare. Appare quindi evidente che l’esito di questo tipo di attacchi è strettamente legato alle scelte implementative dello UA vittima. Un attacco appartenente a questa classe consiste nell’inviare numerose richieste contraffatte contenenti un indirizzo di sorgente falsificato ed un valore del campo Via dell’intestazione che identifica l’host della vittima come uno dei nodi che ha processato tali richieste. Per creare un Denial of Service dello UA vittima, l’attaccante deve inviare questa richiesta a diversi destinatari esistenti – UA o server – i quali rispondendo creeranno una quantità di traffico tale da rendere la macchina della vittima inutilizzabile. In maniera del tutto simile l’attaccante può mandare delle richieste contraffatte in cui inserisce nel campo Route dell’intestazione l’indirizzo della vittima ai Proxy Server che biforcano le richieste. Infatti un Proxy Server, quando processa una richiesta, può inoltrarla a diverse location dell’utente allo stesso tempo. Questo tipo di ricerca parallela è conosciuta come forking. La caratteristica del forking è che ogni richiesta che viene inoltrata a più di una location deve essere gestita stateful, ossia il Proxy Server deve mantenere uno stato della richiesta in memoria. In questo modo i Proxy Server amplificano il numero di messaggi inviati alla vittima. Anche il campo Record-Route dell’intestazione può essere utilizzato per questo tipo di attacchi. Quando infatti un attaccante è certo che il dialogo SIP iniziato da una sua richiesta contraffatta 44 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP provoca un voluminoso traffico nel verso opposto, può inserire nel campo Record-Route l’indirizzo della vittima, che quindi riceverà una quantità notevole di traffico indesiderato. Una tipologia di attacchi appartenenti a questa tipologia hanno successo perchè le richieste REGISTER non richiedono l’autenticazione di chi le genera. Un attaccante può infatti cancellare i bindings della vittima o addirittura di tutti i componenti di un dominio per renderli completamente irraggiungibili. Oppure si consideri il caso in cui un utente malizioso riesca a registrare il contact address della vittima come address-of-record di numerosi utenti della rete, rendendo il Registrar Server una sorta di amplificatore dei messaggi. Visto che l’attaccante in ogni messaggio che genera falsifica l’indirizzo di sorgente, non vi sono tracce evidenti dell’attaccante. Resta comunque il fatto che generare troppo traffico da una stessa sorgente può risultare molto sospetto ad elementi di rete come IDS. INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 Via: SIP/2.0/UDP 0.0.0.0:5060 From: <[email protected]>;tag=12334 To: <[email protected]> Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client.site.com> Content-Type: application/sdp Content-Length: 139 Victim A sip:[email protected] 192.0.1.101 Attacker sip:[email protected] 192.0.3.103 Figura 4.10 - SIP DoS attack 4.1.3.5 Response code messages Un attaccante può utilizzare diversi tipi di response allo scopo di introdurre delle condizioni di Denial of Service di uno UA. In base alla classificazione specificata in [1] le classi di risposte che possono essere utili a questo scopo sono le ultime tre, ossia: ¾ 4XX Request Failure – sono messaggi inviati da un particolare server dopo che il processamento di una richiesta, che contiene un errore di sintassi o non può essere processata dal server stesso, fallisce ¾ 5XX Server Failure – il server non è riuscito a processare una richiesta apparentemente corretta ¾ 6XX Global Failure – indica che un server ha delle particolari informazioni di un utente che possono differire da quelle indicate nella richiesta 45 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Questo tipo di risposte possono contenere un campo dell’intestazione – Contact – che indica la locazione dove è possibile reperire ulteriori informazioni sull’errore segnalato. Sniffando il traffico dello UAC scelto come vittima, l’attaccante per perpetrare tale tipo di attacco deve inviare ad esso una risposta di errore ogni volta che generi una richiesta. Ovviamente a seconda che si scelga risposte di tipo 4XX, 5XX o 6XX si deve falsificare l’indirizzo di sorgente delle risposte o come quello del destinatario della richiesta o come di un Proxy Server che serve la vittima. Inoltre tutti i parametri che caratterizzano il dialogo SIP, cioè il Tag locale e remoto, il CallID devono coincidere tra richiesta generata dallo UAC vittima e risposta dell’attaccante, altrimenti la risposta maliziosa verrà scartata dallo UAC. La richiesta della vittima giungerà comunque alla destinazione legittima, che dopo averla processata, produrrà una risposta. Questa quando giungerà allo UAC vittima verrà considerata un errore e quindi scartata, visto che ha già ricevuto una risposta definitiva – quella maliziosa dell’attaccante. Se viene ripetuto tale processo per ogni richiesta, l’attaccante riuscirà ad isolare la vittima producendo un Denial of Service. Victim A 1) Request SIP 2) 4XX, 5XX o 6XX Response Attacker Figura 4.11 - DoS: response code messages Poichè l’attaccante falsifica l’indirizzo di sorgente delle rispose maliziose, la vittima non ha possibilità di scoprire chi abbia mandato tali messaggi e quindi non può scoprire l’identità dell’attaccante. 4.1.3.6 Toll Fraud Generalmente per le operazioni di tariffazione – billing – si utilizzano Proxy Server Stateful, quindi attaccare tali server può consentire di utilizzare il servizio a pagamento in maniera gratuita. Attacchi di questo tipo sono specifici della particolare implementazione di billing. Si possono ad esempio sfruttare delle vulnerabilità del software utilizzato per penetrare nel sistema e configurare 46 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP maliziosamente le politiche di billing. Scopo di questa sezione è quindi non descrivere tali attacchi, ma sottolineare come i Proxy Server che afferiscono a tali scopi sono elementi della rete particolarmente attraenti per gli attaccanti. Le informazioni di billing si basano sui Call Detail Recording (CDR), ossia delle informazioni sulle chiamate. L’instaurazione e l’abbattimento delle chiamate, che avvengono attraverso dei messaggi SIP che vengono processati dai Proxy Server del dominio, aggiornano tali CDR per poter calcolare la tariffazione da applicare all’utente. Ovviamente per fare ciò, la segnalazione deve passare per determinati Proxy Server che aggiornano i CDR. E’ importante sottolineare che il percorso che la segnalazione SIP impiega può essere diverso da quello del flusso multimediale, e quindi i Proxy Server coinvolti nella segnalazione possono essere evitati dal traffico voce – ad esempio pacchetti RTP/RTCP. Un modo semplice per evitare di aggiornare i CDR è quello di incapsulare la segnalazione SIP in messaggi RTP o RTCP. Questo ovviamente prevede che entrambi i terminali di comunicazione dispongano di applicazioni particolari che sappiano decapsulare i messaggi SIP da quelli RTP o RTCP e successivamente processarli. In questo modo il Proxy Server non processa alcun messaggio di segnalazione tra i due partecipanti alla comunicazione e quindi non è disponibile alcuna informazione per aggiornare i CDR. 4.2 RTP 4.2.1 Man in the Middle 4.2.1.1 Modifying IP address L’obiettivo di questo attacco è interporsi tra gli utenti che partecipano ad una comunicazione attraverso la generazione di un messaggio di re-INVITE in cui si modificano i parametri del dialogo, in particolare l’indirizzo IP. Più precisamente, un utente malizioso può iniziare una procedura di re-INVITE con un utente coinvolto in una sessione SIP spacciandosi per la controparte e dichiarare che l’indirizzo IP in cui desidera ricevere il flusso multimediale è cambiato e fornire il proprio come quello nuovo. Appare evidente che se l’attaccante riuscisse a cambiare questi parametri con entrambe le parti coinvolte nella sessione allora riceverebbe il flusso multimediale da entrambe le direzioni della comunicazione. Per completare l’attacco di Man in the Middle deve ovviamente inoltrare il traffico verso i legittimi destinatari in modo che l’intrusione non venga rilevata. 47 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Anche questo attacco necessita una fase preliminare di sniffing dell’instaurazione della sessione SIP, fase necessaria all’attaccante per carpire i parametri che caratterizzano il dialogo e sui quali formerà le richieste di re-INVITE. Una volta che la sessione è stata instaurata con successo dalle due vittime, l’utente malizioso deve avviare una transazione di re-INVITE parallelamente con entrambe in cui dichiara, spacciandosi per la controparte, che l’indirizzo su cui si vuole ricevere il flusso RTP, specificato nel campo c del messaggio SDP, è cambiato ed il nuovo è quello proprio. Poiché è un attacco di tipo cieco, ossia l’attaccante falsifica tutti gli indirizzi anche a livello IP, l’attaccante non può ricevere la risposta 200 OK alla richiesta di re-INVITE. Dopo che si è assicurato che tale risposta sia passata nella rete, deve inviare un messaggio di ACK con cui termina la rinegoziazione dei parametri della sessione. A questo punto è in grado di ricevere il flusso multimediale da entrambe le direzioni della comunicazione e per rimanere trasparente alla vista degli utenti deve inoltrare il flusso RTP verso i legittimi destinatari falsificando l’indirizzo di sorgente dei pacchetti IP in cui sono incapsulati. Victim A sip:[email protected] 192.0.1.101 Victim B sip:[email protected] 192.0.2.102 flusso RTP tra Victim A e Victim B Attacker sip:[email protected] 192.0.3.103 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=5432532 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.biloxi.com> Content-Type: application/sdp Content-Length: 125 INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=5432532 To: <[email protected]>;tag=12314534 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:client1.atlanta.com> Content-Type: application/sdp Content-Length: 125 ... c=IN IP4 192.0.3.103 ... ... c=IN IP4 192.0.3.103 ... SIP/2.0 200 OK Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=5432532 Call-ID: [email protected] CSeq: 1 INVITE Contact: <sip:client1.atlanta.com> Content-Type: application/sdp Content-Length: 132 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=5432532 To: <[email protected]>;tag=12314534 Call-ID: [email protected] CSeq: 2 INVITE Contact: <sip:client1.biloxi.com> Content-Type: application/sdp Content-Length: 129 ... c=IN IP4 192.0.1.101 ... ... c=IN IP4 192.0.2.102 ... ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.2.102:5060 From: <[email protected]>;tag=12314534 To: <[email protected]>;tag=5432532 Call-ID: [email protected] CSeq: 1 ACK ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP 192.0.1.101:5060 From: <[email protected]>;tag=5432532 To: <[email protected]>;tag=12314534 Call-ID: [email protected] CSeq: 2 ACK flusso RTP tra Victim A e Victim B flusso RTP tra Victim A e Victim B Figura 4.12 - Modifying IP address 48 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Si noti che i due messaggi di INVITE generati dall’attaccante sono differenti, in quanto i tag locali e remoti dei due client sono invertiti e quindi affinchè l’attacco abbia successo le richieste di reINVITE devono rispettare questa convenzione. Inoltre anche il CSeq è differente, poichè esso viene gestito separatamente lato UAC e lato UAS, quindi quando l’utente malizioso si spaccia per il chiamante deve aggiornare il campo CSeq del re-INVITE secondo quanto sniffato nella fase di instaurazione della sessione. Nel verso opposto della comunicazione, se il chiamato non ha ancora effettuato alcuna richiesta durante tale dialogo, il campo numerico del CSeq può assumere qualsiasi valore. In questo attacco le tracce lasciate dall’attaccante sono continuamente visibili, giacchè il proprio indirizzo IP è il destinatario del flusso multimediale da entrambi i versi della comunicazione. Resta il fatto che la procedura di cambiamento di indirizzo IP è considerata legale [9] e quindi non dovrebbe destare alcun sospetto agli utilizzatori. 4.2.2 Denial of Service Negli attacchi descritti in seguito ha un’importanza fondamentale la fase di lancio, che ora verrà analizzata in maggior dettaglio per poi passare ad analizzare le diverse vulnerabilità che possono essere sfruttate da utenti maliziosi. 4.2.2.1 Fase di lancio La possibilità di effettuare un attacco di tipo Denial of Service è vincolata all’inizializzazione delle sessioni RTP tramite SIP e RTSP, in quanto tali protocolli di segnalazione se manipolati in maniera opportuna offrono all’attaccante la possibilità di indirizzare un flusso consistente di pacchetti RTP da un server di rete, che appunto assumerà la funzione di trampolino di lancio verso un bersaglio ben definito. Quindi affinchè sia possibilie effettuare un attacco del genere è necessaria la presenza di server nella rete pubblica che, attraverso dei protocolli come SIP e RTSP, forniscano la possibilità di creare un ampio numero di sessioni RTP dirette verso la vittima. Bisogna infatti considerare che i flussi RTP potenzialmente necessitano di un’ampia quantità di banda e quindi presentano già delle caratteristiche che facilitano il compito degli utenti maliziosi. Nel caso di SIP, tutti i device che accettano in ingresso un ampio numero di chiamate, come i server IVR (Interactive Voice Response), i gateway telefonici, i server per teleconferenze, i sistemi voicemail, hanno un’importanza strategica perchè rappresentano una possibile fonte di traffico indesiderato. Questa tipologia di traffico può essere portato a termine con successo anche in caso sia necessaria un’autenticazione dell’utente, anche se ciò fornisce informazioni sulla tracciabilità. 49 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Come definito in [16], invece, un server RTSP produce un ampio numero di sessioni RTP con i client ad esso connessi. Per questo motivo molti attaccanti li utilizzano come trampolini di lancio per attacchi Denial of Service. Una volta noto l’indirizzo IP della vittima, l’aggressore instaura un numero notevole di sessioni RTP attraverso i protocolli di segnalazione, a seconda del tipo di server: nel caso di SIP deve spedire un messaggio di INVITE con un corpo SDP in cui viene specificato che l’indirizzo su cui si vuole ricevere il flusso multimediale è quello della vittima, mentre nel caso RTSP si deve configurare il campo Transport dell’intestazione del messaggio di richiesta. Se il server accetta automaticamente la segnalazione ed instaura una sessione, il client può creare potenzialmente un ampio numero di sessioni RTP indirizzate tutte verso un singolo bersaglio. Con SIP è particolarmente semplice lanciare l’attacco in quanto non dispone di nessuna misura specifica per controllare che l’indirizzo IP nel corpo SDP coincida con l’indirizzo sorgente dei messaggi di segnalazione. Ciò non costituisce una svista, ma una presa di posizione in quanto non è ritenuto corretto fare un controllo nella segnalazione di un sistema peer-to-peer [1]. 4.2.2.2 Malicious payload format Questo tipo di attacchi sfrutta le vulnerabilità delle implementaizioni software del protocollo per saturare le capacità operative dell’apparato ricevente. Infatti, per ogni soluzione implementata del protocollo è prevista l’esistenza di due tipologie di documenti di accompagnamento: • documento di specifica del profile che definisce i payload type possibili, estensioni e campi particolari dell’intestazione standard • documento di specifica del payload format che delinea come un particolare payload, ad esempio una codifica audio o video, deve essere trasportato nel pacchetto RTP Attraverso l’utilizzo di quei payload format che prevedono l’utilizzo della compressione, l’attaccante deve inserire nel flusso dei pacchetti legali alcuni che hanno un carico computazionale non uniforme con le specifiche del terminale ricevente. Quindi in presenza di particolare payload format un utente malizioso ha la possibilità di inserire all’interno di un flusso RTP dei pacchetti infetti, che sono complessi da decodificare e causano la degradazione delle prestazioni della macchina vittima. Per inserirsi nella sessione RTP a cui partecipa la vittima, l’attaccante deve conoscerne i valori dei parametri che la caratterizzano; tra essi il campo SSRC, le porte UDP utilizzate per il flusso RTP e RTCP ed il payload type dell’intestazione. 50 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Una volta all’interno della sessione, l’attaccante tramite tool specifici in grado di forgiare pacchetti RTP con determinate caratteristiche invita flussi d’informazione (audio o video) ed all’interno appunto introduce pacchetti maliziosi come descritto in precedenza. Pacchetto malicious OK OK Flusso RTP Flusso RTP Victim A Attacker Overhead della vittima Figura 4.13 - Malicious payload format 4.2.2.3 RTCP timing rules incorrectly Lo scopo di questo tipo di attacco è congestionare i collegamenti utilizzati in una particolare sessione RTP sfruttando il traffico generato tramite il protocollo RTCP per informazioni di controllo. Le regole per la temporizzazione del traffico RTCP definite in [12] stabiliscono che l’intervallo di emissione dei pacchetti RTCP da parte di ogni partecipante deve essere determinato in modo che: • ogni partecipante abbia a disposizione la stessa banda di controllo • il traffico di controllo complessivo non superi una piccola percentuale della banda assegnata alla sessione, il valore suggerito è il 5% • almeno il 25% della banda RTCP deve essere riservato ai partecipanti attivi (emissione dei messaggi SR), il restante 75% ai partecipanti non attivi (emissione dei messaggi RR) L’algoritmo di calcolo dell’RTCP Transmission Interval permette la determinazione dell’intervallo di tempo tra due trasmissioni consecutive di un pacchetto RTCP. Tale intervallo varia linearmente con il numero di partecipanti alla sessione ed inoltre per evitare fenomeni di auto sincronizzazione dei partecipanti il valore effettivo viene variato in modo casuale tra 0.5 e 1.5 volte il valore calcolato concretamente dall’algoritmo matematico. Quindi è fondamentale che il numero dei partecipanti ad una sessione sia continuamente monitorato da ciascun componente della sessione stessa, infatti secondo [12] ogni partecipante deve gestire una lista continuamente aggiornata degli utenti partecipanti alla sessione: • nuovi partecipanti sono aggiunti alla lista non appena sono rilevati tramite la ricezione di pacchetti RTP – analizzando in essi il campo SSRC e CSRC 51 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP • Vulnerabilità di SIP e RTP vecchi partecipanti sono eliminati dalla lista in corrispondenza della ricezione di un pacchetto BYE o se nessun pacchetto RTP o RTCP viene ricevuto in un determinato intervallo di tempo predefinito Per analizzare nel dettaglio come è strutturato l’algoritmo e quale possibilità offre è necessario introdurre le variabili che una sorgente standard RTCP deve gestire: • t_packet – istante di trasmissione dell’ultimo pacchetto RTCP • t – tempo corrente • t_next – istante previsto di trasmissione del successivo pacchetto RTCP • members_old – stima del numero di partecipanti ad una sessione all’istante in cui è stato calcolato t_packet per l’ultima volta • members – ultima stima del numero di partecipanti ad una sessione • senders – ultima stima del numero di partecipanti attivi in una sessione • avg_rtcp_size – dimensione media dei pacchetti RTCP mediata su tutti i partecipanti alla sessione • rtcp_bw – banda complessiva riservata al traffico RTCP • we_sent – è posto ad 1 se la sorgente è attiva, altrimenti è 0. La sorgente è considerata attiva se ha emesso dati in un intervallo di tempo precedente di ampiezza uguale a 2 RTCP Transmissione Interval Per motivi di semplicità notazionale si considerano: • S – numero di senders • R – numero di receivers • M – numero di members Allora l’intervallo tra due pacchetti RTCP consecutivi varia tra quattro opzioni: If [s<=0.25 M] and [we_sent=1] t_next=[avg_rtcp_size/0.25 rtcp_bw] If [s<=0.25 M] and [we_sent=0] t_next=[avg_rtcp_size/0.75 rtcp_bw] If [s=>0.25 M] and [we_sent=1] t_next=[avg_rtcp_size/(S/S+R)rtcp_bw] If [s=>0.25 M] and [we_sent=0] t_next=[avg_rtcp_size/(R/S+R)rtcp_bw] Per realizzare questo attacco è necessario utilizzare strumenti tipici di un Distribuited Denial of Service, in cui l’attaccante attraverso l’azione di nodi di rete detti master controlla l’azione di molti altri dispositivi detti daemon. A questi ultimi è affidato il compito di condurre un’azione di Denial of Service coordinata attraverso l’azione dei master contro la vittima, che in questo caso corrisponde all’indirizzo di multicast della sessione RTP presa di mira. I daemon nel momento in cui ricevono un segnale di avvio devono inviare pacchetti RTCP a ritmo costante, senza curarsi del numero di partecipanti (t_next = cost). Quindi considerando che questo comportamento anomalo viene replicato da un numero consistente di macchine tutte appartenenti 52 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP alla stessa sessione, allora è facile intuire che si raggiungerà una situazione di congestione significante dei collegamenti visto che il traffico RTCP crescerà linearmente con il numero di partecipanti. Attacker Sessione RTP Traffico RTCP a ritmo costante Traffico RTCP corretto Master Master Master Daemon Multicast IP Victim A Figura 4.14 - RTCP timing rules incorrectly 4.2.2.4 Change Synchronization Source fileld Questo attacco Denial of Service ha l’obiettivo di rendere inutilizzabile il servizio ad un utente facente parte di una session RTP sfruttando le caratteristiche che riguardano la gestione delle collisioni degli SSRC identifier. Come descritto già in precedenza, il campo SSRC dell’intestazione del pacchetto RTP identifica la sorgente di un flusso multimediale. Tutti i pacchetti con la stessa Synchronization Source devono avere lo stesso riferimento temporale e lo stesso generatore di Sequence Number, in modo che il ricevitore possa riordinare correttamente i pacchetti per la riproduzione. L’SSRC viene scelto dal client RTP in maniera casuale in modo da essere probabilisticamente unico all’interno di una sessione, per questo motivo tutte le implementazioni RTP e RTCP devono essere in grado di rilevare e gestire le collisioni. In [12] è specificato che la rilevazione avviene attraverso un algoritmo che si basa su due principi cardine: • pacchetti con medesimo SSRC identifier ma con indirizzo di sorgente differente sono spesso caratteristici di una collisione • la presenza di pacchetti RTCP SDES con chunk caratterizzati da uno stesso SSRC ma da un diverso CNAME identifica una collisione 53 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP L’algoritmo è articolato nel modo seguente: • ogni client RTP mantiene una tabella (Source Identifier Table) indicizzata in base agli SSRC identifier a cui vengono associati i corrispondenti indirizzi di trasporto (indirizzo IP e porta UDP) della sorgente. Queste informazioni vengono reperite dal primo pacchetto ricevuto, sia esso di dati che di controllo • da ogni pacchetto RTP o RTCP ricevuto si estrae il valore del SSRC o CSRC e si accede alla tabella. Qualora non fosse presente, viene creata una nuova associazione. Nel caso contrario, l’indirizzo di trasporto del pacchetto viene comparato con quello memorizzato nella tabella e se coincidenti il pacchetto viene considerato legittimo, altrimenti si è verificata una collisione od un loop • le associazioni nella tabella vengono eliminate quando si riceve un pacchetto RTCP BYE oppure dopo un lungo periodo di inattività • l’ultimo passo è rappresentato dalla creazione di una lista separata di tutti gli indirizzi di trasporto delle sorgenti (distinguendo il traffico RTP da quello RTCP) che hanno precedentemente causato conflitti L’aspetto che un attaccante può sfruttare è che l’algoritmo prevede che i pacchetti provenienti dalle sorgenti che hanno generato una collisione vengano scartati, in modo da evitare in occorrenza di loop un flusso dilagante di pacchetti RTCP BYE. L’obiettivo dell’attacco è fare in modo che la vittima veda continuamente all’interno della propria sessione un traffico di pacchetti RTP con il suo stesso SSRC e quindi, dovendosi attenere alle specifiche del protocollo [12], sia costretto ad inviare un pacchetto RTCP BYE con il vecchio SSRC ed iniziare un nuovo flusso con SSRC differente. In questo modo il sender deve continuamente evitare le collisioni create ad arte dall’attaccante e contemporaneamente il receiver deve scartare i pacchetti legali perchè anch’esso, grazie alla Source Identifiers Table, si è accorto che è avvenuta una collisione. L’attaccante quindi deve essere in grado di sniffare la rete su cui viaggiano le informazioni trasportate dai protocolli RTP/RTCP per individuare continuamente quale SSRC viene utilizzato dalla vittima. Victim A 192.0.1.101 Attacker 192.0.3.103 Sessione RTP RTP RTP (spoofing) SSRC = ABCD1234 SSRC = ABCD1234 IP = 192.0.1.101 IP = 192.0.1.199 RTCP BYE SSRC = ABCD1234 RTP RTP (spoofing) SSRC = EFGH5678 SSRC = EFGH5678 IP = 192.0.1.101 IP = 192.0.1.199 ... ... Figura 4.15 - Change Synchronization Source field 54 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP E’ inoltre fondamentale conoscere le caratteristiche implementative dell’algoritmo utilizzato dal client RTP per gestire le collisioni, in quanto possono verificarsi delle condizioni che causano lo scarto dei pacchetti immediatamente, come nel caso di collisioni causate ripetutamente dalla stessa sorgente. Ciò avviene perchè questa situazione viene associata all’esistenza di un loop tra sender e receiver. Quindi l’attaccante deve essere abile nel camuffare volta per volta l’indirizzo di trasporto della sorgente da cui farà partire il pacchetti RTP/RTCP maliziosi. 4.2.2.5 BYE attack Questo attacco viene considerato come una variante del precedente, in quanto anch’esso sfrutta una debolezza intrinseca del protocollo RTP con l’obiettivo di negare il servizio ad un determinato partecipante ad una sessione RTP. In questo caso però non viene sfruttata alcuna debolezza dell’algoritmo di gestione delle collisioni, ma molto più semplicemente un utente malizioso, spacciandosi per la vittima, invia agli altri partecipanti alla sessione un messaggio RTCP BYE terminando così ogni flusso multimediale. Ripetendo questo procedimento tutte le volte che la vittima cerca di accedere nuovamente alla sessione, si ottiene un attacco di tipo Denial of Service. Victim A 192.0.1.101 Attacker 192.0.3.103 Sessione RTP RTP RTCP BYE (spoofing) SSRC = ABCD1234 SSRC = ABCD1234 IP = 192.0.1.101 IP = 192.0.1.101 Port = 5004 Port = 5005 … la vittima rinizia il processo di accesso … RTP RTCP BYE (spoofing) SSRC = EFGH5678 SSRC = EFGH5678 IP = 192.0.1.101 IP = 192.0.1.101 Port = 5004 Port = 5005 Figura 4.16 - BYE attack 4.2.2.6 Sequence Number and Timestamp higher Scopo di questo tipo di attacco è de-sincronizzare sender e receiver in modo da rendere del tutto inutilizzabili i pacchetti che costituiscono il flusso multimediale RTP tra essi. 55 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Perchè abbia successo l’attaccante deve operare inizialmente una fase di sniffing durante la quale viene a conoscenza dei parametri che caratterizzano la sessione RTP necessari perchè riesca ad intromettersi nella comunicazione. Successivamente deve creare dei pacchetti RTP opportunamente falsificati in modo che sembrino generati dal sender ed inserirvi nei campi Sequence Number e Timestamp dei valori molto più alti di quelli catturati durante la fase di sniffing. I pacchetti maliziosi quando vengono accettati dal ricevitore, giacché non è presente alcuna anomalia, sincronizzano il client RTP sui valori specificati nei campi Timestamp e Sequence Number. L’attacco ha effetto nel momento in cui al ricevitore giungono i pacchetti generati dal sender, pacchetti che presentano un valore del Timestamp e del Sequence Number più bassi di quelli su cui si è sincronizzato e quindi vengono considerati fuori sequenza e di conseguenza scartati. Il successivo flusso da sender a receiver verrà quindi scartato, poiché il sender non ha modo di conoscere i valori temporali che il receiver si aspetta di ricevere. Victim A 192.0.1.101 Attacker 192.0.3.103 Victim B 192.0.1.102 RTP RTP SSRC = ABCD1234 SSRC = ABCD1234 IP = 192.0.1.101 IP = 192.0.1.101 Port = 5004 Port = 5004 seq_num = 10 seq_num = 100 timestamp = 11 timestamp = 101 RTP SSRC = ABCD1234 IP = 192.0.1.101 Port = 5004 scartato perché obsoleto seq_num = 11 timestamp = 12 Figura 4.17 - Sequence Number and Timestamp higher 4.2.2.7 Injecting malicious Reception Reports (RR) Scopo di questo attacco è forzare la vittima a cambiare la codifica audio e video durante la sessione. Nel dettaglio, l’intento dell’attaccante è quello di mitigare la qualità della comunicazione imponendo o l’utilizzo di un codificatore con bassa qualità, oppure uno di qualità maggiore rispetto a quello in uso che provoca un intasamento della pila di memoria. I messaggi utilizzati in questo attacco sono i Reception Report del protocollo RTCP. 56 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Figura 4.18 - Pacchetto Reception Report di RTCP Ponendo l’attenzione solo sui Report Block in cui sono contenute le informazioni sensibili, i campi del pacchetto sono: • SSRC_n – indica la sorgente di streaming a cui si riferiscono le informazioni del report block specifico • Fraction Lost – indica la frazione dei pacchetti RTP delle sorgente SSRC_n che non sono stati ricevuti sino all’istante di emissione del pacchetto RR stesso • Cumulative number of packet lost – indica il numero totale di pacchetti RTP provenienti dall’SSRC_n che non sono stati ricevuti. Tale numero è calcolato dalla differenza tra il numero di pacchetti previsti e quelli attualmente ricevuti • Extended highest sequence number received – è diviso in due parti, i secondi 16 bit contengono il valore più elevato ricevuto dal numero di sequenza di pacchetti RTP, mentre i primi 16 bit contengono il numero di ciclo raggiunto dal contatore dall’inizio del conteggio • Interarrival Jitter – indica una stima della varianza statistica del tempo di interarrivo dei pacchetti RTP • LSR Last SR Timestamp – è il valore del Timestamp del più recente pacchetto RTCP ricevuto da SSRC_n • DLSR Delay Since Last SR – indica il ritardo che intercorre tra l’istante di ricezione dell’ultimo pacchetto RTCP da parte di SSRC_n e l’istante di invio del presente pacchetto di Reception Report L’attaccante deve quindi iniettare all’interno di una sessione RTP, di cui ha catturato i parametri, una serie di falsi RR indirizzati tutti al medesimo bersaglio, riportando: • una maggior perdita di pacchetti rispetto quella reale • un bit error maggiore di quello reale 57 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Entrambe queste azioni possono causare in un codificatore adattativo ad utilizzare un codec di minore qualità. Per iniettare tali pacchetti, l’utente malizioso deve camuffare la propria identità, come mostrato già nei precedenti attacchi, ed inoltre deve reperire informazioni utili, come il tipo di codec utilizzato, il Last SR Timestamp, la stima del Jitter e l’attuale Fraction Lost. 4.3 Implementazione degli attacchi In questo paragrafo verranno descritti i passi intrapresi per realizzare all’atto pratico alcuni degli attacchi descritti precedentemente. Tale lavoro di sperimentazione è stato principalmente svolto presso il laboratorio multimediale di IT Telecom del gruppo Telecom Italia S.p.A. Degli attacchi descritti precedentemente verranno presi in considerazione solo alcuni. Per quanto riguarda gli attacchi ad un’architettura VoIP verrà dato esempio di un Man in the Middle che sfrutta l’ARP Cache Poisoning (paragrafo 3.2.1.3). Per quanto riguarda gli attacchi che sfruttano delle vulnerabilità proprie di SIP verranno descritti i casi di Tearing Down a Session (4.1.3.1), Cancelling a Session (4.1.3.3) e Modifying a Session (4.1.3.2). 4.3.1 Man in the Middle in VoIP 4.3.1.1 Architettura L’architettura di riferimento è quella descritta dalla figura seguente. Live Communcation Server 2003 IP: 10.10.81.107 Switch Catalist 2950 Client A IP: 10.10.82.110 MAC: 00-50-DA-73-40-CE Client B Attacker IP: 10.10.82.204 MAC: 00-54-DA-74-84-05 58 IP: 10.10.82.31 MAC: 00-08-C7-B3-6B-31 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Di essa fanno parte un Server Microsoft Live Communication 2003, che ha funzioni di Outbound Proxy, Redirect Server e Registrar Server, uno Switch Catalyst 2950 della Cisco System, due UA Microsoft Messenger 5.0 ed una postazione dell’attaccante. 4.3.1.2 Strumenti Le azioni previste per realizzare questo attacco sono diverse e devono essere eseguite rispettando l’ordine temporale. • Entrare in possesso degli indirizzi MAC delle due vittime sfruttando l’utility ping • Avvelenare le tabelle ARP delle due vittime attraverso l’utiliy arpspoof di Dsniff [34] • Permettere l’inoltro dei messaggi verso i legittimi destinatari attraverso l’utility fragrouter di Dsniff • Visualizzare i messaggi scambiati tra le due vittime attraverso un utility di sniffing, ad esempio Ethereal® [35] Client A IP: 10.10.82.110 Attacker IP: 10.10.82.31 Client B IP: 10.10.82.204 Ping Req. 10.10.82.110 Ping Req.10.10.82.204 Ping Rep. 10.10.82.31 Ping Rep. 10.10.82.31 arpspoof -t 10.10.82.110 10.10.82.204 arpspoof -t 10.10.82.204 10.10.82.110 fragrouter -B1 UDP / RTP UDP / RTP Per chiarezza visiva non sono inseriti tutti i messaggi connessi alla funzione arpspoof che deve avvelenare continuamente le tabelle di ARP delle due vittime Questo è il tempo che l’attacker impiega per memorizzare il pacchetto entrante e per indirizzarlo verso l’utente lecito UDP / RTP UDP / RTP 4.3.1.3 Risultati In questa sezione vengono visualizzati i risultati conclusivi utilizzando delle capture ottuenute dall’analizzatore di rete Ethereal® installato sulla macchina dell’attaccante. 59 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Quindi, ricordando che gli indirizzi IP delle macchine delle vittime sono 10.10.82.204 e 10.10.82.110, è possibile riscontrare che l’attacco è riuscito visto che la macchina dell’attaccante intercetta tutti i pacchetti RTP che i due client si scambiano, senza che essi si accorgano della sua presenza. Una volta memorizzati tali pacchetti, utilizzando sempre Ethereal®, è possibile estrapolare i dati che essi trasportano, come evidenzia la capture che segue. Infatti tramite utilities, come VOMIT (Voice over Misconfigured Internet Telephones) [36] è possibile riassemblare tutti i pacchetti RTP appartenenti ad una sessione e ricostruire la conversazione originale – file audio – tra i due client vittime. Nella prossima capture si sottolinea il fatto di come sia l’attaccante ad inviare il traffico dal Client B (10.10.82.204) e non il Client A (10.10.82.110). Analizzando infatti gli indirizzi MAC si nota facilmente che il pacchetto in realtà è generato dall’interfaccia di rete dell’attaccante (00-08-C7-B36B-31), che memorizza il flusso di dati proveniente del Client A e lo inoltra, dopo averlo memorizzato, verso il Client B. 60 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP 4.3.2 Tearing down a session 4.3.2.1 Architettura Il primo passo prevede la realizzazione di un’architettura di riferimento che verrà utilizzata durante tutta la durata della sperimentazione. SIP-SERVER IP: 10.10.82.112 HUB Sebastiano IP: 10.10.82.191 MAC: 00-50-DA-73-40-CE Alessandro Attacker IP: 10.10.81.40 MAC: 00-50-DA-74-84-05 IP: 10.10.82.49 MAC: 00-08-C7-B3-6B-31 E’ necessario specificare anche le assegnazioni di indirizzi IP e di indirizzi MAC, in quanto successivamente saranno utilizzati per dimostrare e valorizzare le tecninche utilizzate per protrarre 61 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP gli attacchi. Come si evince dalla figura precedente l’architettura è costituita da un SIP Server e tre client, di cui uno malizioso. Naturalmente i due client legittimi risultano registrati ad un servizio del server SIP con le SIP URI sip:[email protected] e sip:[email protected]. 4.3.2.2 Strumenti Per realizzare tale attacco sono stati utilizzati strumenti open source, come il SIP Server SER (SIP Express Router), fornito gratuitamente della IPTel [37], e gli UA SJphone della SJ Labs [38]. Per quanto riguarda il client malizioso, è stato realizzato per questo scopo un generatore di messaggi SIP nel linguaggio di programmazione C, che consente all’utente di gestire la costruzione dell’intero pacchetto dal livello applicativo al livello di rete (per maggiori dettagli consultare l’appendice A). 4.3.2.3 Risultati La situazione di partenza prevede che i due client abbiano già instaurato una sessione SIP, di cui l’utente malizioso abbia sniffato i messaggi iniziali della fase di instaurazione. Client A Client B SIP-Server IP: 10.10.81.40 MAC: 00-50-DA-74-84-05 IP: 10.10.82.191 MAC: 00-50-DA-73-40-CE IP: 10.10.82.112 INVITE 100 TRYING INVITE 180 RINGING 200 OK 180 RINGING 200 OK ACK ACK Flusso RTP Da questo flusso di messaggi l’attaccante preleva il Call-ID ed i due Tag, quello locale e quello remoto. Call-ID: [email protected] 62 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP To: <sip:[email protected]>;tag=325512562588 From: <sip:[email protected]>;tag=325319828183 Ora l’attaccante è in possesso di tutti i dati necessari per costruire il messaggio SIP BYE con il quale abbatterà la comunicazione tra i client di Alessandro e Sebastiano. L’attaccante lo incapsula quindi all’interno di un pacchetto IP spacciandosi per Alessandro e lo spedisce a Sebastiano. BYE sip:[email protected]:5060 SIP/2.0 Via:SIP/2.0/UDP 10.10.81.40;rport; branch=z9hG4bK0a0a52bf0131c9b141a3ba6000003f90000005h2 From: <sip:[email protected]>;tag= 325319828183 To: <sip:[email protected]>; tag=325512562588 Call-ID: [email protected] CSeq: 2 BYE Lo UA SJphone dell’indirizzo 10.10.82.191 non si accorge dell’attacco e risponde con un 200 OK, abbattendo la sessione. Per confermare la realizzabilità di quest’attacco viene riportata in seguito una schermata di Ethereal®, da cui si evince: • La richiesta BYE a livello IP ha come sorgente l’indirizzo 10.10.81.40 – client legittimo – ma l’indirizzo MAC è quello del client dell’attaccante • Il flusso SIP non rivela alcuna anomalia, infatti la vittima che riceve la richiesta BYE risponde con un 200 OK destinato alla controparte legittima. Quest’ultima riceve una risposta ad una richiesta che non ha mai generato e risponde con un ACK. Quest’ultimo messaggio è frutto delle scelte implementative dello UA e non risulta nello standard [1]. 63 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP 4.3.3 Cancelling a session 4.3.3.1 Architettura Lo scenario di riferimento non è differente da quello descritto nella sezione precedente, ma in questo caso la tempistica assume un ruolo fondamentale in quanto i messaggi maliziosi dell’attaccante devono inserirsi nella fase di three-way-handshake di instaurazione del dialogo SIP. 4.3.3.2 Strumenti Gli strumenti sono gli stessi utilizzati nell’attacco precedente. 4.3.3.3 Risultati Tramite uno sniffer il client malizioso intercetta la richiesta INVITE che Sebastiano invia al server SIP (SER) con l’intenzione di instaurare una sessione con Alessandro. Il client malizioso da questo messaggio ricava tutti i parametri necessari per portare a buon termine l’attacco, infatti sono necessari il valore del campo Call-ID, il valore del Branch del campo Via ed il valore del Tag locale: Call-ID: [email protected] To: <sip:[email protected]>; From: <sip:[email protected]>;tag=3579007323093 branch=z9hG4bK0a0a52bf0131c9b141a3ba6000003f90000005h2 Giacché il client destinatario – Alessandro – non ha ancora accettato la comunicazione, quindi non ha generato alcuna risposta all’invito, il tag remoto ancora non è stato scelto. Per questo motivo l’attaccante genera una richiesta di CANCEL riferita all’INVITE con i parametri ottenuti dalla fase preliminare di sniffing: CANCEL sip:[email protected]:5060 SIP/2.0 Via: SIP/2.0/UDP 10.10.82.191;rport; branch=z9hG4bK0a0a52bf0131c9b141a3ba6000003f90000005h2 From: <sip:[email protected]>;tag= 325319828183 To: <sip:[email protected]>; Call-ID: [email protected] CSeq: 1 CANCEL Attraverso l’analisi della figura seguente si possono trarre le conclusioni: 64 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP • Vulnerabilità di SIP e RTP La richiesta CANCEL a livello IP ha sorgente l’indirizzo 10.10.82.191 – di Sebastiano – ma l’indirizzo MAC è quello del client malizioso • Nella sequenza di messaggi appare una risposta 487 Request Terminated, questo messaggio testimonia la buona riuscita dell’attacco in quanto lo UAS di Sebastiano non si accorge dell’attacco subito e tenta di protrarre la procedura di instaurazione della sessione Indirizzi IP dei due client legittimi Sequenza dei messaggi SIP Indirizzo MAC dell’ attacker, prova dello spoofing a livello ip 4.3.4 Modifying a session 4.3.4.1 Architettura L’architettura di riferimento è la stessa analizzata nell’attacco precedente. 4.3.4.2 Strumenti Per realizzare questa tipologia di attacco è stato utilizzato uno tra i tanti generatori di messaggi SIP disponibili in Internet, il SIPNess Messenger [39], che è stato installato su una macchina i cui indirizzi sono IP: 10.10.81.107 e MAC: 00-50-DA-74-85-B4. SIP-SERVER IP: 10.10.82.112 HUB Sebastiano IP: 10.10.82.191 MAC: 00-50-DA-73-40-CE SIPNess Alessandro IP: 10.10.81.40 MAC: 00-50-DA-74-84-05 65 IP: 10.10.81.107 MAC: 00-50-DA-74-85-B4 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Il SIPNess Messenger, tramite un’interfaccia molto semplice, fornisce un metodo immediato ed intuitivo per costruire ed inviare messaggi SIP conformi allo standard. Ma a differenza del generatore di messaggi SIP utilizzato nell’attacco precedente, il SIPNess Messenger gestisce autonomamente tutte le problematiche riguardo lo stack protocollare TCP/IP, impedendo di conseguenza lo spoofing a livello IP. Lo scenario iniziale prevede che i due utenti legittimi abbiano già instaurato una sessione SIP e che il client malizioso, tramite l’utilizzo dello sniffer Ethereal®, abbia intercettato tutto il flusso dei messaggi: Call-ID: [email protected] To: sip:[email protected]>;tag=426445129201 From: <sip:[email protected]>;tag=428363921805 branch= z9hG4bK0a0a52bf0131c9b1419951ab00000fb20000008ih L’attaccante deve quindi inviare con SIPNess un messaggio di INVITE all’interno della sessione già instaurata, e quindi viene considerato un re-INVITE, inserendo un Message Body vuoto. Il client SJphone in ascolto sulla porta 5060 all’indirizzo IP 10.10.81.40 riceve una richiesta INVITE in cui i parametri caratterizzanti corrispondono a quelli di una sessione già instaurata, ma all’interno non è presente alcun parametro SDP. Tale messaggio viene interpretato come un re-INVITE e lo UAS SJphone invia una serie di messaggi 200 OK specificando i propri parametri della sessione RTP. Scaduto il Timeout la sessione viene abbattuta Mentre i 200 ok sono inviati al 10.10.81.107, il BYE è inviato al 10.10.82.191 66 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Vulnerabilità di SIP e RTP Ovviamente l’attaccante non ha alcuna intenzione di concordare tali parametri e quindi ignora le risposte della vittima. 4.3.4.3 Risultati Una volta scaduto il timeout, il client SJphone utilizzato da Alessandro abbatte la sessione inviando a Sebastiano una richiesta BYE a cui segue una risposta 200 OK. Quindi ora la sessione è abbattuta e l’attaccante ha ottenuto l’obiettivo di rendere indisponibile il servizio. 67 5 Attraversamento di NAT e Firewall 5.1 Introduzione al NAT e Firewall 5.1.1 Introduzione ai Firewall I Firewall rappresentano il principale meccanismo di protezione per negare l’accesso ad una rete al traffico proveniente dall’esterno. Infatti tutto ciò che proviene dall’interno – dal punto di vista dell’utente della rete privata – o dall’esterno viene filtrato. Quel flusso di pacchetti che viola le regole imposte dall’amministratore verranno scartati, allo scopo di far rispettare le politiche di sicurezza impostate nei filtri [17]. Esistono diversi tipi di Firewall. 5.1.1.1 Packet Filtering Gateways Questo tipo di Firewall opera sui campi dell’intestazione del datagramma IP, dei pacchetti TCP e UDP. L’informazione più importante durante l’operazione di filtraggio è l’indirizzo IP – di sorgente e di destinazione – e il numero di porta – di sorgente e di destinazione. Altra informazioni come i flag SYN e ACK dell’intestazione TCP [19] sono considerate altrettanto essenziali perché permettono di distinguere una connessione già instaurata da una che si vuole instaurare. I Packet Filtering Gateways vengono distinti in stateful, che conservano lo stato di una sessione, e gli stateless, che non lo fanno. I primi, durante il processo di filtraggio, utilizzano informazioni dalla parte applicativa del flusso. Ciò implica che i filtri stateful sono in grado di riconoscere il protocollo applicativo senza dover basare le proprie decisioni sul fatto che un certo pacchetto è destinato ad un servizio che utilizza una porta nota o meno. La limitazione di questo tipo di Firewall è che non hanno la possibilità di apportare cambiamenti al contenuto dei dati a livello applicativo dei datagrammi IP. Le funzioni di filtraggio, anche dette regole, vengono definite per ogni interfaccia del Firewall ed in base al flusso uscente o entrante. 5.1.1.2 Circuit-Level Gateways Come indica il nome, questo tipo di Firewall tratta i circuiti virtuali che vengono stabilito con il protocollo TCP – le connessioni sono garantite e i pacchetti arrivano in sequenza. Lo scopo del Circuit-Level Gateway è di stabilire un collegamento logico tra l’interfaccia esterna e quella 68 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Attraversamento di NAT e Firewall interna del Firewall. Quando un client interno tenta di aprire una connessione TCP su una porta del gateway, esso apre un’altra connessione dalla propria interfaccia esterna verso il server esterno. Il gateway non cerca di interpretare il contenuto dei pacchetti TCP, esso deve solamente collegare ogni informazione ricevuta da un lato – interno o esterno – verso l’altro lato. Questa procedura è stata resa standard in [20]. Gli indirizzi che i client utilizzano nella rete interna non sono visibili all’esterno, giacché essi vengono rimpiazzati da quello pubblico dell’interfaccia esterna del gateway. Anche il numero di porta nell’intestazione TCP viene sostituito. 5.1.1.3 Application Level Gateways Gli Application Level Gateway (ALG) rappresentano il tipo di Firewall più sofisticato. Essi lavorano in maniera simile ai Circuit-Level Gateway, ma ci sono delle differenze sostanziali che li rendono più interessanti. Spesso vengono descritti come Proxy, ma altre volte come dei prodotti software che collaborano con l’azione dei NAT dei Firewall, come descritto in [21]. Quest’ultima definizione è quella assunta in questa tesi. Alcune caratteristiche degli ALG sono: ¾ Gli ALG non sono generici come i Circuit-Level Gateway, essi infatti utilizzano dei codici specifici per ogni particolare applicazione o servizio che supportano. Poiché essi riconoscono il protocollo a livello applicativo che è contenuto nei pacchetti che stanno processando, essi garantiscono una maggiore sicurezza per la rete interna. ¾ Gli ALG non hanno la limitazione di supportare solamente il protocollo di trasporto TCP, come i Circuit-Level Gateway, ma anche UDP. ¾ Se l’ALG è utilizzato con un NAT – ed è il caso descritto in questa tesi – allora esso esamina i dati a livello applicativo per sostituire eventuali occorrenze di indirizzi privati interni con l’indirizzo pubblico dell’interfaccia esterna del gateway. Il capitolo successivo descrive dettagliatamente l’implementazione di un ALG per SIP. 5.1.2 Introduzione ai NAT Il NAT [22] è stato originariamente pensato come una soluzione a breve termine in attesa di una a lungo termine al problema della mancanza di indirizzi IP. La soluzione a lungo termine è la proposta di un nuovo Internet Protocol con uno spazio di indirizzamento maggiore – IPv6. Il NAT è un processo utilizzato per sostituire un indirizzo con un altro. Esso viene comunemente utilizzato dalle aziende per trasformare gli indirizzi interni privati [23] in indirizzi IP pubblici. Ciò è reso necessario dal fatto che gli indirizzi privati non sono instradabili in un dominio pubblico come Internet perché possono risultare in conflitto con altri reti privati che utilizzino lo stesso spazio di indirizzamento. 69 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Attraversamento di NAT e Firewall Per ogni sessione instaurata tra un host della rete interna ed uno all’esterno, il NAT deve aggiornare una tabella detta di traduzione. Ciò serve a rendere possibile il transito dei pacchetti nel verso opposto. Un ulteriore aspetto che caratterizza il NAT è che esso diminuisce la vulnerabilità degli host della rete interna. Infatti, mascherando l’indirizzo IP degli utenti interni con uno o più indirizzi globali, li rende anonimi all’esterno e quindi difficilmente attaccabili. D’altra parte è necessario proteggere in maniera adeguata il NAT, perché esso rappresenta l’unico bersaglio attaccabile dall’esterno della rete cui offre servizio. Il NAT può essere implementato in diversi modi, come descritto in [21], ma l’attenzione in questo caso viene focalizzata solo sulle seguenti categorie. 5.1.2.1 Static NAT Questo tipo di NAT richiede lo stesso numero di indirizzi IP pubblici di quanti sono gli host all’interno della rete privata. Come suggerisce il nome, l’associazione tra indirizzi locali e indirizzi globali è statica e quindi viene configurata manualmente dall’amministratore di rete o attraverso il protocollo DHCP [24] in fase di avvio della macchina. Il vantaggio di questo tipo di NAT è rappresentato dal fatto che le sessioni iniziate dall’esterno non rappresentano un problema, in quanto il rapporto uno ad uno nella tabella delle traduzioni tra host interni ed indirizzi globali non introduce ambiguità. La limitazione, invece, è costituita dal limitato numero di host interni che possono accedere contemporaneamente all’esterno della rete locale. 5.1.2.2 Dynamic NAT In questa categoria il NAT elenca gli indirizzi IP pubblici in un pool di indirizzi, da cui ne viene estratto uno ogni qualvolta un host interno vuole accedere ad una risorsa esterna. Questo tipo di implementazione deve prevedere però un numero limitato di accessi contemporanei all’esterno, giacché quando il pool è esaurito, qualora un ulteriore host facesse richiesta al NAT di accedere all’esterno, il NAT negherebbe la connessione. Il pool si ripopola invece nel momento in cui una connessione viene chiusa e quindi l’indirizzo globale è di nuovo disponibile. Per questo motivo il Dynamic NAT deve poter controllare nell’intestazione del pacchetto TCP se i flag FIN (orderly release) o RST (abortive release) [19] sono impostati. Al contrario, l’UDP crea dei problemi poiché non prevede alcun segnale esplicito di chiusura della sessione [25]. Una soluzione a questo problema consiste nell’usare dei timeout. Quando un’associazione della tabella delle traduzioni non viene consultata per un certo periodo di tempo, essa viene cancellata e l’indirizzo globale reinserito nel pool di indirizzi disponibili. Questo schema è utile anche nel caso in cui le connessioni TCP dovessero terminare senza alcun messaggio con i flag di terminazione impostati. [19] suggerisce che una connessione TCP può essere considerata terminata se non attiva per 24 ore. Per connessioni non TCP alcuni minuti sono sufficienti. 70 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 5.1.2.3 Attraversamento di NAT e Firewall Network Address and Port Translation (NAPT) NAPT costituisce un particolare caso del Dynamic NAT, caso del resto diffusamente utilizzato. Ciò che rende questa soluzione molto popolare è che molti host interni possono condividere pochi o addirittura un solo indirizzo globale. Infatti il NAPT utilizza il numero di porta come base per la traduzione degli indirizzi. In questo modo il numero di connessioni per ogni indirizzo IP globale sono limitate solamente dal numero di porte disponibili, ossia 216=65536. Questo però è solamente un numero teorico poiché alcune di queste porte sono state assegnate per servizi specifici, come riportato in [26]. E’ assunto inoltre che quanto una porta viene utilizzata da una traduzione, allora sia le porte TCP che UDP vengono segnalate come utilizzate per una questione di semplicità. 5.2 Problematiche di attraversamento I Firewall e i NAT vengono installati ai confini di una rete privata. Poichè spesso versioni software dei Firewall e NAT vengono offerti assieme ad un abbonamento DSL, i problemi che vengono descritti in seguito riguardano tanto gli utenti aziendali che quelli residenziali. Il problema consta di due componenti. Mentre oggi i Firewall sono in grado di aprire e chiudere dinamicamente più porte come richiesto dai protocolli di segnalazione VoIP, ed è il caso di SIP, essi purtroppo rimangono inefficaci per un flusso media entrante in una rete privata. Inoltre i NAT impediscono la comunicazione voce o multimediale in due direzioni, poiché gli indirizzi IP privati e le porte inserite dai dispositivi terminali VoIP nel contenuto applicativo dei pacchetti non sono instradabili in reti pubbliche. Le conseguenze di questi due problemi sono ad esempio che le proposte di instaurazione di una sessione multimediali provenienti dall’esterno di una rete locale protetta da Firewall e NAT falliscono perché bloccate, fatto del tutto inaccettabile per un servizio come il VoIP che si propone di sostituire la rete PSTN in tutte le sue funzionalità [18]. 5.2.1 Il problema Firewall Come già accennato in precedenza, il ruolo del Firewall è di proteggere una rete dall’accesso di traffico non autorizzato. Esso adempie a questo compito bloccando il traffico in base a tre parametri: la sorgente, il destinatario e il tipo di traffico. I Firewall prendono decisioni in base alla direzione del traffico che stanno esaminando. Tipicamente un flusso in entrata – ossia proveniente dal lato pubblico – è permesso solamente nel caso in cui la sessione di cui fa parte è stata iniziato da un host della rete privata. Le comunicazioni basate sul protocollo SIP, del resto come le telefonate tradizionali, non possono prescindere da telefonate inattese provenienti 71 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Attraversamento di NAT e Firewall dall’esterno, da un’ampia gamma di sorgenti sconosciute e non fidate. Ciò però va contro le politiche che sono alla base dell’implementazione di ogni Firewall. Ogni soluzione a questo problema deve quindi garantire una comunicazione bi-direzionale tra utenti interni ed esterni alla rete privata, ma nel contempo non aumentare il livello di sicurezza per gli utenti interni assicurato dal Firewall. Il client A inizia una sessione uscente verso il client X Il Firewall permette l’ingresso del flusso in entrata Client X Client A Il Firewall blocca il flusso non previsto proveniente dall’esterno Client B Il client Y tenta di inizare una sessione con il client B Client Y Figura 5.1 - Il problema Firewall 5.2.2 Il problema NAT Si consideri il caso in cui venga utilizzato un NAPT. Il flusso di traffico uscente diretto ad un terminale della rete pubblica verrà dinamicamente assegnato ad una specifica porta dell’indirizzo pubblico del NAT. Il NAT mantiene queste associazioni nella tabella delle traduzioni, associazioni che possono essere create, modificate e cancellate solamente attraverso l’azione di un flusso uscente dal dominio privato. A complicare la situazione c’è il fatto che nella fase di inizializzazione della sessione sia i messaggi SIP che quelli SDP contengono l’indirizzo privato del client su cui si vuole ricevere il flusso multimediale. 1. Nel messaggio SDP la sorgente è 192.168.1.100:8000 Client A 192.168.1.100 2. La segnalazione ed il flusso media passano attraverso il Firewall con funzione di NAT Segnalazione Segnalazione Media Media 3. Nel messaggio SDP la sorgente continua ad essere 192.168.1.100:8000 Client X 243.120.15.101: 9000 4. Ora il flusso multimediale ha come sorgente 243.120.15.101:9000 Figura 5.2 - Il problema NAT Le conseguenza sono molteplici. Quando il terminale esterno tenta di stabilire una sessione RTP con l’indirizzo privato specificato la connessione verosimilmente fallirà, poiché tali indirizzi non sono instradabili in un domino pubblico. Inoltre il terminale esterno se dal punto di vista della 72 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Attraversamento di NAT e Firewall segnalazione SIP vede come controparte un indirizzo privato, dal punto di vista del flusso multimediale RTP vede come controparte un indirizzo pubblico, visto che a livello applicativo nei messaggi SIP è presente l’indirizzo IP degli UA mentre nei messaggi RTP no. Ogni soluzione a questo problema deve garantire una comunicazione bi-direzionale sicura – incluse chiamate entranti inaspettate – e minimizzare la dipendenza dal particolare tipo di implementazione o soluzione del NAT stesso. 5.2.3 Soluzioni proposte Appare evidente quindi quanto sia necessaria una soluzione sia ai problemi evidenziati nei paragrafi immediatamente precedenti, ossia il problema Firewall e quello NAT, e sia ai problemi di sicurezza legati agli attacchi descritti nei capitoli 3 e 4. Per quanto riguarda i primi due, le soluzioni esistenti nel mercato odierno sono diverse. In questo paragrafo ne verranno brevemente descritte alcune, ponendo l’accento sulle implicazioni riguardanti la sicurezza. 5.2.3.1 Universal Plug and Play (UPnP) UPnP è una tecnologia che permette alle applicazioni dei client di scoprire e configurare i componenti di una rete, come NAT e Firewall, che sono forniti di software UPnP. La necessità fondamentale nelle applicazioni VoIP consiste nello scoprire quale indirizzo IP e porta il NAT ha selezionato per la segnalazione e per il flusso multimediale di una particolare sessione. Una volta che tale informazione è nota, il client VoIP può modificare opportunamente i pacchetti che genera in modo da poter stabilire una comunicazione bi-direzionale con l’esterno. Per fare ciò, il NAT e i client VoIP devono supportare UPnP. Tutt’oggi ci sono pochi terminali VoIP, NAT e Firewall disponibili sul mercato che lo supportano [18]. Inoltre il maggior svantaggio di questa soluzione è che non risolve il problema Firewall. 5.2.3.2 STUN Il protocollo Simple Traversal of UDP Through Network Address Translator (STUN) permette ad uno UA SIP di scoprire se si trova dietro un NAT e determinare il tipo di NAT [27]. La proposta STUN definisce un server dedicato – STUN server – da installare nello spazio di indirizzamento pubblico per informare gli UA SIP che supportano STUN su quale indirizzo IP pubblico e porta si sta utilizzando per quella particolare sessione. Avere uno UA che supporti STUN o addirittura modificare quelli esistenti perché lo diventi rendono questa soluzione impopolare, giacché pochi distributori hanno annunciato il supporto di STUN per i loro prodotti [18]. Bisogna inoltre considerare che il protocollo STUN è incompatibile con la maggior parte dei NAT utilizzati tutt’oggi: i NAT simmetrici. Questo tipo di NAT crea un’associazione nella tavola delle 73 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Attraversamento di NAT e Firewall traduzioni in base non solo all’indirizzo IP e porta di sorgente, ma anche all’indirizzo IP e porta di destinazione. L’indirizzo di destinazione del client VoIP e quello del server STUN sono differenti e quindi il NAT simmetrico crea due associazioni, rendendo così inutilizzabile quella destinata alla segnalazione VoIP. Lo stesso problema si riscontra nelle chiamate in ingresso. L’IETF ha proposto un meccanismo addizionale – TURN [28]– sviluppato appositamente per risolvere questo problema, ma oltre a considerare il fatto che queste soluzioni hanno un grande impatto sull’architettura di rete e quindi non sono di facile implementazione, anche in questo caso si nota una certa riluttanza dei produttori di UA a rendere i propri prodotti STUN e TURN friendly [18]. 5.2.3.3 Configurazione manuale In questo metodo, il client SIP viene configurato manualmente con l’indirizzo IP pubblico e porta che il NAT deve destinare ad esso. Ovviamente per questa soluzione è altrettanto necessario configurare manualmente il NAT per ogni client SIP della rete. Una limitazione ulteriore introdotta da questa soluzione è rappresentata dalla necessità di mantenere lo stesso indirizzo IP per ogni client, in modo da non comprometterne la raggiungibilità. Appare quindi evidente come questa rappresenti una soluzione per una rete di dimensioni limitate, in cui l’utilizzatore abbia le capacità necessarie per configurare NAT e Firewall. Da un punto di vista della sicurezza, inoltre, la configurazione manuale rende visibile all’esterno il reale indirizzo IP del client interno, rendendolo di conseguenza vulnerabile ad attacchi diretti. 5.2.3.4 Tecniche di tunnel Questo metodo permette l’attraversamento dei Firewall e NAT attraverso la costituzione di un tunnel sia per la segnalazione che per il flusso multimediale. Le tecniche di tunnel necessitano quindi dell’installazione di un nuovo server all’interno della rete privata e un altro nuovo server nel lato pubblico, server che costituiscono l’inizio e la terminazione del tunnel. Il server esterno modifica la segnalazione in modo da far apparire la propria interfaccia esterna, ciò permette quindi al sistema VoIP di instaurare chiamate verso l’esterno e accettarne verso l’interno. Sebbene questa soluzione non comporti cambiamenti alle politiche di sicurezza esistenti, esso però introduce dei rischi. In particolare, il server esterno rappresenta un punto di vulnerabilità, che, se compromesso, può garantire un facile accesso alla rete interna. Inoltre questa struttura può introdurre ritardi addizionali al flusso multimediale, fatto che riduce la qualità della voce. 74 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 5.2.3.5 Attraversamento di NAT e Firewall Application Level Gateway Questa tecnica consiste nell’installazione di un Firewall-NAT che interpreti i messaggi di segnalazione e i loro legami con i flussi multimediali. L’ALG processa i messaggi di segnalazione e il flusso multimediale modificando le informazioni in essi contenute in modo da far apparire l’indirizzo IP e la porta esterna dell’ALG. Il vantaggio di questa tecnica è che non intacca assolutamente le politiche di sicurezza definite nel Firewall ed inoltre consente il mascheramento degli host interni attraverso la visualizzazione nei messaggi uscenti del solo indirizzo esterno dell’ALG. Considerando infine che molti produttori di Firewall-NAT consentono un aggiornamento software dei loro prodotti per supportare le funzionalità di un ALG, questa soluzione è stata considerata la più opportuna in questa tesi per risolvere il problema Firewall ed il problema NAT. La progettazione dell’ALG e la sua interazione con il Firewall ed il NAT vengono dettagliatamente descritti nel capitolo successivo. 75 6 Progettazione del SIP ALG A fronte dei problemi riscontrati nei capitoli 3 e 4, sulle vulnerabilità di una rete VoIP ereditati dal substrato IP e sulle vulnerabilità introdotte dal protocollo di segnalazione SIP, e quelli descritti nel capitolo 5, riguardo la difficoltà di far conciliare un sistema VoIP ed apparati di rete che garantiscano sicurezza come Firewall e NAT, in questo capitolo verrà proposta una soluzione globale che consenta di proteggere la rete a livello IP attraverso l’azione di un Firewall ed un NAT e a livello applicativo attraverso l’attuazione di politiche di sicurezza SIP. La progettazione della soluzione proposta – un SIP ALG – viene descritta attraverso il linguaggio formale Specification and Description Language (SDL) [30], di cui è disponibile una breve descrizione in appendice. 6.1 Sistema di gestione dei messaggi SIP Sistema di gestione dei messaggi SIP Blocco: FW/NAT Ch 1 Ch 18 Processo Firewall Ch 2 Processo NAT L4 Blocco: DNS Ch 5 Processo DNS Ch 6 Ch 7 Ch 8 Ch 4 Ch 3 Ch 17 Ch 9 Processo SIP Proxy Processo NAT L7 Ch 16 Ch 13 Processo Controllo Policies Ch 10 Processo SIP Registrar Ch 11 Ch 15 Blocco: SIP ALG Ch 14 Ch 12 Blocco: SIP Server Processo Session Database Processo Location Service Blocco: Database Figura 6.1 - SDL: Sistema di gestione dei messaggi SIP 76 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Il sistema di gestione dei messaggi SIP è costituito da: ¾ Il blocco FW/NAT: è composto dal processo Firewall, che consente di proteggere la rete interna dall’intrusione di flusso IP indesiderato, e dal processo NAT L4, costituito da un NAPT che ha il compito di tradurre i flussi entranti ed uscenti dal dominio e qualora fossero destinati alla porta assegnata alla segnalazione SIP – la 5060 sia per UDP che per TCP – sia in ingresso che in uscita deve inoltrarli verso il blocco SIP ALG. ¾ Il blocco SIP Server: è composto dal processo SIP Proxy, indispensabile per la raggiungibilità dall’esterno degli utenti interni attraverso l’interazione con il processo Location Service del blocco Database e per la raggiungibilità dall’interno degli utenti appartenenti ad un dominio esterno attraverso l’interazione con il processo DNS, e dal processo SIP Registrar, necessario alla gestione delle registrazioni degli utenti amministrativamente appartenenti al dominio. ¾ Il blocco DNS: costituito dal solo processo DNS esso consente la traduzione di indirizzi di tipo mnemonico in indirizzi di tipo numerico, garantendo l’instradamento dei messaggi diretti all’esterno del dominio. ¾ Il blocco Database: è composto dal processo Location Service, che viene aggiornato dal processo SIP Registrar sulla registrazione o de-registrazione degli utenti appartenenti al dominio e viene consultato dal processo SIP Proxy per garantire la raggiungibilità degli utenti interni al dominio, e dal processo Session Database, che conserva le informazioni sui dialoghi attivi nel dominio utili per il corretto funzionamento del blocco SIP ALG. ¾ Il blocco SIP ALG: è l’oggetto di questo capitolo. E’ costituito dal processo NAT L7, in grado di modificare a livello applicativo i messaggi SIP in modo da risolvere il problema NAT descritto nel capitolo precedente, e dal processo Controllo Policies, che consente di risolvere il problema Firewall descritto nel capitolo precedente e che mantiene lo stato di un dialogo SIP in modo da riconoscere ed eventualmente evitare un tentativo di attacco. Appare quindi evidente che, per motivi di semplicità realizzativa, il Firewall, il NAPT, il SIP ALG, il SIP Proxy, il SIP Registrar ed il Location Service costituiscono un unico nodo della rete, nodo che consente l’interfacciamento con l’esterno. Il SIP Proxy, infatti, costituisce l’outbound proxy [1] del dominio e quindi gestisce tutto il traffico di segnalazione SIP entrante o uscente. In questo modo il SIP ALG può costituire una macchina a stati finiti che conserva lo stato di ogni dialogo o transazione SIP che viene instaurata ed in questo modo rilevare o addirittura evitare gli attacchi che sono stati studiati precedentemente. Una seconda scelta realizzativa è il supporto unicamente per il protocollo di trasporto UDP. Essa costituisce una limitazione, in quanto non consente l’utilizzo della crittografia basta su TLS [29], che necessita TCP come protocollo di trasporto. Infine, affinché il processo Controllo Policies ed il blocco SIP Server riescano a distinguere gli utenti interni alla rete, devono lavorare sulle SIP URI in cui è presente l’indirizzo privato e quindi non ancora tradotto dal processo NAT L7. Per questo motivo il sistema di gestione dei messaggi SIP deve essere differenziato nel caso in cui debba gestire un messaggio in ingresso o in uscita. 77 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG 6.1.1 Definizione astratta dei tipi Alla descrizione generale del sistema segue ora una descrizione formale. Attraverso una notazione ASN.1 [31] si evidenziano i dati scambiati per effettuare una comunicazione tra i vari processi, con la specifica del sistema in SDL si descrive in maniera molto sintetica il comportamento dei processi precedentemente elencati. Tale descrizione è stata limitata unicamente all’interazione che coinvolgono i processi interni al blocco SIP ALG. Sistema di Gestione dei Messaggi SIP DEFINITIONS ::= Canale ::= [APPLICATION 0] CHOICE {ch1 Ch1 ch2 Ch2 ch3 Ch3 ch4 Ch4 ch5 Ch5 ch6 Ch6 ch7 Ch7 ch8 Ch8 ch9 Ch9 ch10 Ch10 ch11 Ch11 ch12 Ch12 ch13 Ch13 ch14 Ch14 ch15 Ch15 ch16 Ch16 ch17 Ch17 ch18 Ch18 } Ch5 ::= [APPLICATION 5] IP Ch6 ::= [APPLICATION 6] IP Ch7 ::= [APPLICATION 7] IP Ch8 ::= [APPLICATION 8] comandi FCP (Firewall Control Protocol) Ch9 ::= [APPLICATION 9] IP Ch10 ::= [APPLICATION 10] IP Ch11 ::= [APPLICATION 11] IP Ch12 ::= [APPLICATION 12] CHOICE { ParametriDialogo[0] SEQUENCE { From FROM OPTIONAL, To TO OPTIONAL, Call-ID CALL-ID OPTIONAL, CSeq CSEQ OPTIONAL, ViaUA VIA OPTIONAL, ViaProxy SEQUENCE OF VIA OPTIONAL, Method METHOD OPTIONAL}, InitDialogo[1] IMPLICIT ENUMERATED{ 78 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG InizInterna(0), InizEsterna(1)} } Ch13 ::= [APPLICATION 13] IP Ch14 ::= [APPLICATION 14] CHOICE { ParametriDialogo[0] SEQUENCE { From FROM, To TO, Call-ID CALL-ID}, InitDialogo[1] IMPLICIT ENUMERATED{ InizInterna(0), InizEsterna(1)} } IP ::= SEQUENCE {SourceAddr ADDRESS, DestAddr ADDRESS, udp UDP} UDP ::= SEQUENCE {SourcePort PORT, DestPort PORT, sip SIP} SIP ::= SEQUENCE {Start-Line CHOICE{ Request-Line[0] IMPLICIT SEQUENCE{ Method METHOD, Request-URI REQ-URI, SIP-Version SIP-VER}, Status-Line[1] IMPLICIT SEQUENCE{ SIP-Version SIP-VER, Status-Code INTEGER, Reason-Phrase PRINTABLE STRING} }, ViaProxy SEQUENCE OF VIA OPTIONAL, ViaUA VIA, From FROM, To TO, Call-ID CALL-ID, CSeq CSEQ, Contact SIP-URI OPTIONAL, Content-Type PRINTABLE STRING OPTIONAL, Content-Length INTEGER, sdp SDP OPTIONAL} METHOD ::= ENUMERATED {REGISTER(0), INVITE(1), OPTIONS(5)} SIP-URI ::= SEQUENCE {User PRINTABLE STRING, Host ADDRESS, 79 ACK(2), CANCEL(3), BYE(4), Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Port PORT OPTIONAL} REQ-URI ::= SEQUENCE {Method METHOD, uri SIP-URI} VIA ::= SEQUENCE {Transport PRINTABLE STRING, Host ADDRESS, Port PORT OPTIONAL, Branch PRINTABLE STRING} FROM ::= SEQUENCE {uri SIP-URI, Tag PRINTABLE STRING} TO ::= SEQUENCE {uri SIP-URI, Tag PRINTABLE STRING OPTIONAL} CALL-ID ::= SEQUENCE {Numcall PRINTABLE STRING, Host ADDRESS} CSEQ ::= SEQUENCE {Numseq INTEGER, Method METHOD} SDP ::= SEQUENCE {o SEQUENCE {Username PRINTABLE STRING, IdSession LONG INTEGER, Version LONG INTEGER, Net-Type PRINTABLE STRING, Addr-Type PRINTABLE STRING, Host ADDRESS}, c SEQUENCE {Net-Type PRINTABLE STRING, Addr-Type PRINTABLE STRING, Host ADDRESS}, m SEQUENCE {Media PRINTABLE STRING, Port PORT, Transport PRINTABLE STRING, Fmt-List INTEGER} } ADDRESS ::= LONG INTEGER PORT ::= INTEGER SIP-Version SIP-VER ::= “SIP/2.0” ALGAddr ADDRESS ::= indirizzo esterno del FW LocalAddr ADDRESS ::= indirizzo interno del FW SIPPort ::= porta esterna per cui passano i messaggi SIP RTPPort ::= coppia di porte esterne per cui passano i messaggi RTP/RTCP 80 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG 6.1.2 Messaggi SIP uscenti La sequenza di canali attraversati da un messaggio generato all’interno e destinato all’esterno viene descritta in questo paragrafo. I messaggi che transitano nel canale 1 giungono al processo Firewall, che controlla eventuali violazioni delle politiche di sicurezza fino al livello di trasporto dello stack TCP/IP. Se il pacchetto non viola alcuna politica viene consegnato al processo NAT L4 attraverso il canale 2. Esso, come tutti i NAPT, modifica le intestazioni IP e UDP sostituendo l’indirizzo IP e la porta UDP con quelle dell’interfaccia esterna del sistema. Se il pacchetto ha la porta 5060 come destinazione il pacchetto viene consegnato al processo Controllo Policies attraverso il canale 7. Esso agisce solamente a livello applicativo e poiché è una macchina a stati finiti monitora continuamente lo stato del dialogo o della transazione SIP. Perché riesca ad interagire con il processo NAT L7 deve continuamente aggiornare il database delle sessioni attraverso il processo Session Database. Infine, se il messaggio SIP giunto non viola alcuna regola viene instradato verso il processo SIP Proxy o SIP Registrar, attraverso il canale 10 o 11. Ovviamente il processo SIP Registrar gestisce solamente richieste REGISTER, mentre il SIP Proxy tutte le altre. Se questi due processi dovessero generare una risposta destinata al mittente del messaggio giunto, la sequenza dei canali che essa dovrebbe percorrere è esattamente l’inverso di quella che ha effettuato per giungere al blocco SIP Server. Il messaggio originale, invece, dopo essere stato processato dal blocco SIP Server viene consegnato attraverso il canale 9 al processo NAT L7, che, in base alle informazioni della sessione ottenute dal processo Session Database sul canale 14, modifica i campi dell’intestazione del messaggio SIP e SDP se presente. Il pacchetto IP viene quindi riconsegnato al processo Firewall che lo inoltra verso l’esterno. Sistema di gestione dei messaggi SIP uscenti Blocco: FW/NAT Ch 1 Ch 18 Processo Firewall Ch 2 Processo NAT L4 Blocco: DNS Processo DNS Ch 6 Ch 7 Ch 8 Ch 4 Ch 3 Ch 17 Ch 9 Processo SIP Proxy Processo NAT L7 Ch 16 Processo Controllo Policies Ch 10 Ch 11 Processo SIP Registrar Ch 15 Blocco: SIP ALG Ch 14 Ch 12 Blocco: SIP Server Processo Session Database Processo Location Service Blocco: Database Figura 6.2 - SDL: Sistema di gestione dei messaggi SIP uscenti 81 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG 6.1.3 Messaggi SIP entranti Come già accennato precedentemente, i messaggi entranti nel dominio di appartenenza del sistema seguono un percorso diverso da quelli uscenti. In questo caso infatti i pacchetti IP pervengono al processo Firewall attraverso il canale 18 e se non violano alcuna politica di sicurezza vengono consegnati al processo NAT L4. In esso avviene la traduzione degli indirizzi IP e delle porte di destinazione se già appartenenti ad un flusso, altrimenti il comportamento varia a seconda del servizio a cui sono associati. Nel caso in cui, comunque, la porta di destinazione sia la 5060 o una associata dal Firewall al servizio SIP, il processo NAT L4 attraverso il canale 5 passa il pacchetto IP al processo NAT L7. E’ evidente quindi la differenza con il caso precedente, infatti avviene subito la traduzione a livello applicativo degli indirizzi. E’ stata scelta questa soluzione implementativa perché il processo Controllo Policies ed il blocco SIP Server abbiano una visibilità ‘interna’ dei dialoghi e transazioni SIP. In questo modo rimane evidente per essi chi internamente ha originato o verso chi è destinato il messaggio SIP che stanno trattando. Dopo la traduzione a livello applicativo il pacchetto IP passa attraverso il canale 13 al processo Controllo Policies. Se il messaggio non viola alcuna politica di sicurezza viene instradato verso il blocco SIP Server attraverso il canale 10 o 11, per giungere infine al processo Firewall attraverso il canale 3 o 4 e entrare nel dominio attraverso il canale 1. Le eventuali risposte generate dal blocco SIP Server seguono la sequenza di canali: 13, 5, 2 e 18. Sistema di gestione dei messaggi SIP entranti Blocco: FW/NAT Ch 1 Ch 18 Processo Firewall Ch 2 Processo NAT L4 Blocco: DNS Processo DNS Ch 5 Ch 8 Ch 4 Ch 3 Ch 17 Processo SIP Proxy Processo NAT L7 Ch 16 Ch 13 Processo Controllo Policies Ch 10 Ch 11 Processo SIP Registrar Ch 15 Blocco: SIP ALG Ch 14 Ch 12 Blocco: SIP Server Processo Session Database Processo Location Service Blocco: Database Figura 6.3 - SDL: Sistema di gestione dei messaggi SIP entranti 82 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Nei paragrafi successivi verranno descritti dettagliatamente i processi appartenenti al blocco SIP ALG: processo NAT L7 e processo Controllo Policies. Di essi verranno descritti inoltre le interazioni con i blocchi adiacenti. 6.2 Processo NAT L7 Lo scopo di questo processo è sostituire ogni occorrenza di indirizzi privati all’interno dei messaggi SIP e SDP con l’indirizzo pubblico dell’interfaccia esterna del Firewall, ed inoltre sostituire ogni occorrenza di porte degli UA interni con quelle destinate dal Network Address and Port Translator (o NAT L4) per il dialogo SIP e la sessione RTP. I campi dell’intestazione dei messaggi SIP interessati a questo cambiamento sono molteplici: il campo Via, Contact, To, From, la Request-URI, Call-ID, i campi c, o ed m del messaggio SDP… Tuttavia sostituire semplicemente ogni occorrenza di indirizzi privati non è una soluzione efficace, infatti è importante che l’ALG sappia non solo da quale parte – interna o esterna – la comunicazione è stata iniziata, ma anche se si tratta di una richiesta o di una risposta. Si consideri infatti il campo Call-ID. Esso è una URI formata da una sequenza randomica locale più l’indirizzo dell’host: “local-id@host”. Il valore di questo campo viene stabilito dallo UAC che inizia il dialogo e rimane inalterato per tutta la sua durata. E’ evidente quindi che se nella porzione host del Call-ID c’è un indirizzo privato, esso va sostituito con quello pubblico dell’interfaccia esterna, ma solamente nel caso in cui il messaggio sia in uscita dal dominio in cui è presente lo UAC. Il procedimento inverso deve accadere per i messaggi in ingresso, da indirizzo pubblico deve essere trasformato in indirizzo privato. Nessun cambiamento va invece effettuato all’ingresso del dominio dell’UAS, visto che esso non deve modificare tale campo. E’ stato quindi necessario distinguere dapprima i messaggi se entranti od uscenti dal dominio. Ciò è riscontrabile da quale canale arrivano i messaggi al processo NAT L7: se dal canale 5 allora sono entranti (inbound) se dal canale 9 allora sono uscenti (outbound) dal dominio. La distinzione successiva riguarda il caso in cui i messaggi facciano parte di un dialogo iniziato dall’interno o dall’esterno o addirittura non facciano parte di alcun dialogo. Questa informazione viene ottenuta attraverso l’interazione con il processo Session Database, che viene aggiornato dal processo Controllo Policies. Infine l’ultima distinzione viene fatta in base al fatto che il messaggio che il NAT L7 sta trattando sia una richiesta o una risposta SIP, visto che i campi dell’intestazione da modificare sono differenti. 83 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Inbound request Inbound response Outbound request Outbound response (I) Progettazione del SIP ALG Campi Dialogo iniaziato dall’interno Dialogo iniziato dall’esterno Request-URI ALG Address -> Local Address (V) ALG Address -> Local Address (I) (V) Via Non modificare Non modificare To ALG Address -> Local Address ALG Address -> Local Address (I) From Non modificare Non modificare Call-ID ALG Address -> Local Address Non modificare Contact Non modificare Non modificare SDP Non modificare Non modificare Request-URI (II) (II) Via ALG Address -> Local Address ALG Address -> Local Address To Non modificare Non modificare From ALG Address -> Local Address ALG Address -> Local Address Call-ID ALG Address -> Local Address Non modificare Contact Non modificare Non modificare SDP Non modificare Non modificare Request-URI Non modificare Non modificare Via Local Address -> ALG Address Local Address -> ALG Address To Non modificare Non modificare From Local Address -> ALG Address Local Address -> ALG Address Call-ID Local Address -> ALG Address Non modificare Contact Local Address -> ALG Address (IV) Local Address -> ALG Address (IV) SDP (III) (III) Request-URI (II) (II) Via Non modificare Non modificare To Local Address -> ALG Address Non modificare From Non modificare Non modificare Call-ID Local Address -> ALG Address Non modificare Contact Local Address -> ALG Address (IV) Local Address -> ALG Address (IV) SDP (III) (III) In caso di REGISTER, INVITE e OPTIONS destinata al processo SIP Proxy non modificare questo campo (II) Le risposte non hanno il campo Request-URI (III) Se il messaggio SIP ne contiene uno SDP, modificarne il campo o, c ed m e ricalcolare il campo Content-Length. (IV) Modificare anche il valore della porta associata al campo Contact (V) Modificare anche il valore della porta associata al campo Request-URI 84 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG 6.2.1 Messaggi in ingresso Attesa Messaggio SIP ch5.sip ch14.ParametriDialogo.To ::= ch5.sip.To ch14.ParametriDialogo.From ::= ch5.sip.From ch14.ParametriDialogo.Call-ID ::= ch5.sip.Call-ID ch14.ParametriDialogo Attesa Risposta DB Sessione ch14.InitDialogo INIZ_INTERNA Request-Line ch5.sip.Start-Line - Inbound Request Iniziata dall’interno ch14.InitDialogo INIZ_ESTERNA o NULL Status-Line Request-Line - Inbound Response Iniziata dall’interno - Inbound Request Iniziata dall’esterno - Inbound Request Iniziata dall’interno ch5.sip.Start-Line - Inbound Response Iniziata dall’esterno - Inbound Response Iniziata dall’esterno ch5.sip.Request-Line.Request-URI.uri.Host ::= ch5.ip.DestAddr ch5.sip.Request-Line.Request-URI.uri.Port ::= 5060 ch5.sip.To.uri.Host ::= ch5.ip.DestAddr ch5.sip.Call-ID.Host ::= ch5.ip.DestAddr ch5.sip.ViaUA.Host ::= ch5.ip.DestAddr ch5.sip.From.uri.Host ::= ch5.ip.DestAddr ch13.sip ch13.sip Attesa Messaggio SIP Attesa Messaggio SIP - Inbound Response Iniziata dall’interno ch5.sip.ViaUA.Host ::= ch5.ip.DestAddr ch5.sip.From.uri.Host ::= ch5.ip.DestAddr ch5.sip.Call-ID.Host ::= ch5.ip.DestAddr ch13.sip Attesa Messaggio SIP 85 Status-Line Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Inbound Request Iniziata dall’esterno REGISTER o INVITE ch5.sip.Request-Line.Method altri OPTIONS ch5.sip.RequestLine.Request-URI = ALGAddr != ALGAddr ch5.sip.Request-Line.Request-URI.uri.Host ::= ch5.ip.DestAddr ch5.sip.Request-Line.Request-URI.uri.Port ::= 5060 ch5.sip.To.uri.Host ::= ch5.ip.DestAddr ch13.sip Attesa Messaggio SIP ch13.sip Attesa Messaggio SIP 6.2.2 Messaggi in uscita Nel caso di messaggi uscenti dal dominio di interesse, affinché il sistemi funzioni è necessario modificare anche i messaggi SDP che descrivono la sessione multimediale da instaurare. In essi infatti è contenuto sia l’indirizzo IP sia la porta su cui si vuole ricevere il flusso multimediale. Attesa Messaggio SIP ch9.sip ch14.ParametriDialogo.To ::= ch9.sip.To ch14.ParametriDialogo.From ::= ch9.sip.From ch14.ParametriDialogo.Call-ID ::= ch9.sip.Call-ID ch14.ParametriDialogo Attesa Risposta DB Sessione ch14.InitDialogo INIZ_INTERNA Request-Line - Outbound Request Iniziata dall’interno ch9.sip.Start-Line ch14.InitDialogo INIZ_ESTERNA Status-Line Request-Line - Outbound Response Iniziata dall’interno - Outbound Request Iniziata dall’esterno 86 ch9.sip.Start-Line Status-Line - Outbound Response Iniziata dall’esterno Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound Request Iniziata dall’interno ch9.sip.ViaUA.Host ::= ALGAddr ch9.sip.From.uri.Host ::= ALGAddr ch9.sip.Call-ID.Host ::= ALGAddr ch9.sip.Contact.uri.Host ::= ALGAddr ch9.sip.Contact.uri.Port ::= ch9.ip.udp.SourcePort =0 ch9.sip.Content-Length >0 ch6.sip Application/SDP ch7.sip.Content-Type Attesa Messaggio SIP - Outbound Cambiamento SDP - Outbound Response Iniziata dall’interno ch9.sip.To.uri.Host ::= ALGAddr ch9.sip.Call-ID.Host ::= ALGAddr ch9.sip.Contact.uri.Host ::= ALGAddr ch9.sip.Contact.uri.Port ::= ch9.ip.udp.SourcePort =0 ch9.sip.Content-Length >0 ch6.sip Application/SDP ch9.sip.Content-Type Attesa Messaggio SIP - Outbound Cambiamento SDP - Outbound Request Iniziata dall’esterno ch9.sip.ViaUA.Host ::= ALGAddr ch9.sip.From.uri.Host ::= ALGAddr ch9.sip.Contact.uri.Host ::= ALGAddr ch9.sip.Contact.uri.Port ::= ch9.ip.udp.SourcePort =0 ch6.sip Attesa Messaggio SIP ch9.sip.Content-Length >0 Application/SDP ch9.sip.Content-Type - Outbound Cambiamento SDP 87 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound Response Iniziata dall’esterno ch9.sip.Contact.uri.Host ::= ALGAddr ch9.sip.Contact.uri.Port ::= ALGPort =0 ch6.sip Attesa Messaggio SIP ch9.sip.Content-Length >0 Application/SDP ch9.sip.Content-Type - Outbound Cambiamento SDP Ecco infine le occorrenze di indirizzi IP e porte interne che devono essere sostituite con quelle esterne pubbliche. La procedura che segue è quella di ricalcalo del numero di byte del messaggio SDP, numero che deve essere inserito nel campo Content-Length del messaggio SIP. - Outbound Cambiamento SDP ch9.sip.sdp.o.Host ::= ALGAddr ch9.sip.sdp.c.Host ::= ALGAddr ch9.sip.sdp.m.Port ::= RTPPort Ricalcolare ch9.sip.Content-Length ch6.sip Attesa Messaggio SIP 6.3 Processo Controllo Policies Lo scopo di questo processo è verificare che non avvengano gli attacchi descritti nel paragrafo 4.1. Il processo Controllo Policies è una macchina a stati finiti che tiene memoria dello stato di un dialogo SIP controllando e verificando ogni messaggio che transita attraverso di essa. Essa garantisce le funzionalità descritte nello standard [1], accettando e gestendo tutti e sei i metodi elencati: INVITE, ACK, REGISTER, BYE, CANCEL e OPTIONS. Nel caso in cui il flusso di messaggi SIP non violi alcuna regola di sicurezza, allora il processo Controllo Policies gestisce l’apertura e la chiusura delle porte sull’interfaccia esterna del Firewall, sia 88 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG per quanto riguarda la porta destinata ai messaggi di segnalazione SIP che la coppia di porte destinata al flusso multimediale RTP/RTCP. Durante lo studio di questa tesi l’unico protocollo che è stato individuato per l’interazione tra il SIP ALG e il Firewall è il Firewall Control Protocol (FCP) [32]. Esula dagli obiettivi di questa tesi l’identificazione e l’analisi dei comandi FCP che il processo Controllo Policies e il processo Firewall devono scambiarsi. Verranno semplicemente citati dei ‘metacomandi’ che consentano al processo Controllo Policies di aprire o chiedere le porte del Firewall. Compito del processo Controllo Policies è inoltre aggiornare il processo Session Database sui dialoghi e transazioni che stanno avvenendo tra gli utenti, in modo tale da rendere disponibili al processo NAT L7 le informazioni necessarie per il suo corretto funzionamento, ossia la verifica che i messaggi che stanno transitando appartengano ad un dialogo iniziato dall’interno oppure dall’esterno. Diversamente dal caso del NAT L7, in cui la natura del processo era decisamente combinatoria, per il processo Controllo Policies la sequenzialità dei messaggi assume un’importanza fondamentale. Per verificare infatti che sta avvenendo un attacco, infatti, non è sufficiente verificare che il messaggio SIP sia correttamente formato o che sia generato dallo UA legittimo, poiché le tecniche di spoofing degli indirizzi consentono di mascherare totalmente l’identità di chi genera un pacchetto IP. E’ apparso necessario, quindi, gestire e verificare la corretta sequenzialità dei messaggi di un dialogo SIP, in modo da individuare eventuali messaggi maliziosi che tentino di perpetrare degli attacchi insinuandosi nel normale flusso di segnalazione. Per fare ciò si è posta l’attenzione sui flussi di chiamata descritti in [9]. Alla luce della precedente analisi, l’arrivo di risposte SIP esterne ad un dialogo è considerato un tentativo di attacco decisamente malriuscito, giacché non è previsto dallo standard SIP [1] che vengano generate risposte da uno UA senza che ricevi alcuna richiesta. Quindi la suddivisione che è stata seguita per il processo Controllo Policies è in base al tipo di richiesta che origina il dialogo – INVITE, REGISTER e OPTIONS, a cui si è aggiunto il metodo BYE perché rimanga la compatibilità con la procedura di re-INVITE. Quindi richieste CANCEL o ACK esterne ad un dialogo sono considerate alla stregua delle risposte a nessuna richiesta: tentativi di attacco. Per quanto riguarda il metodo BYE, esso viene considerata una richiesta che origina un dialogo perché la sua annessione al metodo INVITE avrebbe reso difficile la gestione della procedura di re-INVITE. Infatti come descritto nello standard SIP [1], è plausibile che giungano due transazioni di INVITE – di cui la seconda è considerata re-INVITE – all’interno dello stesso dialogo, senza che la prima sia terminata da un BYE. L’unica analogia con il processo NAT L7 è la suddivisione iniziale in messaggi uscenti e messaggi entranti, da intendere come dialoghi iniziati da messaggi uscenti o entranti. 89 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG INVITE Genera un messaggio di errore Fuori Sequenza: Possibile Attacco Denial of Service Fuori Sequenza: Possibile Attacco Man in the Middle - Inbound BYE - Inbound OPTIONS - Inbound REGISTER - Inbound INVITE REGISTER OPTIONS ch13.sip.RequestLine.Method BYE Request-Line CANCEL ACK ch13.sip.Start-Line ch13.sip Attesa Messaggio SIP 1XX 2XX Status-Line 3XX ch13.sip.StatusLine.Status-Code 4XX 5XX 6XX 6.3.1 Messaggi in ingresso Le richieste CANCEL ed ACK, assieme ad ogni tipo di risposta che giungono al processo Controllo Policies al di fuori di un dialogo vengono considerati dei tentativi di attacco perché fuori sequenza. Da questa analisi quindi scaturiscono quattro tipi di dialoghi, ognuno caratterizzato dal tipo di messaggio che ne dà origine: REGISTER, OPTIONS, INVITE e BYE. 90 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 6.3.1.1 Progettazione del SIP ALG REGISTER In caso di richiesta di registrazione entrante nel dominio, l’unico destinatario può essere il processo Registrar Server, altrimenti il messaggio è malformato e quindi va scartato. In caso affermativo si deve controllare che le richieste siano generate in sequenza – ossia venga rispettato il campo CSeq dell’intestazione – e che le richieste provenienti dallo stesso UA abbiano sempre lo stesso valore del campo Call-ID, come richiesto in [1]. - Inbound REGISTER ch13.sip.RequestLine.Request-URI = ALGAddr Verifica sintattica del messaggio SIP - Inbound - Transazione iniziata dall’esterno ch12.ParametriDialogo.Method ::= ch13.sip.RequestLine.Request-URI.Method ch12.ParametriDialogo.From ::= ch13.sip.From.uri ch12.ParametriDialogo != ALGAddr Scarta il pacchetto Possibile Attacco Genera un messaggio di errore Attesa Risposta DB Sessione ch12.ParametriDialogo != ch12.ParametriDialogo. Call-ID.Numcall ch13.sip.Call-ID.Numcall = ch12.ParametriDialogo.Call-ID.Numcall != (ch12.ParametriDialogo. CSeq.Numseq) + 1 Messaggio malformato: Possibile Attacco Registration Hijacking Genera un messaggio di errore ch13.sip.CSeq.Numseq = (ch12.ParametriDialogo.CSeq.Numseq) + 1 - Inbound REGISTER parte 2 Se la richiesta REGISTER rispetta questi vincoli, che garantiscono in minima parte l’autenticità del mittente, essa viene inoltrata attraverso il canale 11 al processo SIP Registrar, il quale deve necessariamente implementare un servizio di autenticazione HTTP Digest [33]. Per questo motivo, le risposte ritenute plausibili alla richiesta di registrazione sono 200 OK, 401 Unauthorized e 403 Forbidden [9]. Qualora non dovesse giungere alcuna risposta un timeout libererebbe ogni risorsa occupata dalla suddetta richiesta. 91 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Inbound REGISTER parte 2 ch11.sip ::= ch13.sip ch11.sip Attesa Messaggio SIP Risposta da Registrar ch11.sip timeout ch13.sip ::= ch11.sip 200 ch11.sip.StartLine.Status-Line.StatusCode 403 401 ch13.sip Attesa Messaggio SIP 6.3.1.2 OPTIONS Il metodo OPTIONS di SIP permette ad uno UA di chiedere ad un altro UA o ad un Server le capacità (capabilities) che supporta. Poiché tutti gli UA devono essere in grado di processare richieste OPTIONS [1], allora anche il processo Controllo Policies deve poter gestire tale tipo di messaggio. Si deve differenziare però il caso in cui destinatario della richiesta entrante nel dominio sia il processo SIP Proxy oppure uno UA interno. Nel primo caso infatti tutto il dialogo transita attraverso la porta 5060 dell’interfaccia esterna del Firewall, nel secondo caso invece si deve assegnare attraverso il processo NAT L4 una porta al dialogo e far passare la segnalazione attraverso essa. Questa distinzione avviene in base alla presenza o meno della porzione user nella Request-URI. Se è assente allora il messaggio OPTIONS è destinato al server, altrimenti allo UA che verrà raggiunto attraverso i dati memorizzati nel processo Location Service. In quest’ultimo caso quindi il processo Controllo Policies deve gestire l’apertura e successivamente la chiusura delle porte esterne attraverso comandi del protocollo FCP. 92 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Inbound OPTIONS Verifica sintattica del messaggio SIP - Inbound - Transazione iniziata dall’esterno ch10.sip :== ch13.sip ch10.sip ch13.sip.Request-Line.RequestURI.User = NULL no si Attesa Messaggio SIP Risposta da UA interno Attesa Messaggio SIP Risposta da Proxy ch7.sip ch10.sip timeout timeout 200 ch7.sip.StatusLine.Status-Code 200 4XX Verifica sintattica del messaggio SIP - Outbound - ch10.sip.StatusLine.Status-Code 4XX ch13.sip :== ch10.sip ch13.sip ch8: con FCP aprire la porta esterna per SIP Attesa Messaggio SIP ch10.sip :== ch7.sip ch10.sip ch8: con FCP chiudere la porta esterna per SIP Attesa Messaggio SIP 6.3.1.3 INVITE Le richieste INVITE che giungono alla porta 5060 dell’interfaccia esterna del Firewall vengono accettate e processate dal processo Controllo Policies. Da esse ha inizio una procedura molto più complessa rispetto a quelle viste nei due precedenti paragrafi, in cui è previsto il fallimento del tentativo di instaurazione di chiamata causato dal processo SIP Proxy o dallo UA interno, la cancellazione attraverso il metodo CANCEL ancora durante la fase di instaurazione o il successo e di conseguenza il passaggio per le porte destinate a RTP/RTCP di flusso multimediale. 93 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG L’arrivo di messaggi di redirezione – come le risposte appartenenti alla classe 3XX – oppure messaggi di conferma – come la risposta 200 OK – fuori sequenza da come indicato in [9] vengono considerati attacchi, in quanto corrispondono al flusso di messaggi descritti nel capitolo 4. - Inbound INVITE Verifica sintattica del messaggio SIP - Inbound - no ch13.sip.Contact = NULL Transazione iniziata dall’esterno ch10.sip ::= ch13.sip si Messaggio malformato ch10.sip Genera un messaggio di errore Attesa Messaggio SIP Risposta da Proxy ch10.sip timeout ch13.sip ::= ch10.sip ch13.sip ch10.sip.StatusLine.Status-Code 100 Attesa Messaggio SIP Risposta da UA interno 4XX 5XX 6XX Attesa Messaggio SIP ACK da UA esterno ch7.sip ch10.sip timeout Verifica sintattica del messaggio SIP - Outbound - timeout Verifica sintattica del messaggio SIP - Inbound 4XX 5XX 6XX ch7.sip.StatusLine.Status-Code 180 ch10.sip ::= ch13.sip ch10.sip - Inbound INVITE ringing 2XX 3XX Sequenza Errata: Possibile Attacco dall’interno Session Hijacking Sequenza Errata: Possibile Attacco dall’interno Man in the Middle Genera un messaggio di errore Attesa Messaggio SIP - Inbound INVITE UA failed 94 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Inbound INVITE ringing ch8: con FCP aprire la porta esterna per SIP ch10.sip ::= ch7.sip ch10.sip Attesa Possibile Messaggio SIP CANCEL da UA esterno ch13.sip timeout ch13.sip.Request-Line. Method = CANCEL si no - Inbound CANCEL Attesa Messaggio SIP Risposta da UA interno ch7.sip timeout Verifica sintattica del messaggio SIP - Outbound - Request-Line ch7.sip.Start-Line ch7.sip.Start-Line altri 200 BYE Sequenza Errata: Possibile Attacco dall’interno Denial of Service Status-Line ch7.sip.StatusLine.Status-Code 486 3XX - Inbound INVITE successful Sequenza Errata: Possibile Attacco dall’interno Man in the Middle - Inbound INVITE busy Genera un messaggio di errore Genera un messaggio di errore Si vede quindi dal diagramma precedente come l’arrivo di una risposta 3XX viene considerato un tentativo di attacco Man in the Middle, in quanto fuori sequenza e quindi è visto come un modo di rubare la sessione SIP. Analogamente, poiché il chiamato non può generare un messaggio BYE prima di ricevere il messaggio ACK, questa sequenza viene considerata un possibile attacco di Denial of Service proveniente dall’interno. 95 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Se lo UAS all’interno dovesse rispondere con un 200 OK allora, dopo l’arrivo dell’ACK dall’esterno il processo Controllo Policies deve aprire la coppia di porte destinate al flusso multimediale RTP/RTCP. In caso contrario il processo Controllo Policies deve chiedere la porta destinata alla segnalazione SIP che il messaggio di risposta dello UAS uscendo aveva aperto. - Inbound INVITE successful - Inbound INVITE busy - Inbound INVITE UA failed ch10.sip ::= ch7.sip ch7.sip.Cseq.Method = INVITE no ch10.sip si Attesa Messaggio SIP ACK da UA esterno Messaggio malformato ch10.sip ::= ch7.sip ch10.sip ch13.sip timeout Genera un messaggio di errore Attesa Messaggio SIP ACK da Proxy Verifica sintattica del messaggio SIP - Inbound - ch10.sip ch8: con FCP aprire le porte esterne per RTP timeout ch7.sip ::= ch10.sip ch10.sip ::= ch13.sip ch7.sip ch10.sip Attesa Messaggio SIP ACK da UA interno Attesa Messaggio SIP ch10.sip timeout Verifica sintattica del messaggio SIP - Outbound - ch7.sip ::= ch10.sip ch7.sip ch8: con FCP chiudere la porta esterna per SIP Attesa Messaggio SIP La CANCEL è una richiesta allo UAS di interrompere il processamento di una richiesta precedentemente inviata e generare per essa un messaggio di errore. La CANCEL non ha effetto su richieste per cui lo UAS ha già generato una risposta definitiva, per questo motivo è utile cancellare solo quelle richieste che causano un tempo di processamento accettabile. Di conseguenza la richiesta CANCEL dovrebbe essere diretta solamente a richieste di tipo INVITE [1]. Per questo 96 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG motivo il processo Controllo Policies accetta richieste di cancellazione solamente se all’interno di un dialogo iniziato da un INVITE. - Inbound CANCEL Verifica sintattica del messaggio SIP - Inbound - Attesa Parametri DB Sessione ch12.InitDialogo ch13.sip.To = ch12.To ch13.sip.From.uri = ch12.From.uri ch13.sip.From.Tag = NULL ch13.sip.Request-URI = ch12.Request-URI ch13.sip.CSeq.Numseq = ch12.CSeq.Numseq ch13.sip.Call-ID = ch12.Call-ID no Messaggio Malformato: Possibile Attacco Denial of Service si ch10.sip ::= ch13.sip Genera un messaggio di errore ch10.sip Attesa Messaggio SIP Risposta da Proxy ch10.sip timeout ch13.sip ::= ch10.sip ch13.sip 200 ch10.sip.StatusLine.Status-Code Attesa Messaggio SIP Risposta da UA interno 481 Genera un messaggio di errore ch7.sip timeout - Inbound CANCEL successful Quando arriva una richiesta CANCEL deve essere verificato che essa si riferisca ad un INVITE già processata dal processo Controllo Policies, altrimenti si tratta di una richiesta malformata e di conseguenza va scartata. In caso affermativo il processo si aspetta di ricevere tutto il flusso descritto in [9]. 97 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Inbound CANCEL successful Verifica sintattica del messaggio SIP - Outbound - 200 si ch10.sip.StatusLine.Status-Code 481 Sequenza Errata: Possibile Attacco Denial of Service ch7.sip.CSeq. Method = CANCEL ch10.sip ::= ch13.sip no Sequenza Errata: Possibile Attacco dall’interno Man in the Middle ch10.sip Attesa Messaggio SIP Risposta da UA interno Genera un messaggio di errore Genera un messaggio di errore ch13.sip timeout Verifica sintattica del messaggio SIP - Outbound - ch10.sip.StatusLine.Status-Code 481 487 ch13.sip.CSeq. Method = INVITE si no Messaggio Malformato: Possibile Attacco ch10.sip ::= ch13.sip ch10.sip Genera un messaggio di errore Attesa Messaggio SIP ACK da Proxy ch10.sip timeout ch13.sip ::= ch10.sip ch13.sip - Outbound CANCEL Successful parte 2 Anche in questo caso eventuali messaggi fuori sequenza che fanno parte di questo dialogo vengono considerati attacchi provenienti o dall’interno o dall’esterno, a seconda dei casi specifici. 98 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG La procedura termina con la chiusura della porta esterna del Firewall destinata al flusso di segnalazione SIP, e il processo ritorna nello stato di attesa di un messaggio SIP appartenente ad un nuovo dialogo. - Outbound CANCEL Successful parte 2 Attesa Messaggio SIP ACK da UA esterno ch13.sip timeout Verifica sintattica del messaggio SIP - Inbound - ch13.sip.Request-Line. Method = ACK no si Messaggio Errata: Possibile Attacco Ch10.sip ::= ch13.sip Genera un messaggio di errore ch10.sip Tramite FCP chiudere la porta esterna per SIP Attesa Messaggio SIP 6.3.1.4 BYE La procedura che il messaggio BYE dà luogo ha l’obiettivo di verificare che effettivamente esso si riferisca ad un dialogo esistente e che sia transitato già attraverso il processo Controllo Policies, ed infine ha lo scopo di chiudere le porte che si riferiscono al dialogo sia per quanto riguarda la segnalazione SIP sia per quanto riguarda il flusso multimediale RTP/RTCP. Inoltre, secondo [1], se la risposta ad una richiesta di BYE è un messaggio 481 Call/Transaction Does Not Exists oppure 408 Request Timeout o addirittura alcuna risposta, lo UAC deve considerare la sessione ed il relativo dialogo terminato. 99 200 100 Attesa Messaggio SIP Tramite FCP chiudere la porta esterna per SIP Tramite FCP chiudere le porte esterne per RTP ch10.sip ch10.sip ::= ch7.sip ch7.sip.StatusLine.Status-Code Verifica sintattica del messaggio SIP - Outbound - ch7.sip Attesa Messaggio SIP Risposta da UA interno ch10.sip ch10.sip :== ch13.sip - Inbound BYE successful 408 481 timeout - Inbound BYE successful si no = NULL Genera un messaggio di errore Procedura irregolare: non esiste il dialogo che lo UA vuole terminare Messaggio Malformato: Possibile Attacco Denial of Service ch12.InitDialogo ch13.sip.Via = ch12.ParametriDialogo.Via ch12.ParametriDialogo.Via Attesa ParametriDialogo DB Sessione != NULL ch12.InitDialogo Attesa InitDialogo DB Sessione ch12.ParametriDialogo ch12.ParametriDialogo.Method ::= ch13.sip.Request-Line.Request-URI.Method ch12.ParametriDialogo.From ::= ch13.sip.From ch12.ParametriDialogo.To ::= ch13.sip.To ch12.ParametriDialogo.Call-ID ::= ch13.sip.Call-ID Verifica sintattica del messaggio SIP - Inbound - - Inbound BYE Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Genera un messaggio di errore Fuori Sequenza: Possibile Attacco dall’interno Man in the Middle 3XX INVITE - Outbound BYE - Outbound OPTIONS - Outbound INVITE - Outbound REGISTER BYE REGISTER OPTIONS ch7.sip.RequestLine.Method Request-Line CANCEL ACK ch7.sip.Start-Line ch7.sip Attesa Messaggio SIP 1XX 2XX Status-Line ch7.sip.StatusLine.Status-Code 4XX 5XX Fuori Sequenza: Possibile Attacco dall’interno Denial of Service 6XX 6.3.2 Messaggi in uscita In maniera del tutto analoga ai messaggi entranti, le richieste di tipo ACK o CANCEL e le risposte di qualsiasi classe vengono considerate fuori sequenza perché esterne ad un dialogo e quindi vengono scartate. Anche in questo caso quindi i dialoghi hanno inizio attraverso quattro richieste: REGISTER, OPTIONS, INVITE e BYE 101 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP 6.3.2.1 Progettazione del SIP ALG REGISTER Il processo Controllo Policies deve consentire la registrazione di utenti amministrativamente appartenenti al dominio al processo Registrar Server e utenti fisicamente appartenenti al dominio a Registrar Server di altri domini. Tutto ciò perché la mobilità è una delle caratteristiche di SIP che deve essere garantita. Nel primo caso i controlli sono analoghi a quelli descritti per le REGISTER entranti nel dominio, ossia sui campi Call-ID e CSeq dell’intestazione. Se la richiesta è corretta, viene inoltrata al processo Registrar Server attraverso il canale 11. - Outbound REGISTER ch7.sip.RequestLine.Request-URI = ALGAddr Verifica sintattica del messaggio SIP - Outbound - ch12.ParametriDialogo.Method ::= ch7.sip.RequestLine.Request-URI.Method ch12.ParametriDialogo.From ::= ch7.sip.From.uri != ALGAddr ch8: con FCP aprire la porta esterna per SIP Transazione iniziata dall’interno ch12.ParametriDialogo ch10.sip Attesa Risposta DB Sessione ch12.ParametriDialogo != ch12.ParametriDialogo. Call-ID.Numcall - Outbound REGISTER parte 3 ch7.sip.Call-ID.Numcall = ch12.ParametriDialogo.Call-ID.Numcall != (ch12.ParametriDialogo. CSeq.Numseq) + 1 ch7.sip.CSeq.Numseq = (ch12.ParametriDialogo.CSeq.Numseq) + 1 Messaggio malformato: Possibile Attacco Registration Hijacking Genera un messaggio di errore - Outbound REGISTER parte 2 E le risposte plausibili generate dal processo Registrar Server sono 200 OK, 401 Unauthorized e 403 Forbidden [9], queste ultime due sono frutto del fatto che il Registrar Server deve implementare l’HTTP Digest Authentication. Nel caso in cui la richiesta REGISTER è destinata ad un dominio esterno, il processo Controllo Policies deve aprire una porta destinata alla segnalazione SIP sull’interfaccia esterna del Firewall ed inoltrare verso il processo Proxy Server sul canale 10 la richiesta di registrazione. 102 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound REGISTER parte 3 - Outbound REGISTER parte 2 ch10.sip ::= ch7.sip ch10.sip ch11.sip ::= ch7.sip Attesa Messaggio SIP Risposta da Registrar esterno ch11.sip Attesa Messaggio SIP Risposta da Registrar Verifica sintattica del messaggio SIP - Inbound - timeout ch11.sip ch13.sip timeout ch7.sip ::= ch11.sip ch10.sip ::= ch13.sip ch11.sip.StatusLine.Status-Code 200 403 200 ch13.sip.StatusLine.Status-Code 403 401 401 ch7.sip ch8: con FCP chiudere la porta esterna per SIP Attesa Messaggio SIP ch10.sip Attesa Messaggio SIP 6.3.2.2 OPTIONS Il destinatario di una richiesta OPTIONS che attraverso il sistema di gestione dei messaggi SIP può essere o un server esterno – UAS o Server che sia – oppure il processo SIP Proxy del blocco SIP Server. Questa distinzione, effettuata in base alla Request-URI della richiesta, comporta una differente gestione del messaggio stesso. Nel caso in cui il destinatario è esterno al dominio, il processo Controllo Policies deve gestire l’apertura e la chiusura delle porte dell’interfaccia esterna del Firewall destinate alla segnalazione SIP dello UAC che ha generato il messaggio OPTIONS. 103 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound OPTIONS Verifica sintattica del messaggio SIP - Outbound - Transazione iniziata dall’interno ch7.sip.Request-Line.RequestURI.Host = LocalAddr no ch8: con FCP aprire la porta esterna per SIP si ch10.sip :== ch7.sip ch10.sip ch10.sip :== ch7.sip Attesa Messaggio SIP Risposta da Proxy ch10.sip ch10.sip Attesa Messaggio SIP Risposta da UA esterno timeout 200 ch13.sip ch10.sip.StatusLine.Status-Code 4XX timeout ch13.sip.StatusLine.Status-Code 200 4XX ch7.sip :== ch10.sip ch7.sip Verifica sintattica del messaggio SIP - Inbound - Attesa Messaggio SIP ch10.sip :== ch13.sip ch10.sip ch8: con FCP chiudere la porta esterna per SIP Attesa Messaggio SIP 6.3.2.3 INVITE Il processo Controllo Policies è in grado di gestire richieste di INVITE dirette all’esterno del dominio che serve. Di esse è inoltre in grado di garantire il corretto funzionamento anche in caso di fallimento della fase di instaurazione, redirezione della richiesta di INVITE e risposta con segnale di occupato del chiamato. Scopo di questo processo nella fase di instaurazione è verificare e quindi segnalare eventuali anomalie nel regolare flusso di messaggi, caratteristiche di un attacco visto nel paragrafo 4.1. 104 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound INVITE Verifica sintattica del messaggio SIP - Outbound - ch8: con FCP aprire la porta esterna per SIP Transazione iniziata dall’interno ch10.sip ::= ch7.sip ch10.sip Attesa Messaggio SIP Risposta da Proxy ch10.sip timeout ch7.sip ::= ch10.sip ch7.sip ch10.sip.StatusLine.Status-Code 100 407 Branch ::= ch7.ViaUA.Branch Attesa Messaggio SIP Risposta da UA esterno Attesa Messaggio SIP ACK da UA interno ch13.sip timeout Verifica sintattica del messaggio SIP - Inbound - ch7.sip timeout ch7.sip.RequestLine.Method 100 ch13.sip.StatusLine.Status-Code 2XX 4XX 5XX 6XX 3XX Sequenza Errata: Possibile Attacco Man in the Middle altri ACK Branch = ch7. sip.ViaUA.Branch no si Messaggio malformato ch7.sip ::= ch10.sip - Outbound INVITE trying Genera un messaggio di errore - Outbound INVITE redirected - Outbound INVITE failed ch7.sip ch8: con FCP chiudere la porta esterna per SIP Attesa Messaggio SIP 105 Genera un messaggio di errore Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound INVITE trying ch10.sip ::= ch13.sip ch10.sip Attesa Messaggio SIP Risposta da UA esterno ch13.sip timeout Verifica sintattica del messaggio SIP - Inbound - ch13.sip.StatusLine.Status-Code 180 si ch7.sip.Contact = NULL 2XX 3XX no si - Outbound INVITE failed Sequenza Errata: Possibile Attacco Man in the Middle ch7.sip.To.Branch = NULL no Messaggio malformato 4XX 5XX 6XX Genera un messaggio di errore Attesa Possibile Messaggio SIP CANCEL da UA interno ch7.sip timeout Genera un messaggio di errore ch7.sip.Request-Line. Method = CANCEL no si - Outbound INVITE Trying parte 2 - Outbound CANCEL Il normale flusso, può quindi lecitamente essere interrotto da una richiesta di cancellazione proveniente dall’interno – caso che verrà descritto dettagliatamente in seguito – oppure proseguire attraverso l’arrivo di un messaggio 100 Trying proveniente dall’esterno. 106 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound INVITE Trying parte 2 Attesa Messaggio SIP Risposta da UA esterno ch13.sip timeout Verifica sintattica del messaggio SIP - Inbound - Request-Line ch13.sip.Start-Line ch13.sip.RequestLine.Method BYE altri Sequenza Errata: Possibile Attacco Denial of Service ch13.sip.StatusLine.Status-Code Status-Line 3XX Sequenza Errata: Possibile Attacco Man in the Middle Genera un messaggio di errore Genera un messaggio di errore - Outbound INVITE successful ch7.sip.Contact = NULL si no ch7.sip.sdp = NULL si no ch7.sip.Cseq.Method = INVITE no si Messaggio malformato ch10.sip ::= ch13.sip ch10.sip Genera un messaggio di errore Attesa Messaggio SIP ACK da UA interno ch7.sip timeout Verifica sintattica del messaggio SIP - Outbound - ch8: con FCP aprire le porte esterne per RTP ch10.sip ::= ch7.sip ch10.sip Attesa Messaggio SIP 107 200 486 - Outbound INVITE successful - Outbound INVITE busy Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP - Outbound INVITE busy - Outbound INVITE failed - Outbound INVITE redirected no si Progettazione del SIP ALG ch13.sip.Contact = NULL ch7.sip.ViaUA.Branch = ch13.sip.ViaUA.Branch ch13.sip.Cseq.Method = INVITE si no no si Messaggio malformato ch10.sip ::= ch13.sip Genera un messaggio di errore ch10.sip Attesa Messaggio SIP ACK da Proxy ch10.sip timeout ch13.sip ::= ch10.sip ch13.sip Attesa Messaggio SIP ACK da UA interno ch7.sip timeout Verifica sintattica del messaggio SIP - Outbound - ch10.sip ::= ch7.sip ch10.sip ch8: con FCP chiudere la porta esterna per SIP Attesa Messaggio SIP Quindi, nel caso in cui il tentativo di instaurazione della sessione SIP fallisca il processo Controllo Policies deve chiudere la porta dell’interfaccia esterna del Firewall destinata alla segnalazione, mentre nel caso in cui essa vada a buon fine, completando il three-way-handshake di SIP, il processo Controllo Policies attraverso il protocollo FCP deve aprire una coppia di porte dell’interfaccia esterna del Firewall per il flusso multimediale RTP/RTCP. 108 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG Si considera ora il caso in cui lo UAC che ha generato la richiesta di INVITE voglia interrompere tale procedura generando una richiesta CANCEL ad essa riferita. - Outbound CANCEL Verifica sintattica del messaggio SIP - Outbound - Attesa Parametri DB Sessione ch12.InitDialogo ch7.sip.To = ch12.To ch7.sip.From.uri = ch12.From.uri ch7.sip.From.Tag = NULL ch7.sip.Request-URI = ch12.Request-URI ch7.sip.CSeq.Numseq = ch12.CSeq.Numseq ch7.sip.Call-ID = ch12.Call-ID no Messaggio Malformato: Possibile Attacco dall’interno Denial of Service si ch10.sip ::= ch7.sip Genera un messaggio di errore ch10.sip Attesa Messaggio SIP Risposta da Proxy ch10.sip timeout ch7.sip ::= ch10.sip ch7.sip 200 ch10.sip.StatusLine.Status-Code Attesa Messaggio SIP Risposta da UA esterno 481 Messaggio Malformato: Possibile Attacco dall’interno Denial of Service ch13.sip timeout Genera un messaggio di errore - Outbound CANCEL successful 109 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound CANCEL successful Verifica sintattica del messaggio SIP - Inbound - si ch13.sip.CSeq. Method = CANCEL ch10.sip ::= ch13.sip no Sequenza Errata: Possibile Attacco Man in the Middle ch10.sip Genera un messaggio di errore Attesa Messaggio SIP Risposta da UA esterno ch13.sip timeout Verifica sintattica del messaggio SIP - Inbound - ch10.sip.StatusLine.Status-Code 487 481 ch13.sip.CSeq. Method = INVITE si no Messaggio Malformato: Possibile Attacco ch10.sip ::= ch13.sip ch10.sip Genera un messaggio di errore - Outbound CANCEL Successful parte 2 Attesa Messaggio SIP ACK da UA interno ch7.sip timeout Verifica sintattica del messaggio SIP - Outbound - Attesa Messaggio SIP ACK da Proxy ch10.sip ch10.sip ::= ch7.sip timeout ch13.sip ::= ch10.sip ch10.sip ch13.sip ch8: con FCP chiudere la porta esterna per SIP - Outbound CANCEL Successful parte 2 6.3.2.4 Attesa Messaggio SIP BYE L’ultimo caso che rimane da analizzare è la richiesta BYE in uscita dal dominio. Per essa non vengono effettuati molti controlli da parte del processo Controllo Policies poiché proviene dall’interno, zona considerata fidata, al contrario di quanto si è visto nel caso di richiesta BYE proveniente dall’esterno. 110 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG - Outbound BYE successful - Outbound BYE Verifica sintattica del messaggio SIP - Outbound - ch10.sip ::= ch7.sip ch10.sip ch12.ParametriDialogo.Method ::= ch7.sip.Request-Line.Request-URI.Method ch12.ParametriDialogo.From ::= ch7.sip.From ch12.ParametriDialogo.To ::= ch7.sip.To ch12.ParametriDialogo.Call-ID ::= ch7.sip.Call-ID Attesa Messaggio SIP Risposta da UA esterno ch12.ParametriDialogo ch13.sip Attesa InitDialogo DB Sessione Verifica sintattica del messaggio SIP - Inbound - timeout ch12.InitDialogo 200 != NULL ch12.InitDialogo Attesa ParametriDialogo DB Sessione = NULL Procedura irregolare: non esiste il dialogo che lo UA vuole terminare ch13.sip.StatusLine.Status-Code ch10.sip ::= ch13.sip ch10.sip ch12.ParametriDialogo.Via ch7.sip.ViaUA = ch12.ParametriDialogo.ViaUA si no Genera un messaggio di errore ch8: con FCP chiudere le porte esterne per RTP ch8: con FCP chiudere la porta esterna per SIP Messaggio Malformato: Possibile Attacco dall’interno Denial of Service Attesa Messaggio SIP - Outbound BYE successful 111 408 481 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Progettazione del SIP ALG 6.3.3 Procedure comuni Nelle analisi precedenti sono state utilizzate delle procedure comuni a più dialoghi. Esse verranno brevemente descritte in questo paragrafo. Quando una transazione viene iniziata dall’interno o dall’esterno del dominio, il processo Session Database deve essere aggiornato sui parametri che la caratterizzano. Questa funzione è necessaria sia a riconoscere se un messaggio appartiene ad un dialogo esistente o meno e sia a stabilire se il dialogo di cui quel messaggio fa parte è stato iniziato da uno UA interno o esterno. Quest’ultima caratteristica è necessaria per il corretto funzionamento del processo NAT L7 – come è stato già sottolineato precedentemente. Le procedure utilizzate a questi scopi sono Transazione iniziata dall’esterno e Transazione iniziata dall’interno. Transazione iniziata dall’interno Transazione iniziata dall’esterno ch12.ParametriDialogo.Method ::= ch7.sip.Request-URI.Method ch12.ParametriDialogo.From ::= ch7.sip.From ch12.ParametriDialogo.To ::= ch7.sip.To ch12.ParametriDialogo.Call-ID ::= ch7.sip.Call-ID ch12.ParametriDialogo.CSeq ::= ch7.sip.CSeq ch12.ParametriDialogo.ViaUA ::= ch7.sip.ViaUA ch12.InitDialgo ::= INIZ_INTERNA ch12.ParametriDialogo.Method ::= ch13.sip.Request-URI.Method ch12.ParametriDialogo.From ::= ch13.sip.From ch12.ParametriDialogo.To ::= ch13.sip.To ch12.ParametriDialogo.Call-ID ::= ch13.sip.Call-ID ch12.ParametriDialogo.CSeq ::= ch13.sip.CSeq ch12.ParametriDialogo.ViaProxy ::= ch13.sip.ViaProxy ch12.ParametriDialogo.ViaUA ::= ch13.sip.ViaUA ch12.InitDialgo ::= INIZ_ESTERNA ch12.ParametriDialogo ch12.InitDialogo ch12.ParametriDialogo ch12.InitDialogo Inoltre in [1] sono elencati i campi dell’intestazione che necessariamente devono far parte di un qualsiasi messaggio SIP. Per questo motivo attraverso le procedure Verifica sintattica del messaggio SIP - Outbound - e Verifica sintattica del messaggio SIP - Inbound - viene eseguito un controllo sui messaggi che transitano attraverso il processo Controllo Policies per scartare quelli malformati. 112 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Verifica sintattica del messaggio SIP - Outbound - ch7.sip.Via.Branch = NULL Verifica sintattica del messaggio SIP - Inbound - ch5.sip.Via.Branch = NULL si ch5.sip.From.uri = NULL si ch5.sip.From.Tag = NULL si ch5.sip.To.uri = NULL si ch5.sip.To.Tag = NULL no ch5.sip.Call-ID = NULL si si si no no ch7.sip.Cseq.Method = ch7.sip.Request-Line.Method no si si ch7.sip.Call-ID = NULL si no no ch7.sip.To.Tag = NULL si no no ch7.sip.To.uri = NULL si no no ch7.sip.From.Tag = NULL si no no ch7.sip.From.uri = NULL Progettazione del SIP ALG ch5.sip.Cseq.Method = ch5.sip.Request-Line.Method no Messaggio malformato si Genera un messaggio di errore no Messaggio malformato Genera un messaggio di errore 113 7 Risultati e conclusioni Il lavoro di questa tesi è stato focalizzato sulla messa in sicurezza del servizio Voice over IP con SIP come protocollo di segnalazione ed RTP come protocollo di trasporto. Sono state studiate le diverse vulnerabilità di un’architettura VoIP, alcune ereditate dal substrato IP e altre introdotte dai protocolli di più alto livello della pila protocollare. Dopo una breve descrizione delle funzionalità di SIP, RTP e SDP, si è messo in luce come è possibile attaccare una rete VoIP con delle sequenze di messaggi ritenute legali. In particolare per il protocollo SIP, nel laboratorio multimediale di IT Telecom, è stata sviluppata un’architettura VoIP sottoposta ai vari attacchi individuati teoricamente nella fase precedente. Si è evinto, da questo studio, che negare la disponibilità di un servizio oppure rubare la sessione di un utente è possibile. Per questo motivo il passo successivo è stato individuare quali elementi di rete potessero rendere un’architettura VoIP più sicura. Si è reso infine necessario progettare un elemento di rete, detto Sistema di gestione dei messaggi SIP, poiché gli elementi individuati sono Firewall e NAT, che non permettono il regolare flusso della segnalazione ai confini di un dominio. Quindi il lavoro di progettazione ha avuto un duplice scopo, da una parte rendere immune l’architettura VoIP dagli attacchi SIP individuati e simulati nella prima fase di studio ed inoltre rendere l’architettura compatibile con le limitazioni ed imposizioni introdotte da Firewall e NAT. Dall’analisi effettuata è risultato che il protocollo SIP, piuttosto che definire nuovi e specifici meccanismi di sicurezza, riutilizza modelli e servizi esistenti derivati da alcuni protocolli della IETF, come ad esempio HTTP. L’adozione di tale approccio nella definizione dei suddetti meccanismi di sicurezza è sembrata poco adatta per un aspetto cruciale quale la sicurezza del protocollo, soprattutto per quanto riguarda il meccanismo di autenticazione. Infatti la maggior parte delle minacce a cui il protocollo è sottoposto – descritte nel paragrafo 4.1 – riguardano proprio debolezze nell’autenticazione. Il principale limite della procedura di autenticazione con lo schema Digest è dato dall’impossibilità da parte del client di poter richiedere o comunque effettuare l’autenticazione del server. Per poter sopperire a questa lacuna è necessario un meccanismo di autenticazione che non è parte integrante del protocollo e che è implicitamente fornito dai meccanismi, esterni al SIP, come TLS o IPSec, i quali però permettono l’autenticazione solamente dei server adiacenti ai client, cioè dei soli server con i quali un client può avviare direttamente una comunicazione di segnalazione – una comunicazione TCP/TLS oppure una Security Association IPSec. Lo svantaggio introdotto da questi meccanismi di sicurezza esterni consiste nell’introdurre risorse e tempo di elaborazione sensibilmente maggiori rispetto ad una situazione in cui essi sono 114 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Risultati e conclusioni assenti. Per un protocollo come il SIP, basato su scambi di messaggi, ciò è più di quanto necessario e l’uso di un’autenticazione da effettuare per ogni messaggio di richiesta da questo punto di vista è una scelta che sembrerebbe poco adatta, a meno che non sia strettamente necessario assicurare la riservatezza della comunicazione di segnalazione. In definitiva sembra necessaria la definizione di un nuovo meccanismo di autenticazione mutua, cioè che permetta di verificare sia l’identità del client che del server, che inoltre sia in grado di garantire la protezione d’integrità del corpo dei messaggi e di alcuni campi dell’intestazione che non devono essere modificati o acceduti dai Proxy Server durante l’instradamento dei messaggi stessi. Dal lavoro svolto emergono alcune questioni che possono essere la base per studi futuri: ¾ valutazione delle prestazioni e controllo della qualità del servizio ¾ sviluppo della compatibilità con altri tipi di servizi garantiti da SIP, come ad esempio l’Instant Messaging ¾ individuazione di un protocollo standard che permetta l’interazione tra processi SIP e processi Firewall ¾ implementazione di un protocollo di autenticazione degli utenti ¾ progettazione di un blocco Controllo Policies anche per il protocollo RTP 115 Appendice A – SIP Generator Il generatore di messaggi SIP utilizzato nella fase di implementazione degli attacchi è stato scritto in C. Questo programma, realizzato in ambiente UNIX, permette la generazione e l’invio di qualsiasi tipo di messaggio SIP, specificandone tutti i campi dell’intestazione che si vogliono inserire e definendo sorgente e destinazione del messaggio stesso. Si è ritenuto infatti necessario creare questo tipo di applicazione proprio perché a differenza della maggior parte dei generatori di messaggi SIP reperibili gratuitamente su Internet, questo programma fornisce ampia libertà di azione, consentendo addirittura di modificare, attraverso lo spoofing. l’indirizzo IP sorgente del messaggio stesso. In questa appendice verrà brevemente descritto il principio di funzionamento dell’applicazione SIP Generator. La comunicazione tra processi che risiedono in diversi sistemi è possibile attraverso le BSD IPC (Berkeley Software Distribution Interprocess Communication) anche dette socket. Esse sono un insieme di primitive che consentono la realizzazione di applicazioni secondo il modello logico di comunicazione fra processi asimmetrico client-server, tipico di SIP. Una socket è un punto terminale della comunicazione fra processi, completamente identificato dalla terna protocollo, indirizzo IP e numero di porta; mentre una connessione è univocamente identificata da una coppia di socket: protocollo, indirizzo IP locale, numero di porta locale, indirizzo IP remoto e numero di porta remota. Il programma SIP Generator prende come parametri appunto le socket locale e remota, attraverso cui costruisce l’intestazione del pacchetto IP e UDP delle GNU (General Public License) C Library. I messaggi SIP invece vengono accettati da un file di testo, in cui devono essere precedentemente stati scritti specificando tutti i campi dell’intestazione che si vogliono includere. Questo metodo di accettare il messaggio SIP da file di testo risulta veloce e funzionale, proprietà necessarie per gli attacchi descritti nel paragrafo 4.1. Infine, il programma costruisce le socket di tipo raw, per cui il protocollo IP fornisce la stessa modalità di comunicazione fornita da UDP: non orientata alla connessione e non affidabile. Si è scelto di utlizzare le socket raw proprio perché permettono di specificare tutti i campi dell’intestazione sia a livello di rete – per il protocollo IP – che a livello di trasporto – per il protocollo UDP. In questo modo i messaggi generati sono falsificabili nella loro interezza, specificando ad esempio l’indirizzo IP di un client coinvolto in una sessione come sorgente del messaggio 116 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Appendice A – SIP Generator Denominatore comune di tutti gli attacchi descritti nel capitolo 4.1 è che l’attaccante agisca da client, mentre la vittima da server. Questo implica che mentre l’attaccante ha un ruolo attivo, il server ha un ruolo passivo. client fopen () payload := file fclose() sport := source_port saddr := source_addr server dport := dest_port daddr := dest_addr socket() socket() bind() ip_gen() udp_gen() recvfrom() calcolo del checksum sendto() Messaggio S IP close() 117 Bloccato in attesa di connessione Appendice B – SDL Il linguaggio SDL è una FDT (Formal Description Techniques) definita dal CCITT (Comité Consultativ International Télégraphique et Téléphonique), ora conosciuto come ITU-T (Telecommunication Standardization Sector of the International Communication Union), la cui semantica è basata sul concetto di macchina a stati finiti estesa (EFSM). Tale linguaggio esiste sia in forma ‘program’ che in forma ‘graphic’. Nel primo caso si tratta di qualcosa di molto simile, sia pure con alcune minime differenze semantiche, al linguaggio ESTELLE definito sempre dal CCITT. Nella veste grafica, invece, si presenta come una sorta di diagramma di flusso in cui alcuni simboli vengono utilizzati per descrivere azioni particolari. Blocchi base per la descrizione del processo Stato di attesa Procedura Riferimento Segnale di Input Elemento decisionale Segnale di Output Blocchi base per la descrizione del sistema Processo Blocco ….. Lista di segnali sul canale Canale Il vantaggio che si ottiene con questa forma è quello dell’immediatezza, a fronte dello svantaggio della rapida espansione della descrizione. Una specifica SDL di un sistema è suddivisa in tre parti distinte: 1) la definizione della struttura in termini di macchine e interconnessioni tra loro 118 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP Appendice B – SDL 2) la definizione del comportamento dinamico di ciascuna macchina, a livello di interazioni con altre macchine e con l’ambiente 3) la definizione del dizionario delle interazioni, in termini di tipi di dato astratti Per descrivere la definizione strutturale di un sistema vengono utilizzati i blocchi funzionali descritti nella figura precedente; un sistema è visto come l’insieme di più blocchi funzionali, connessi tra loro e con l’ambiente attraverso canali unidirezionali. La comunicazione tra blocchi avviene mediante segnali, equivalenti a messaggi di interazione in ingresso e/o uscita scambiati in modo asincrono. La descrizione di un processo viene poi realizzata, con i blocchi presentati nella figura precedente, in modo molto simile ad un diagramma di flusso. Tali blocchi consentono di descrivere il processo come insieme di transizioni da uno stato di attesa ad un altro, a seguito di un segnale di ingresso e/o una decisione su un predicato ed attraverso l’esecuzione di un’azione, eventualmente comprendente l’emissione di un segnale di uscita. A ciascuno dei segnali di ingresso e uscita può essere associata una lista di parametri, i cui tipi sono tipi di dati astratti, che verranno descritti facendo uso del metalinguaggio ASN.1. 119 Bibliografia [1] J. Rosemberg, H. Schulzrinne, G. Camarillo et al., SIP: Session Inititation Protocol, IETF RFC 3261, Giugno 2002 [2] R. Fieldeng, J. Gettys, J. Mogul et al, Hypertext Transfer Protocol – HTTP/1.1, IETF RFC 2616, Giugno 1999 [3] ITU-T Recommendation, H.323: Packet-based multimedia communication system, Luglio 2003 [4] D. Crocker e P. Overell, Augmented BNF for Syntax Specification: ABNF, IETF RFC 2234, Novembre 1997 [5] T. Berners-Lee, R. Fielding e L. Masinter, Uniform Resource Identifiers (URI): Generic Syntax, IETF RFC 2396, Agosto 1998 [6] F. Feed e N. Borenstein, Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, IETF RFC 2046, Novembre 1996 [7] J. Rosenberg e H. Schulzrinne, SIP: Locating SIP Servers, IETF RFC 3263, Giugno 2002 [8] Geremy George, http://mit.edu/sip/sip.edu/dns.shtml, Maggio 2003 [9] A. Johnston, S. Donovan, R. Sparks et al., Session Inititation Protocol (SIP) Basic Call Flow Examples, IETF RFC 3665, Dicembre 2003 [10] A. Johnston, SIP: Understanding the Session Inititation Protocol, Artech House Boston London [11] M. Handley e V. Jacobson, SDP: Session Description Protocol, IETF RFC 2327, Aprile 1998 [12] H. Schulzrinne, S. Casner, R. Frederick et al., RTP: A Transport Protocol for Real-Time Applications, IETF RFC 3550, Luglio 2003 120 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP [13] Bibliografia D. Kuhn, T. Walsh e S. Fries, Security Considerations for Voice over IP Systems, Recommendation of National Institute of Standards and Technology, Aprile 2004 [14] ITU-T Recommendation, G.114: Delay, Settembre 1998 [15] C-N Chua, Providing End-to-End QoS for IP based Latency sensitive Applications, Technical Report, Dept. Of Electrical Engineering and Computer Science, University of California at Berkeley, 2000 [16] H. Schulzrinne, A. Rao e R. Lanphier, Real Time Streaming Protocol (RTSP), IETF RFC 2326, Aprile 1998 [17] F. Thernelius, SIP, NAT, and Firewalls, Master’s Thesis, Maggio 2000 [18] Newport Networks, Solving the Firewall and NAT Traversal Issues for Multimedia Services over IP, White Paper, 2004 [19] Information Sciences Institute University of Southern California, Transmission Control Protocol, IETF RFC 793, Settembre 1981 [20] M. Leech, M. Ganis, Y. Lee et al., SOCKS Protocol Version 5, IETF RFC 1928, Marzo 1996 [21] P. Srisuresh e M. Holdrege, IP Network Address Translator (NAT) Terminology and Considerations, IETF RFC 2663, Agosto 1999 [22] K. Egevang e P. Francis, The IP Network Address Translator (NAT), IETF RFC 1631, Maggio 1994 [23] Y. Rekhter, B. Moskowitz, D. Karrenberg et al., Address Allocation for Private Internets, IETF RFC 1918, Febbraio 1996 [24] R. Droms, Dynamic Host Configuration Protocol, IETF RFC 2131, Marzo 1997 [25] J. Postel, User Datagram Protocol, IETF RFC 768, Agosto 1980 [26] http://www.iana.org [27] J. Rosenberg, J. Weinberger, C. Huitema et al., STUN – Simple Traversal of User Datagram Protocol (UDP) Through NAT, IETF RFC 3489, Marzo 2003 121 Studio ed Analisi della Sicurezza dei Servizi Voice over IP con SIP e RTP [28] Bibliografia J. Rosenberg, J. Weinberger, R. Mahy et al., Traversal Using Relay NAT (TURN), IETF Internet-Draft, Marzo 2003 [29] T. Dierks e C. Allen, The TLS Protocol Version 1.0, IETF RFC 2487, Gennaio 1999 [30] ITU-T Recommendation, Z.100: Specification and description Language, Novembre 1999 [31] ITU-T Recommendation, X.680: Abstract Syntax Notation One (ASN.1), 2002 [32] J. Kuthan e J. Rosenberg, Middlebox Communication: Framework Requirements, IETF Internet-Draft, Maggio 2001 [33] J. Franks, P. Hallam-Barker, J. Hostetler et al., HTTP Authentication: Basic and Digest Access Authentication, IETF RFC 2617, Giugno 1999 [34] http://www.monkey.org/~dugsong/dsniff [35] http://www.ethereal.com/ [36] http://vomit.xtdnet.nl/ [37] http://www.iptel.org/ser/ [38] http://www.sjlabs.com/ [39] http://www.ortena.com/download.htm 122