VoIP: Segurança da Informação em Telefonia Baseada em SIP Este tutorial apresenta uma revisão bibliográfica sucinta acerca dos principais protocolos empregados na telefonia VoIP e sobre questões de segurança relevantes para o serviço. São abordadas ameaças legadas das redes IP (que já existiam antes mesmo da tecnologia de voz sobre IP), bem como ameaças específicas à arquitetura SIP. André de Almeida Lima Tecnólogo em Redes de Computadores pelo Instituto Federal de Educação, Ciência e Tecnologia do Espírito Santo (IFES, 2008) e Especialista em Engenharia de Redes e Sistemas de Telecomunicações pelo Instituto Nacional de Telecomunicações (Inatel, 2011). Atualmente trabalha como Trainee Expert na operadora de Telecomunicações Oi, atuando no tratamento de falhas de banda larga e vídeo. Email: [email protected] Guilherme Rezende dos Santos Bacharel em Sistemas de Informação pela Faculdade de Administração e Informática (2008) e Especialista em Segurança da Informação pela Faculdade Impacta Tecnologia (2010). Atua nas áreas de segurança em redes de computadores e sistemas operacionais UNIX. Atualmente trabalha com Analista de Segurança da Informação na empresa Cipher Security S/A, e também é professor da disciplina Segurança em Redes de Telecomunicações do curso de Pós-graduação em Engenharia de Redes e Sistemas de Telecomunicações do Inatel. 1 Categoria: VoIP Nível: Introdutório Enfoque: Técnico Duração: 20 minutos Publicado em: 21/05/2012 2 VoIP: Introdução A telefonia VoIP promete, eventualmente, por fim a mais de um século de rede pública de telefonia comutada (RPTC), transferindo a inteligência do sistema para as bordas da rede, seguindo a tradição da Internet. Como aplicações IP são mais facilmente criadas e distribuídas, tem-se visto um proeminente crescimento do número de soluções VoIP, vindas de múltiplos fornecedores, sendo apresentadas ao mercado. Neste modelo, os próprios usuários terão um importante papel na definição, implementação e controle dos serviços de telefonia ( SICKER e LOOKBAUGH, 2004). Aliada a isto, a flexibilidade do SIP (Session Initiation Protocol), atualmente o protocolo mais usado para o estabelecimento de sessões VoIP, torna esta tecnologia cada vez mais viável e atrativa economicamente quando comparada com o serviço oferecido pela RPTC (SIÉCOLA, 2010). Em contrapartida, toda esta flexibilidade e disseminação também atrai a atenção dos hackers. O fato da tecnologia se proliferar não quer dizer que as infraestruturas para comunicação VoIP apresentadas pelos fornecedores tem se preocupado em blindar as ameaças que são inerentes ao SIP, tampouco as conhecidas brechas de segurança que flagelam as redes IP e praticamente qualquer serviço oferecido sobre elas. Diante disto, este tutorial se propõe a examinar quais sãos os principais protocolos que oferecem suporte à telefonia VoIP e enumera algumas das ameaças que devem ser levadas em consideração quando se pretende levantar uma infraestrutura baseada em SIP para esta tecnologia, preocupando-se inclusive com as ameaças legadas das já existentes redes IP. 3 VoIP: Protocolos da Telefonia VoIP Basicamente, dois tipos de protocolos são utilizados para viabilizar a comunicação VoIP: um protocolo para sinalização (com objetivo de estabelecer e gerenciar a chamada – sessão) e outro para o transporte da voz por uma rede IP (SIÉCOLA, 2010). Diversos protocolos de sinalização foram concebidos por instituições padronizadoras, contudo a maior parte das aplicações utiliza o SIP (Session Initiation Protocol), descrito no RFC 3261, visto que este protocolo apresenta flexibilidade quanto à adição de novas features, além de facilidade de implementação e solução de problemas (DALGIC e FANG, 2011), por isto este trabalho aborda as situações onde este protocolo é utilizado para o estabelecimento de chamadas VoIP. O SIP é um protocolo textual baseado em requisições e respostas, bastante similar ao HTTP, que possui campos de cabeçalho e um corpo. No corpo de uma mensagem SIP é encapsulado algum protocolo de descrição de sessão responsável pela negociação dos tipos e formatos de mídias que serão trocadas entre as partes comunicantes, chamadas de User Agents (UA). O RFC 3261 não determina qual protocolo de descrição de sessão deve ser usado, portanto implementações SIP podem oferecer suporte a múltiplos protocolos de descrição de sessão. Entretanto, é mandatório o suporte ao SDP (Session Description Protocol), descrito no RFC 2327, o que faz deste o mais utilizado para negociação de mídias numa sessão SIP (JOHNSTON, 2009). Em se tratando do transporte da voz digitalizada por uma rede IP, o protocolo que ganhou o mercado foi o RTP (Real-time Transport Protocol), definido pelo RFC 3550, que não depende do tipo de protocolo de sinalização e descrição sendo utilizados. Também no mesmo RFC é definido o RTCP, um protocolo associado ao RTP que permite a troca de relatórios estatísticos entre os participantes de uma sessão a respeito da recepção de mídia. A seguir, é apresentado um tratamento de caráter introdutório sobre os protocolos SIP, SDP, RTP e RTCP. SIP – Session Initiation Protocol O SIP é um protocolo da camada de sessão do modelo OSI (camada de aplicação do modelo TCP/IP) que pode estabelecer, modificar e terminar sessões multimídias - onde sessão é considerada uma troca de dados entre uma associação de UAs - como uma chamada telefônica pela Internet (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). Nesta sessão serão introduzidas as funções básicas do protocolo SIP que tem participação fundamental na viabilização de VoIP: localização de um sistema final, sinalização da intensão de se comunicar, negociação dos parâmetros e estabelecimento de uma sessão e término de uma sessão previamente estabelecida (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). A Figura1 exibe uma típica troca de mensagens SIP entre dois usuários que desejam se comunicar, André e Guilherme. Para referência no texto, cada mensagem foi identificada com uma letra “M” e um número entre parênteses. O processo começa com o usuário André, no domínio “lima.com” desejando realizar uma chamada ao usuário Guilherme, no domínio “santos.com”. Os usuários são identificados fora de seu domínio pela sua identidade SIP, um tipo de URI (Uniform Resource Identifier) similar a um endereço de email. Para o caso presente, as identidades SIP poderiam ser: sip:[email protected] e sip:[email protected]. Portanto, o usuário André constrói uma solicitação SIP INVITE (a mensagem M1) conforme a seguir: 4 INVITE sip:[email protected] SIP/2.0 Via:SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKfw19b Max-Forwards: 70 To: Guilherme Santos <sip:[email protected]> From: André Lima <sip:[email protected]>;tag=76341 Call-ID: jlaks984309k CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Type: application/sdp Content-Length: 158 (Conteúdo SDP não exibido) Figura 1: Estabelecimento de uma sessão SIP O cabeçalho da mensagem SIP vai da primeira linha até o campo Content-Length. A primeira linha da mensagem de solicitação exibe o método (INVITE), a identidade SIP do destino (sip:[email protected]) e a versão do protocolo (SIP/2.0). A seguir vem o campo Via, que exibe o endereço e a porta para o qual o usuário André espera receber a resposta de sua solicitação. Neste caso, “pc145.lima.com” é um nome que pode ser traduzido por DNS para o endereço IP 100.101.102.103 e a porta 5060 é a porta padrão do SIP. Ainda no campo Via, há o parâmetro branch que serve como um identificador de transação. Desta forma, respostas referentes a esta transação podem ser identificadas, pois deverão possuir o mesmo valor no parâmetro branch. O campo Max-Forwards exibe a quantidade máxima de dispositivos SIP que a mensagem pode atravessar. A cada salto o campo é decrementado e quando chega a zero é descartado pelo dispositivo SIP que receber a mensagem. 5 O campo To carrega um nome de exibição (opcional) e a URI SIP que identifica o destinatário. O campo From carrega um nome de exibição (opcional) e a URI SIP que identifica o chamador. Observa-se também a presença do parâmetro tag, que é uma sequência de caracteres gerada aleatoriamente pela fonte. O próximo campo é o Call-ID, outra sequência de caracteres aleatória gerada pela fonte com o objetivo de identificar uma sessão SIP e, portanto, deve ser única no dispositivo SIP de origem. Na verdade, os User Agents de origem e destino, também chamados de User Agent Client (UAC) e User Agent Server (UAS), respectivamente, contribuem com a identificação da chamada cada um com mais uma sequência de caracteres aleatória, que são os parâmetros tag nos campos To e From. Esses três valores (Call-ID, tag do campo To e tag do campo From) identificarão completamente um diálogo aberto entre origem e destino. Na mensagem anterior não há parâmetro tag no campo To porque ele será adicionado quando o destinatário responder a solicitação INVITE. O campo seguinte é o CSeq (Command Sequence), que traz um valor inteiro e o nome do método. A cada nova solicitação enviada dentro de um diálogo o valor inteiro deve ser incrementado. No exemplo acima, o valor do campo foi iniciado com um (1), mas poderia ser qualquer inteiro maior que zero. É oportuno dizer que os campos Via, Max-Forwards, To, From, Call-ID e CSeq compõem o menor conjunto de campos obrigatórios no cabeçalho de qualquer solicitação SIP (JOHNSTON, 2009). O próximo campo na mensagem INVITE é o Contact, que contém o SIP URI do originador da chamada para o qual o User Agent de destino poderá encaminhar as transações seguintes diretamente (sem passar por dispositivos SIP intermediários). Os dois campos seguintes, Content-Type e Content-Length, informam o tipo de mensagem que está sendo carregada no corpo do protocolo SIP e qual o tamanho desta mensagem, respectivamente. Importa dizer que a mensagem INVITE aqui exibida não contém todos os campos possíveis para o método em questão. Uma lista completa dos campos possíveis numa mensagem INVITE, bem como em qualquer outra mensagem, está disponível em (JOHNSTON, 2009) e (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). Apesar de conhecer a identidade SIP do destinatário, o usuário André não conhece o seu endereço IP atual. Portanto, de alguma forma, a mensagem SIP deve ser roteada até o dispositivo onde está o UA de destino. Para isso, o UAC confia num servidor SIP chamado proxy. Servidores SIP serão abordados posteriormente, por hora importa que um SIP proxy é capaz de receber uma mensagem SIP em seu domínio local, determinar para qual domínio ela está endereçada, encaminhar essa mensagem para o SIP proxy no domínio de destino para que este, finalmente, o entregue ao UAS. Assim, como pode ser observado na Figura 1, a M1 é encaminhada ao servidor proxy do domínio “lima.com”. Através de uma pesquisa DNS SRV, o servidor proxy do domínio local obterá o endereço do servidor proxy do domínio remoto, “santos.com”. Contudo, antes de encaminhar uma mensagem SIP, um dispositivo SIP adiciona um campo Via com seu próprio endereço, adiciona um parâmetro received (que tem como valor o endereço IP do UAC) ao campo Via original da mensagem e decrementa o valor no campo Max-Forwards. Desta forma, M2 será: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP proxy.lima.com:5060;branch=z9hG4bK898.78 6 Via: SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 Max-Forwards: 69 (O resto não se altera) Adicionalmente, o servidor proxy do domínio “lima.com” também opta por retornar uma mensagem “100 Trying” (M3) para o UAC, informando que recebeu a solicitação INVITE e tomou providências acerca dela. Isto impede que o UAC faça retransmissões da solicitação INVITE (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). Vale destacar que essa não é uma mensagem obrigatória. Ao receber M2, o servidor proxy do domínio “santos.com” adiciona mais um campo Via com seu endereço, adiciona um parâmetro received ao campo Via inserido pelo servidor proxy anterior, decrementa o valor no campo Max-Forwards e encaminha a mensagem ao UAS, Guilherme. Desta forma, M4 será: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP pr.santos.com:5060;branch=z9hG4bKhjasu8898ukf Via: SIP/2.0/UDP proxy.lima.com:5060;branch=z9hG4bK898.78;received=100.101.102.104 Via: SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 Max-Forwards: 68 (O resto não se altera) Como anteriormente, o proxy do domínio “santos.com” envia uma mensagem “100 Trying” para o proxy do domínio “lima.com” informando que está trabalhando na solicitação que lhe foi encaminhada. Contudo, essa mensagem não é repassada pelo proxy do domínio “lima.com” para o UAC, pois mensagens “100 Trying” são do tipo hop-to-hop, isto é: nunca são repassadas. Ao receber a M4, o UAS opta por gerar uma mensagem “180 Ringing”, M6, para informar que já recebeu a solicitação INVITE e está aguardando ação do usuário (por exemplo, atender ou rejeitar a ligação). Mensagens “180 Ringing” também são opcionais, mas, ao contrário da “100 Trying”, devem ser repassadas até retornar ao UAC. Como M4 chegou ao destinatário final com três campos Via, o User Agent sabe que a solicitação passou por dois dispositivos SIP intermediários e a rota de retorno para todas as mensagens dentro do contexto da transação INVITE devem passar pelos mesmos dispositivos SIP. Desta forma, M6 é encaminhada ao proxy do domínio “santos.com” conforme mostrado a seguir: SIP/2.0 180 Ringing Via: SIP/2.0/UDP pr.santos.com:5060;branch=z9hG4bKhjasu8898ukf; received=200.201.202.203.204 Via: SIP/2.0/UDP proxy.lima.com:5060;branch=z9hG4bK898.78;received=100.101.102.104 Via: SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 Max-Forwards: 70 To: Guilherme Santos <sip:[email protected]>;tag=762920 From: André Lima <sip:[email protected]>;tag=76341 Call-ID: jlaks984309k CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0 Essa mensagem simplesmente copia os campos Via, To, From, Call-ID e CSeq da mensagem de requisição INVITE original, mas como agora não há corpo na mensagem, o campo Content-Type não existe e o valor de 7 Content-Length é zero. Além disto, o parâmetro tag foi adicionado ao campo To. É importante atentar para o fato que, ainda que esta mensagem tenha como origem o usuário Guilherme e destino o usuário André, os campos To e From não se alteram. Isto acontece porque estes campos identificam a direção da requisição e não a direção de uma mensagem específica (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). Deve-se notar ainda que o campo Contact agora contém o endereço para o qual o usuário André poderá enviar as próximas transações diretamente para o usuário Guilherme sem auxílio dos servidores proxy, a saber: “sip:[email protected]”, um nome que pode ser traduzido por DNS para o endereço IP 200.201.202.203. Ao receber M6, o proxy do domínio “santos.com” checa que o primeiro campo Via contém seu próprio endereço, então ele o remove e encaminha a mensagem para o endereço e porta informados no segundo campo Via (proxy.lima.com, 5060). Similarmente, o proxy do domínio “lima.com”, ao receber M7 observa que o endereço no primeiro campo Via é o seu próprio endereço. Logo, ele o remove e, finalmente, encaminha a mensagem ao originador, o UAC. Assim, M8 é: SIP/2.0 180 Ringing Via: SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 Max-Forwards: 68 To: Guilherme Santos <sip:[email protected]>;tag=762920 From: André Lima <sip:[email protected]>;tag=76341 Call-ID: jlaks984309k CSeq: 1 INVITE Contact: <sip:[email protected]> Content-Length: 0 No exemplo presente o usuário Guilherme decide atender a ligação, portanto uma mensagem “200 OK” é enviada. Essa resposta é construída da mesma forma que a “180 Ringing”, contendo o mesmo parâmetro tag no campo To e o mesmo endereço de contato direto no campo Contact. Uma resposta “200 OK” também indica que os tipos e formatos de mídias negociadas pelo SDP foram aceitos, por isso no corpo da mensagem SIP é levada uma mensagem SDP carregando essa informação. Como a mensagem “200 OK” ainda faz parte da transação INVITE, o caminho de retorno deve passar pelos mesmos dispositivos SIP como aconteceu com a mensagem “180 Ringing”. Desta forma, M9 é: SIP/2.0 200 OK Via: SIP/2.0/UDP pr.santos.com:5060;branch=z9hG4bKhjasu8898ukf; received=200.201.202.203.204 Via: SIP/2.0/UDP proxy.lima.com:5060;branch=z9hG4bK898.78;received=100.101.102.104 Via: SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 Max-Forwards: 70 To: Guilherme Santos <sip:[email protected]>;tag=762920 From: André Lima <sip:[email protected]>;tag=76341 Call-ID: jlaks984309k CSeq: 1 INVITE Contact: <sip:[email protected]> 8 Content-Type: application/sdp Content-Length: 158 (Conteúdo SDP não exibido) Como anteriormente, os servidores proxy no caminho verificam seus endereços no primeiro campo Via da mensagem que recebem, removem este campo, decrementam o valor no campo Max-Forwards e repassam a mensagem para o próximo endereço e porta do campo Via abaixo. Neste ponto, é interessante destacar que respostas à requisições SIP são sempre compostas por um número de três dígitos seguido por uma frase informativa, como em: “100 Trying”, “180 Ringing”, “200 OK”. Estas respostas são classificadas de acordo com o primeiro dígito de seu número. Os dois dígitos seguintes servem como um subtipo. A Tabela I, extraída de (SIÉCOLA, 2010), mostra as respostas SIP com suas classificações. Tabela 1: Classes de respostas SIP RESPOSTA CLASSE 1xx Informativas 2xx Sucesso 3xx Redirecionamento 4xx Falha na Requisição 5xx Falha no Servidor 6xx Falha Global O último passo para estabelecer a sessão é o UAC confirmar o recebimento da resposta “200 OK”, permitindo então o início do tráfego de mídia usando outro protocolo (o RTP, por exemplo). Essa confirmação é feita com uma requisição ACK, que é a mensagem M12: ACK sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP pc145.lima.com:5060;branch=z9hG4bKf992uij Max-Forwards: 70 To: Guilherme Santos <sip:[email protected]>;tag=762920 From: André Lima <sip:[email protected]>;tag=76341 Call-ID: jlaks984309k CSeq: 2 ACK Content-Length: 0 Inicialmente deve-se observar que a primeira linha da requisição agora conta com o endereço que o UAS previamente informou como sendo seu endereço de contato direto. Desta forma, o usuário André pode enviar o ACK diretamente para o usuário Guilherme sem intervenção dos servidores proxy. O campo Contact também foi removido, uma vez que o UAS já foi informado do endereço de contato direto do UAC. Nota-se ainda que o parâmetro branch do campo Via é diferente dos anteriores, uma vez que esta mensagem ACK é considerada uma transação diferente da INVITE. Por outro lado, os parâmetros tag dos campos To e From, bem como o Call-ID não se alteraram porque esta mensagem ainda faz parte do mesmo diálogo que as mensagens anteriores. Agora, a troca de informações da mídia negociada pode então finalmente 9 acontecer. Após o tráfego de mídia, o usuário Guilherme deseja encerrar a sessão e para isso envia uma Requisição BYE para o usuário André, a mensagem M13: BYE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP soft667.santos.com:5060;branch=z9hG4bK098jUkj Max-Forwards: 70 To: André Lima <sip:[email protected]>;tag=76341 From: Guilherme Santos <sip:[email protected]>;tag=762920 Call-ID: jlaks984309k CSeq: 3 BYE Content-Length: 0 Novamente, o parâmetro branch é diferente daquele nas requisições INVITE e ACK porque o BYE é uma transação diferente, contudo os parâmetros tag e o Call-ID permanecem os mesmos já que ainda trata-se do mesmo diálogo. Contudo, como agora esta é uma requisição direcionada ao usuário André, os campos To e From estão trocados em relação às mensagens anteriores. Portanto, neste momento o usuário Guilherme age como um UAC e o usuário André como um UAS. Isto posto, infere-se que toda implementação SIP deve contar com um módulo cliente e um módulo servidor, visto que estes papéis são dinâmicos dentro de um mesmo diálogo. Para finalizar a sessão, o UAS (usuário André) agora responde a solicitação BYE com uma mensagem “200 OK”, M14: SIP/2.0 200 OK Via: SIP/2.0/UDP soft667.santos.com:5060;branch=z9hG4bKfw19b; received=200.201.202.203 Max-Forwards: 70 To: André Lima <sip:[email protected]>;tag=76341 From: Guilherme Santos<sip:[email protected]>;tag=762920 Call-ID: jlaks984309k CSeq: 2893 BYE Content-Length: 0 Com isso, completa-se o ciclo SIP de localização de usuário, sinalização, estabelecimento e encerramento de um diálogo. Contudo, não discutido aqui é como os servidores proxy são capazes de localizar um usuário. Na verdade há diferentes mecanismos para cumprir com esta finalidade, seja usando o protocolo SIP ou outros protocolos. Servidores SIP Servidores SIP são aplicações que recebem solicitações SIP, executam alguma operação com ela e devolvem uma resposta ao dispositivo que a solicitou. Há três tipos de servidores SIP: servidor de proxy, servidor de redirecionamento e servidor de registro. Como são entidades lógicas, mais de um servidor SIP pode estar hospedado num mesmo dispositivo físico (YOSHIOKA, 2003). 10 Servidor Proxy A sessão 2.1 introduziu o servidor proxy como um facilitador de troca de mensagens SIP, sendo o elemento responsável pela localização do User Agent alvo da requisição. É importante esclarecer que um proxy diferencia-se de um User Agent em três pontos chave (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011): Não formula requisições SIP, apenas responde e trabalha em solicitações de User Agents (os métodos CANCEL e ACK são exceções); Não é multimídia, isto é, não produz fluxos de mídia (exceto o próprio texto contido nas mensagens SIP); Não analisa o corpo de uma mensagem SIP, trabalhando exclusivamente nos campos de cabeçalho. Na configuração exibida na Figura 1, conhecida como Trapezoide SIP, cada User Agent é configurado previamente para saber qual é o proxy padrão no seu domínio. Toda mensagem SIP será encaminhada para este servidor quando o UAC não souber qual endereço de contato direto do UAS com quem pretende estabelecer uma sessão. Quando recebe uma requisição SIP, o proxy analisa para qual domínio a mensagem está destinada e obtém o endereço do servidor de proxy do domínio de destino, tipicamente através de uma pesquisa DNS SRV. Alternativamente, por motivos que estão fora do escopo da presente discussão, um proxy também pode rejeitar uma solicitação. Neste caso é retornada uma mensagem “406 Not Acceptable” ao UA. Dentro do seu domínio, um servidor proxy tem acesso a uma abstração chamada de serviço de localização, tipicamente um banco de dados populado pelo servidor de registros (Registrar – tratado posteriormente) que armazena a relação entre identidades SIP externas e o endereço atual do dispositivo onde o UA está sendo executado. É desta forma que os servidores proxy resolvem o problema de localização do alvo de uma requisição SIP. Ademais, um servidor proxy pode operar com estado (stateful)ou sem estado (stateless). No modo stateful, o proxy mantém um contador de tempo e registros para todas as requisições e respostas que recebe e repassa e usa essas informações no processamento futuro de mensagens pertencentes a um mesmo diálogo. No modo stateless não há contadores de tempo nem registros das requisições e respostas repassadas anteriormente, desta forma não há retransmissões de mensagens perdidas e nenhum tipo de processamento para mensagens futuras pertencentes a um mesmo diálogo (YOSHIOKA, 2003). Servidor de Redirecionamento Tal como um servidor proxy, um servidor de redirecionamento também auxilia no processo de localização do destinatário de uma requisição SIP, mas não encaminha requisições SIP. Em vez disto, apenas responde ao UA de origem qual é o endereço de contato para atingir o UA de destino, ou um endereço de próximo salto para um servidor proxy ou outro servidor de redirecionamento mais próximo, sem se envolver de fato na comunicação (YOSHIOKA, 2003). Detalhamentos sobre as mensagens trocadas entre um UA e um servidor de redirecionamento podem ser obtidos em (JOHNSTON, 2009). Servidor de Registro 11 Um servidor de registro, também chamado Registrar, aceita requisições SIP REGISTER. Qualquer outra solicitação recebe como resposta um “501 Not Implemented” (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). A Figura 2 mostra uma situação em que o usuário Guilherme solicita ao servidor de registro em seu domínio que crie um vínculo entre sua identidade SIP externa (também chamada de Address-of-Record, ou simplesmente AOR) e seu endereço atual. Figura 2: Exemplo de Registro SIP A solicitação REGISTER é: REGISTER sip:reg.santos.com SIP/2.0 Via: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bK019jesd Max-Forwards: 70 To: Guilherme Santos <sip:[email protected]> From: Guilherme Santos <sip:[email protected]>;tag=456098 Call-ID: 3487654 CSeq: 1 REGISTER Contact: sip:[email protected] Content-Length: 0 O campo To traz o AOR que para o qual o UA deseja registrar o seu endereço de contato atual. O campo Contact traz o endereço de contato atual que deve ser associado ao AOR. Os campos To e From usualmente trazem o mesmo endereço, exceto quando há um terceiro dispositivo que faz o registro em nome de outro UA (JOHNSTON, 2009). Ao receber a requisição REGISTER, o servidor de registro atualiza o banco de dados usado pelos servidores proxy e de redirecionamento para localização de usuário e responde com uma mensagem “200 OK” informando que o registro foi feito com sucesso da seguinte forma: SIP/2.0 200 OK Via: SIP/2.0/UDP 200.201.202.203:5060;branch=z9hG4bK019jesd Max-Forwards: 70 To: Guilherme Santos <sip:[email protected]>;tag=374060164 From: Guilherme Santos <sip:[email protected]>;tag=456098 Call-ID: 3487654 CSeq: 1 REGISTER 12 Contact: sip:[email protected];expires=3600 Content-Length: 0 O campo Contact confirma o endereço de contato que foi registrado para o AOR e traz um parâmetro expires que informa a quantidade de tempo em segundos para a qual o registro permanecerá válido. Se o UA desejar que o seu registro continue válido por mais tempo, basta enviar outra requisição REGISTER ao servidor de registro antes que o tempo expire. Analogamente a um sistema de telefonia celular, o registro tipicamente é feito enquanto o dispositivo SIP está iniciando. A forma como o UA toma conhecimento do endereço do servidor de registro está descrita na seção 10.2.6 de (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). SDP – Session Description Protocol Para garantir o processo de negociação das mídias a serem trocadas numa sessão, o SIP encapsula outro protocolo, comumente o SDP. O SDP, definido inicialmente em no RFC 2327 (HANDLEY e JACOBSON, 2011), teve como propósito original descrever sessões multicast estabelecidas sobre o backbone multicast da Internet, o MBONE e, portanto, vários de seus campos tem uso limitado (ou nenhum uso) para as sessões unicast estabelecidas atualmente com o SIP, mas foram mantidos na nova definição do protocolo, RFC 4566 (HANDLEY, JACOBSON e PERKINS, 2011), para garantir a compatibilidade. De acordo com (JOHNSTON, 2009), as principais informações carregadas numa mensagem SDP sobre a sessão de mídia são: endereço IP (IPv4 ou IPv6) ou nome de host, perfil RTP (tipicamente “RTP/AVP”), número da porta que será usada para troca de fluxo de mídia, tipo de mídia a ser trocada (vídeo, áudio, texto e etc.) e esquema de codificação de mídia. Similarmente ao SIP, o SDP é um protocolo textual cujas mensagens são compostas por campos. Cada linha da mensagem é um campo e começa com uma letra minúscula. Nem todos os campos são obrigatórios, mas, se presentes, devem aparecer na ordem especificada na Tabela II, retirada de (SIÉCOLA, 2010). Tabela 2: Campos SDP CAMPO NOME OBRIGATÓRIO v= Versão do protocolo Sim o= Criador e identificador da sessão (origem) Sim s= Nome da sessão Sim i= Informação sessão u= Uniforme Resource Identifier – URI Não e= Endereço de email Não p= Número de telefone Não sobre a Não 13 c= Informação conexão sobre b= Informação sobre largura de banda Não t= Tempo para início e término da sessão Sim r= Número de repetições Não z= Correções horário Não k= Chave de criptografia (não utilizado mais) Não a= Linha de atributos da sessão Não m= Informações sobre a mídia Não a= Atributos da mídia Não de a fuso Sim Como detalhado em (ROSENBERG e SCHULZRINE, 2011) e amplamente exemplificado em (JOHNSTON e SPARKS, 2011), o SDP é baseado no modelo de oferta e resposta (Offer/Answer Model). Resumidamente, neste modelo um participante da sessão (o UAC) gera uma mensagem SDP (a oferta) informando quais mídias (e seus respectivos esquemas de codificação) gostaria de trocar, bem como seu endereço IP e porta onde gostaria de receber o fluxo de mídia. O outro participante (UAS) responde com uma mensagem SDP (a resposta) que tem um fluxo de mídia correspondente para cada fluxo de mídia descrito na oferta (isto é, para cada campo “m =” na oferta, deve haver um campo “m =” correspondente na resposta) indicando se o fluxo é aceitável ou não. Na resposta, também são informados o endereço IP e porta onde o UAS gostaria de receber o fluxo de mídia sendo negociado. Para exemplificar, abaixo segue a oferta SDP carregada em M1 da Figura 1: v=0 o = André 2890844526 2890844526 IN IP4 pc145.lima.com s=c = IN IP4 100.101.102.103 t=00 m = audio 46000 RTP/AVP 0 6 8 a = rtpmap : 0 PCMU/8000 a = rtpmap : 6 DVI4/16000 a = rtpmap : 8 PCMA/8000 A primeira linha traz o campo versão. A versão atual e única do protocolo SDP é a zero (0). Portanto, uma mensagem SDP válida sempre começa com “v = 0”. O campo seguinte contém informações sobre o originador da mensagem. Esse campo identifica exclusivamente a sessão no contexto do SDP. O primeiro valor depois do “=” é o parâmetro username, que 14 tipicamente contém o nome de login ou host do originador, ou simplesmente “-”. A seguir estão os parâmetros session-id e version. Em (HANDLEY e JACOBSON, 2011) e (HANDLEY, JACOBSON e PERKINS, 2011) recomenda-se que estes parâmetros sejam um timestamp NTP (Network Time Protocol) ou um número aleatório qualquer. Logo após, está o parâmetro network-type que é sempre “IN” para Internet, seguido pelos parâmetros address-type (“IP4” ou “IP6”, para IPv4 e IPv6 respectivamente) e address, que informa o endereço IP do originador ou nome DNS do host. O campo seguinte é o nome de sessão. Este campo não tem utilidade para o estabelecimento de uma sessão unicast com o SIP, contudo trata-se de um campo obrigatório e como tal não pode deixar de ser incluído. Assim, (ROSENBERG e SCHULZRINE, 2011) recomenda que o campo seja preenchido com um espaço em branco ou com um traço (“-”). A linha seguinte traz informações sobre a conexão. Os parâmetros neste campo são network-type, address-type e address, que são preenchidos conforme já explicado no campo “o =”, exceto que aqui o parâmetro address deve conter o endereço IP do participante. A próxima linha indica o tempo para início e término da sessão. Contudo, conforme (ROSENBERG e SCHULZRINE, 2011), sessões unicast devem ser criadas e terminadas através de um protocolo de sinalização, como o SIP. Então os parâmetros start-time e stop-time neste campo devem ser preenchidos com “0”. A mensagem SDP segue com o campo “m =”, que especifica qual o tipo de mídia deseja-se trocar. O primeiro parâmetro é media que, de acordo com (HANDLEY e JACOBSON, 2011) pode ser “áudio”, “vídeo”, “text”, “application”, “message”, “image”, ou “control”. Seguindo, há os parâmetros port, que identifica em qual porta o participante gostaria de receber o fluxo de mídia, e o transport que exibe o protocolo de camada de transporte ou o perfil RTP que será usado. O último parâmetro é o format-list que traz os esquemas de codificação para a mídia sendo negociada que estão disponíveis. As três linhas seguintes são atributos, campos opcionais e que podem ser usados para trazer mais informações sobre a mídia listada no campo “m =”. Neste caso, apenas trazem explicitamente informações sobre os esquemas de codificação listados no parâmetro format-list. Como determina o modelo Offer/Answer, o UAS agora deve construir uma resposta que aceite ou rejeite a oferta. No caso de rejeição, basta que o UAS formule uma mensagem SDP que tenha “0” (zero) no parâmetro port do campo “m =”. Esta é a forma que o SDP usa para comunicar ao outro participante que não tem interesse em trocar uma mídia oferecida (ROSENBERG e SCHULZRINE, 2011). No exemplo da Figura 1, o usuário Guilherme aceita a oferta. Neste caso, a resposta deve conter uma especificação de mídia coincidente com a oferta. Portanto, a mensagem SDP carregada em M9 pode ser: v=0 o = Guilherme 2890844570 2890844570 IN IP4 soft667.santos.com s=c = IN IP4 200.201.202.203 t=00 m = audio 50000 RTP/AVP 8 a = rtpmap : 8 PCMA/8000 Deve-se notar que o UAS selecionou apenas um dos três esquemas de codificação oferecidos, indicando que este deve ser o codec usado. 15 Os exemplos de mensagens SDP abordados aqui exploraram apenas os campos obrigatórios. Em (JOHNSTON, 2009) e (HANDLEY, JACOBSON e PERKINS, 2011) são oferecido detalhamentos sobre cada campo da Tabela II. Em (JOHNSTON e SPARKS, 2011) há numerosos exemplos de trocas de mensagens oferta/resposta. RTP – Real-time Transport Protocol O RTP (Real-Time Transport Protocol), definido em (SCHULZRINNE, CASNER e FREDERICK, 2011), foi desenvolvido para tornar possível o transporte de pacotes contendo voz, vídeo ou outro tipo de mídia (informação) sobre uma rede IP. O protocolo permite a detecção de pacotes perdidos, variações no atraso (jitter) e chegada fora de ordem, contudonão garante qualidade de serviço para a mídia sendo transportada, isto é: pacotes RTP são tratados da mesma forma como qualquer outro pacote numa rede IP. Assim sendo, o que ocorre é um trabalho em conjunto com o RTCP (Real-time Transport Control Protocol), que é usado para monitorar estatísticas referentes às trocas de pacotes RTP (SCHULZRINNE, 2011). Sendo usado por aplicações cuja natureza é de tempo real, o transporte de pacotes RTP requer uma latência fim-a-fim tão baixa quanto possível através da Internet. Para isto, as aplicações tipicamente utilizam o protocolo UDP na camada de transporte, uma vez que não há tempo para detectar, sinalizar e retransmitir um pacote perdido. Diferentemente do SIP e do SDP, o RTP é um protocolo orientado a bit e possui um formato predefinido de cabeçalho composto por 12 bytes fixos, podendo ser estendido. O cabeçalho RTP é mostrado na Figura 3. Figura 3: Cabeçalho RTP O empacotamento da mídia codificada se dá simplesmente pela adição de um cabeçalho RTP a pequenas amostras do fluxo de bits codificado pelo codec negociado anteriormente com o SDP, formando então um pacote RTP. Na recepção, os pacotes RTP são tratados de acordo com seu cabeçalho, podendo até ser descartado caso seja um pacote contendo um fragmento de mídia que esteja atrasado demais para ser reproduzido, por exemplo. O cabeçalho RTP contém, de acordo com (JOHNSTON, 2009): Version (V): Traz a versão do protocolo sendo usado. A versão atual em uso do RTP é a 2. Padding (P): Se este bit estiver setado (igual a 1), significa que há bytes de preenchimento no final do pacote RTP para garantir que este tenha um tamanho fixo. O uso deste campo é mais comumente observado quando a mídia está criptografada. Extension (X): Se este bit estiver setado, há uma extensão ao final do cabeçalho. CSRC Count (CC): Contém o número de campos CSRC identifiers que há no cabeçalho. Este campo 16 é usado apenas quando mixers unem diferentes fluxos RTP formando um fluxo só. Marker (M): Esse bit é usado no nível de aplicação. Quando setado, significa que os dados deste pacote têm alguma relevância especial para aplicação em questão. Por exemplo, pode indicar o fim de um quadro completo em um vídeo, ou o início de um surto de fala numa conversa com supressão por silêncio. Payload Type (PT): O RTP foi desenvolvido para ser um protocolo de transporte de mídia genérico, isto é, permitir o transporte de mídias codificadas de diversas formas (com codecs distintos). Assim sendo, este campo é necessário para identificar com um número inteiro o codec previamente negociado com o SDP (e agora em uso na sessão). Em (SCHULZRINNE e CASNER, 2011) é detalhado o perfil “RTP/AVP” e pode ser encontradas tabelas que especificam os valores possíveis para o campo TP. Sequence Number: O valor nesse campo é incrementado a cada pacote RTP enviado e é usado para detectar pacotes perdidos ou que chegaram foram de ordem. Importa notar que apesar de detectar estes problemas o RTP não os trata, deixando essa função para o algoritmo do codec sendo utilizado. Timestamp: Este campo indica quando o primeiro byte do payload deste pacote foi amostrado, possibilitando ao receptor reproduzir a amostra no tempo adequado, pela introdução de atrasos para remoção de jitter, por exemplo. SSRC identifiers: O valor neste campo identifica a fonte (Synchronization Source) do pacote RTP. Para iniciar uma sessão, cada participante escolhe de forma aleatória um identificador, caso este seja igual ao de alguma outra fonte participando da sessão, o processo de escolha se repete até que todos os participantes tenham um identificador exclusivo. Esse campo introduz uma camada de segurança na comunicação RTP contra um ataque do tipo media spamming, onde uma terceira parte tenta invadir uma sessão de mídia já estabelecida. A menos que o atacante possa determinar o SSRC de uma das partes, qualquer pacote por ele enviado será descartado. CSRC identifiers: Pode haver nenhum ou até quinze campos deste num pacote RTP (haja visto que o tamanho do campo CC é de 4 bits). Só existirá se o pacote RTP estiver sendo enviado por um mixer, que junta pacotes RTP vindos de diferentes fontes. RTCP – Real-time Transport Control Protocol Para que os participantes de uma sessão RTP tenham subsídios para medir a qualidade da comunicação, (SCHULZRINNE e CASNER, 2011) também define o RTCP (Real-Time Transport Control Protocol), que se baseia na transmissão periódica de pacotes de controle para todos os participantes da sessão. O RTCP desempenha, dentre outros, dois papéis que importa destacar. Primeiro, e principalmente, ele deve reunir informações estatísticas sobre aspectos de qualidade a respeito do recebimento da mídia e enviar tais informações à fonte (ou fontes, se na sessão houver vários participantes – sessão multicast). Esses dados podem ser usados para realizar codificação adaptativa da mídia, por exemplo, além de detecção de falhas na transmissão. Em segundo lugar, o RTCP provê um identificador exclusivo para os sistemas finais da sessão RTP conhecido como CNAME. Essa é também a função do SSRC visto anteriormente, contudo o SSRC de um participante pode ser alterado caso seja detectado um conflito ou caso a aplicação comunicante reinicie. Nestes casos, o CNAME permite correlacionar um participante ao seu novo SSRC, evitando que todo o processo de estabelecimento da sessão seja executado novamente. A taxa com a qual um participante envia pacotes RTCP para os demais deve ser controlada, caso contrário a comunicação de mídia, que é a principal razão do RTP, ficaria comprometida. Sendo assim, o protocolo também provê mecanismos para que seja calculado um intervalo de envio entre pacotes RTCP, de tal forma 17 que a banda ocupada por eles seja suficientemente baixa. Contudo, a forma como isto é realizado está além do escopo deste trabalho e está detalhada na sessão 6.2 de (SCHULZRINNE e CASNER, 2011). São definidos cinco tipos de pacotes RTCP no RFC 3551, (SCHULZRINNE e CASNER, 2011): Sender report (SR): São os relatórios enviados por um participante ativo a todos os outros participantes ativos da sessão com estatísticas sobre a recepção e transmissão dos pacotes RTP no intervalo decorrido. Receiver report (RR): São relatórios para participantes “ouvintes”, isto é, que não enviam pacotes RTP. Source description (SDES): Usado para enviar o CNAME de um participante. Também pode conter informações adicionais como nome, email, telefone, entre outras. End of participation (BYE): Enviado por um participante quando deseja deixar a sessão. Application specific (APP): Este tipo de pacote foi inserido na definição do protocolo para permitir extensões, isto é: um pacote APP levará informações específicas para a aplicação, para realizar uma ação não definida em (SCHULZRINNE e CASNER, 2011). Para diminuir o overhead de controle na comunicação, múltiplos pacotes RTCP são concatenados e enviados num único datagrama UDP. Cada pacote RTCP neste datagrama poderia ser processado individualmente sem que nenhuma restrição quanto a sua ordem ou combinação fosse imposta, contudo para que as funcionalidades do protocolo sejam garantidas, cada datagrama enviado deve conter no mínimo dois pacotes RTCP diferentes: um pacote de relatório (isto é um SR ou um RR) e um SDES com o CNAME para garantir que participantes recém chegados obtenham o CNAME dos demais participantes tão logo quanto possível. 18 VoIP: Segurança da Informação A informação já se tornou o ativo mais valioso das corporações e como tal, independente da forma como existe e é manipulada (em papel ou eletronicamente), sua proteção passou a ser mandatória. A norma ABNT NBR ISO/IEC 27002 define segurança da informação como a proteção da informação contra os diferentes tipos de ameaças a fim de minimizar o risco ao negócio, garantir sua continuidade e maximizar o retorno sobre os investimentos e as oportunidades de negócio. Existem três aspectos chave da segurança da informação comumente referidos como CIA Triad, ou Tríade CID: Confidencialidade, Integridade e Disponibilidade. A seguir estão expostos estes conceitos de maneira breve e posteriormente apresentam-se definições para alguns dos termos mais usados em se tratando de segurança da informação. Confidencialidade, Integridade e Disponibilidade A confidencialidade significa, conforme (BRAUMANN, CAVIN e SCHMID, 2011), que nenhum acesso à informação deverá ser garantido a sujeitos ou sistemas não autorizados, isto é, apenas aqueles com os direitos e privilégios necessários serão capazes de acessar a informação, esteja ela armazenada, em processamento ou em trânsito. A violação da confidencialidade pode ocorrer por modo intencional através de ataques, captura de tráfego, engenharia social, entre outros, bem como de forma não deliberada por imperícia ou negligência. No caso específico do VoIP, a confidencialidade preocupa-se com a não intercepção de uma conversa por uma terceira parte não autorizada, como nos ataques do tipo man-in-the-middle (MITM). A integridade é o aspecto que se preocupa com a confiança que pode ser depositada sobre uma informação obtida. Além disto, uma informação é dita íntegra se não sofreu nenhuma alteração entre os momentos de transmissão e recepção. Desta forma, em (BRAUMANN, CAVIN e SCHMID, 2011) são definidas duas categorias de integridade: integridade de fonte e integridade de dados. A integridade de fonte garante que uma informação realmente vem do remetente correto. A integridade dados se refere à confiabilidade da informação em si, isto é se a informação não foi comprometida (manipulada) em algum momento anterior à leitura pelo destinatário pretendido. Adicionalmente, (STEWART, TITTEL e CHAPPLE, 2008) atribui à integridade três objetivos: Impedir que sujeitos não autorizados realizem modificações na informação; Impedir que sujeitos autorizados realizem modificações não autorizadas; e Garantir a legitimidade, verificabilidade e consistência da informação, esteja ela armazenada, em trânsito ou em processamento. Em se tratando de VoIP, a integridade deve garantir que os pacotes de mídia cheguem ao destinatário sem sofrerem manipulações maliciosas. A disponibilidade é o aspecto da segurança da informação que diz que esta deve estar disponível para ser 19 acessada quando solicitada por um sujeito ou sistema legítimo (BRAUMANN, CAVIN e SCHMID, 2011). Isto requer que toda estrutura que permite acesso e transporte da informação deve ser protegida para que não seja degradada ou se torne indisponível. Com relação à disponibilidade, os tipos de ataque que representam maior ameaça são DoS (Denial of Service) e DDoS (Distributed Denial of Service) , que visam danificar ou sobrecarregar sistemas. Especificamente para o VoIP, disponibilidade significa garantir que o serviço estará operante para os usuários, evitando qualquer efeito adverso resultante de um ataque do tipo negação de serviço, cujas consequências podem ser perda total ou parcial da comunicação (BRAUMANN, CAVIN e SCHMID, 2011). Definições Nesta sessão definem-se termos importantes mais comumente usados quando se discute sobre segurança da informação. De acordo com (STEWART, TITTEL e CHAPPLE, 2008), tem-se: Vulnerabilidade: Diz respeito às fraquezas de um sistema que podem ser exploradas maliciosamente. Podem estar relacionadas à software, hardware ou processos que apresentam falhas passíveis de serem exploradas de tal forma que comprometa o funcionamento de um sistema ou serviço. Ameaça: A forma como uma vulnerabilidade pode ser explorada determina uma ameaça. É chamada de agente de ameaça a entidade que tira proveito da vulnerabilidade, que pode ser uma pessoa (hacker), um processo ou um evento natural. Risco: É a probabilidade de um agente de ameaça se aproveitar de uma vulnerabilidade. Proteção: É um mecanismo usado para diminuir o risco, podendo ser em nível de software, hardware ou processo. Exemplos de proteção são: firewalls, isolamento de tráfego (VLAN), antivírus, entre outros. Incidente: Quando um agente de ameaça consegue explorar uma vulnerabilidade com sucesso, diz-se que houve um incidente de segurança. Neste caso, um ou mais princípios da tríada CID foram violados. 20 VoIP: Ameaças em VoIP Tipicamente, um atacante (agente de ameaça) inicia seus esforços com um trabalho de reconhecimento, onde busca reunir o máximo possível de informações sobre as vulnerabilidades latentes dos dispositivos, sistemas e identidades dos alvos. De posse desse conhecimento, um ou mais ataques são, então, disparados e se bem sucedidos violarão um ou mais princípios da tríade CID. Contudo, as técnicas usadas para descoberta, escaneamento e identificação de dispositivos, bem como a enumeração de serviços e usuários não serão tratadas neste trabalho. O objetivo desta sessão é expor algumas das principais ameaças de segurança à tecnologia VoIP, primeiro abordando as ameaças inerentes a qualquer rede IP e em seguida as que são particulares aos dispositivos VoIP baseados em SIP. Ameaças Legadas Fundamentalmente, um telefone SIP é um dispositivo IP e como tal também padece com os mesmos problemas de segurança inerentes as redes IP. Ademais, telefones e servidores SIP tipicamente contam com implementações de um série de serviços de rede, incluindo HTTP, telnet, SNMP, TFTP, entre outros (ENDLER e COLLIER, 2007). Portanto, muitas das ameaças atuais ao VoIP já existiam antes mesmo desta tecnologia surgir. Esta sessão apresenta algumas delas. UDP Flood Ataques Flooding são do tipo Negação de Serviço, cujo objetivo é consumir recursos de rede e de sistemas a fim de causar indisponibilidade total ou parcial de um ou vários serviços (ENDLER e COLLIER, 2007). O UDP Flood consiste no envio de centenas de milhares de datagramas UDP direcionados para uma porta específica, causando uma “inundação” de pacotes. O efeito é que o alvo terá que alocar recursos de sistema valiosos (processamento e memória) para tratar os muitos pacotes que chegam, deixando de atender a outras solicitações legítimas naquela e em outras portas. Dependendo da intensidade do ataque e principalmente se este for realizado distribuidamente, o excesso de tráfego pode causar congestionamento na rede, aumentando a cadeia de efeitos colaterais. Por exemplo, um ataque UDP Flood que pode inviabilizar completamente a comunicação VoIP (e praticamente a comunicação de qualquer aplicação numa rede IP) é aquele direcionando à porta 53 de host funcionando como servidor DNS. Neste caso, o ataque é conhecido também como DNS Flood. Como visto anteriormente, o DNS é um serviço crítico para realização de chamadas SIP, portanto seu comprometimento significa a inviabilização de toda comunicação VoIP baseada em SIP dentro do domínio. O UDP Flood é particularmente eficiente neste caso, visto que este é o protocolo de camada de transporte utilizado pelo DNS e porque há firewalls não conseguem distinguir entre um ataque DoS e uma solicitação/resposta DNS válida(ENDLER e COLLIER, 2007). Vale ressaltar que praticamente todos os ataques do tipo DoS e DDoS são especialmente nocivos à 21 comunicação VoIP, uma vez que esta é uma aplicação de tempo real e, portanto, qualquer degradação do serviço ou congestionamento causados por esta classe de ataques causa impacto significativo ao serviço (THERMOS e TAKANEN, 2007). Exaustão de DHCP Comumente, sempre que iniciam, telefones VoIP são configurados por padrão para solicitarem um endereço IP dinamicamente através de uma mensagem DHCPREQUEST. Se um servidor DHCP (Dynamic Host Control Protocol) não estiver disponível, ou se o número máximo de endereços IP já houver sido distribuído, então o telefone não poderá ser usado na rede (ENDLER e COLLIER, 2007). Um ataque de exaustão de DHCP consiste no envio de um número suficientemente alto de requisições ao servidor DHCP com endereços MAC falsos, de tal forma que ocorra o esgotamento do espaço de endereços IP disponível. Assim, quando um cliente da rede, por exemplo um telefone VoIP, solicitar um endereço, não haverá nenhum. O efeito do ataque dura enquanto o “contrato” dos endereços IP não expirar. Envenenamento de Cache DNS O objetivo deste ataque é fazer com que uma solicitação específica feita para um nome seja redirecionada a um host falso, isto é, um host que verdadeiramente não corresponde ao destino legítimo. Isso se dá pela introdução de um registro falso no servidor de nome de domínios usado pela rede alvo da seguinte forma, de acordo com (ROHR, 2011): Primeiro o atacante faz uma solicitação ao servidor DNS alvo para o nome que deseja inserir um endereço IP falso; Ao receber essa solicitação, o servidor DNS por sua vez faz outra consulta ao servidor de nomes do domínio de destino e fica esperando uma resposta; Como mensagens DNS utilizam o UDP na camada de transporte, o servidor DNS alvo não estabeleceu uma conexão com o servidor de nomes do domínio de destino, então basta que o atacante formule uma resposta falsa (passando-se pelo servidor de nomes do domínio de destino) respondendo à requisição feita pelo servidor DNS alvo, informando um endereço IP falso, conforme seu interesse. Como o resultado de consultas DNS são armazenadas em cache, o servidor alvo não efetuará consultas para o mesmo nome por algum tempo, encaminhando todas as solicitações para o nome para um endereço ilegítimo. Novamente, o DNS é um serviço crítico na sinalização SIP, portanto esta constitui uma ameaça particularmente perigosa, visto que um atacante pode usá-la tanto como uma forma de negação de serviço (causando redirecionamento da sinalização SIP para hosts aleatórios) ou, em um ataque mais elaborado, como uma forma de se passar por um ou vários usuários (redirecionando a sinalização para um proxy maliciosamente configurado), ou ainda realizar um ataque do tipo man-in-the-middle. (ENDLER e COLLIER, 2007). Envenenamento ARP O envenenamento ARP é baseado na vulnerabilidade de alguns sistemas operacionais que incluem ou substituem uma entrada em seu cache ARP se receberem uma resposta ARP com uma nova 22 correlação, mesmo que não tenha sido feita nenhuma solicitação previamente (ENDLER e COLLIER, 2007). O ataque consiste em: Determinar os endereços IP e MAC de dois hosts de interesse (por exemplo, o de um telefone SIP e o de um SIP proxy). Sejam eles o host A e host B; Enviar uma mensagem ARP reply para o host A informando a associação entre o endereço IP do host B e o endereço MAC da estação onde está o atacante; Enviar uma mensagem ARP reply para o host B informando a associação entre o endereço IP do host A e o endereço MAC da estação onde está o atacante; Realizar o roteamento do tráfego entre os hosts, para que não se perceba a interceptação da comunicação. Assim sendo, o envenenamento ARP consiste em uma das formas mais simples de se executar um ataque MITM, mas é necessário que o atacante esteja na mesma rede local que o alvo. Manipulação da Sinalização e de Mídia SIP INVITE Flood O servidor proxy é um elemento chave na comunicação VoIP de dispositivos SIP, sendo o responsável pelo processamento de todas as chamadas entre sistemas finais, incluindo telefones SIP, gateways de mídia e outros proxies. Assim sendo, se o serviço prestado pelo servidor proxy for parcial ou completamente comprometido, toda comunicação VoIP pode ser afetada (ENDLER e COLLIER, 2007). Uma ameaça com este potencial consiste no envio de uma imensa quantidade de mensagens SIP INVITE para um servidor proxy. A requisição INVITE tem um aspecto computacional importante porque ela é o gatilho que dispara uma maior carga de processamento e reserva de recursos num dispositivo SIP. Assim, se um servidor proxy puder ser inundado com requisições INVITE, uma interrupção parcial ou total do serviço pode ocorrer (ENDLER e COLLIER, 2007). Como demostrado em (ENDLER e COLLIER, 2007), há uma vasta quantidade de cenários possíveis para ataques com inundação de mensagens INVITE, contudo um dos mais nocivos é o ataque à um proxy de um domínio solicitando o contato com um UA (que pode ou não existir) em outro domínio. Desta forma, o efeito é o comprometimento do serviço em dois domínios simultaneamente. Em (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011), é aberta a possibilidade de se exigir autenticação para a requisição INVITE. Se este for o caso, o efeito do ataque é ainda mais rápido, visto que serão alocados ainda mais recursos para manter registros e contadores das solicitações de autenticação que o servidor proxy fará (ENDLER e COLLIER, 2007). Remoção de Registro Como visto anteriormente, num ambiente SIP típico os telefones registram-se junto ao servidor registrar para que as ligações possam ser adequadamente encaminhadas ao UA. Portanto, se um registro for removido do servidor de registros, o servidor proxy será incapaz de encaminhar as ligações para o telefone SIP (ENDLER e COLLIER, 2007). Um ataque de remoção de registro é bastante trivial, sendo necessário apenas enviar uma mensagem 23 SIP tal qual a exibida na Figura 2, porém com “*” como valor do campo Contact e, a seguir, inserindo uma linha “Expires= 0”. Desta forma, todos os registros para o AOR informado no campo To serão removidos do servidor registrar. Adição Registro Os registros de endereços SIP são gerenciados de tal forma que mais de um dispositivo pode registrar-se para o mesmo AOR, permitindo que usuários registrem-se de diversos locais, como de seu escritório, de uma sala de reuniões e etc. Quando múltiplos telefones SIP registrados sob o mesmo AOR tocam, o primeiro a responder a ligação a deterá (ENDLER e COLLIER, 2007). Essa flexibilidade cria a oportunidade para vários tipos de ataques. Por exemplo, um atacante pode adicionar diversos registros para um mesmo AOR, fazendo com que diversos telefones toquem quando é realizada uma ligação para aquele endereço, irritando e confundindo os usuários. O ataque é igualmente trivial ao anterior, bastando enviar uma mensagem (ou várias) SIP REGISTER para o servidor de registros vinculando o AOR a um dispositivo do interesse do atacante. Sequestro de Registro Usando os dois ataques anteriores, neste ataque o agente de ameaça substitui um registro legítimo por um falso, fazendo com que ligações sejam encaminhadas para um dispositivo SIP ilegítimo, ou até mesmo inexistente (ENDLER e COLLIER, 2007). Mais difícil, porém realizável, é executar um ataque do tipo MITM em nível de aplicação. Para isto o atacante redireciona a ligação para sua estação, onde captura os pacotes e os roteia para o destino correto, permanecendo despercebido (ENDLER e COLLIER, 2007). Redirecionamento Em (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011), é determinado que um servidor proxy ou um UA pode responder a uma solicitação INVITE com uma mensagem “301 Moved Permanently” ou “302 Moved Temporarily”, informando ao chamador que o UA que deseja alcançar não se encontra mais no endereço solicitado e o novo endereço para contato (no campo Contact da resposta). O chamador, então, usa o novo endereço informado na resposta para entrar em contato com o UA pretendido. Valendo-se dessa flexibilidade do protocolo SIP, um atacante, se capaz de monitorar solicitações INVITE, poderá responder com uma mensagem de redirecionamento, sendo possível causar uma negação do serviço ao encaminhar a chamada para um UA inexistente, ou, pior ainda, encaminhar a ligação para um UA ilegítimo que pode tentar se passar pelo UA que se pretendia alcançar (ENDLER e COLLIER, 2007). Interrupção de Sessão O protocolo SIP usa a solicitação BYE para anunciar o término de uma sessão. Se um agente de ameaça for capaz de monitorar uma ligação por tempo suficiente para coletar o Call-ID, o tag do campo From e o tag do campo To, então poderá montar uma mensagem BYE (com os demais campos pertinentes) e enviar para uma das partes, fazendo com que a ligação seja interrompida, conforme demostrado em (ENDLER e COLLIER, 2007). 24 Inserção e Mixagem RTP Pelo fato de aplicações VoIP serem de tempo real, os pacotes RTP sempre são carregados pelo UDP na camada de transporte, portanto, ataques contra o RTP são simples e aplicáveis a praticamente todo sistema de comunicação VoIP. Assumindo então que um atacante já esteja em uma posição de “homem do meio”, isto é, que já tenha executado com sucesso um ataque MITM, é possível que ele insira ou mixe novo áudio no fluxo RTP. A inserção de áudio sobrescreve a informação de áudio existente, enquanto a mixagem faz com que o novo áudio seja misturado ao existente (ENDLER e COLLIER, 2007). A ideia é introduzir ruído na ligação ou provocar um efeito parecido com o de “linha cruzada”. Em (ENDLER e COLLIER, 2007) o ataque é demonstrado explorando uma ferramenta especifica desenvolvida para realizá-lo. 25 VoIP: Contra Medidas Nesta sessão são examinadas de forma não exaustiva apenas algumas das abordagens que visam diminuir a probabilidade de um atacante executar uma ameaça com êxito. Várias outras contra medidas podem ser encontradas em (STEWART, TITTEL e CHAPPLE, 2008), (HARRIS, 2008), (ENDLER e COLLIER, 2007), (THERMOS e TAKANEN, 2007) e (PORTER e GOUGH, 2007). Virtual Local Area Network Uma VLAN (padrão IEEE 802.1Q) promove a separação lógica do tráfego de dispositivos conectados a uma mesma LAN, criando domínios de brodcast distintos com base nas portas de um switch ou endereços físicos de interfaces. Desta forma, é possível fazer um isolamento entre os tráfegos de dados e voz e, com isso, atividades maliciosas oriundas da rede de dados (que é o cenário mais comum) não afetarão a comunicação VoIP. A segregação do tráfego também traz o benefício de menor congestionamento enfrentado pelos pacotes de voz, melhorando a qualidade do serviço VoIP (PORTER e GOUGH, 2007). Contudo, uma questão que deve ser levada em consideração é com relação ao uso de softwares do tipo Softphone, que são aplicações VoIP instaladas em computadores de uso pessoal. Se a estação onde estiver instalado um Softphone não contar com mais de uma interface, então não será possível o uso de VLAN para separação de tráfego. Neste cenário, para viabilizar o uso de VLAN, deve-se ter uma interface de rede separada para o tráfego VoIP (ENDLER e COLLIER, 2007). Firewall, IDS e IPS Há equipamentos que podem ser inseridos na infraestrutura de rede com o objetivo de adicionar segurança de uma forma geral, isto é, não especificamente para o serviço VoIP. Um deles é o firewall, onde são implementadas regras responsáveis por bloquear todo tráfego (de entrada ou saída) que não é aderente à política de segurança da rede. Basicamente, o firewall analisa o conteúdo dos pacotes IP que o atravessa, como portas e endereços de origem e destino e, com base nessas informações, autoriza ou nega o fluxo (PORTER e GOUGH, 2007). Firewalls podem ser do tipo stateless ou stateful. Um firewall stateless não guarda em memória o estado das conexões estabelecidas. O firewall stateful mantém em memória uma tabela que guarda o estado das conexões em andamento, o que permite identificar pacotes que estão iniciando uma nova conexão e pacotes pertencentes a uma conexão já estabelecida e, portanto, este é o tipo de firewall mais eficiente para detectar uma tentativa de ataque (PORTER e GOUGH, 2007). Apesar de importante, o firewall não é a defesa definitiva para uma rede de computadores. O IDS (Intrusion Detection System) e o IPS (Intrusion Prevention System) são dispositivos de segurança que podem ser posicionados estrategicamente dentro da rede para detectar tráfego malicioso que por ventura tenha passado pelas regras do firewall. De acordo com (HARRIS, 2008), a diferença entre eles é que o IDS, ao detectar um tráfego malicioso, unicamente gerará alarmes e logs. Qualquer ação de combate deverá ser tomada pelo administrador da rede. Já o IPS é embarcado com inteligência reativa a um fluxo identificado como malicioso. IPSec 26 O IPSecou IP Security é um protocolo que opera na camada de rede da pilha TCP/IP e, como tal, trabalha com qualquer protocolo da camada de transporte. Ademais, protocolos como o SIP e o RTP funcionam sobre o IPSec sem alterações. Uma sessão IPSec é comumente chamada de VPN (JOHNSTON, 2009). O gerenciamento de chaves no IPSec pode ser significativamente difícil, uma vez que é necessário chaves simétricas em ambos os lados comunicantes, mas o fato de que um túnel VPN pode proteger tanto a sinalização SIP como o tráfego de mídia é um ponto forte do protocolo. Contudo, para aplicações distribuídas, como áudio conferências, o IPSec não é escalável, já que estabelecer túneis VPN para todos os hosts antes da sinalização SIP e do fluxo RTP é difícil (JOHNSTON, 2009). TLS – Tranport Layer Security É um protocolo de segurança desenvolvido para oferecer suporte ao transporte confiável de pacotes através de protocolos como o TCP ou SCTP. Além disto, o TLS oferece autenticação e proteção a confidencialidade e integridade (STEWART, TITTEL e CHAPPLE, 2008). O TLS vale-se de dois protocolos. Um é o TLS Handshake Protocol, responsável por estabelecer a conexão e negociar os parâmetros da comunicação segura que serão usados como: métodos de compressão, tamanho do hash, algoritmos de criptografia (DES, RC4, entre outros) e de integridade (MD5, SHA, entre outros). O outro é o TLS Record Protocol, responsável pela aplicação dos parâmetros de segurança negociados, isto é: faz a fragmentação, compactação, criptografia e aplica função de integridade antes do envio das mensagens vindas das camadas superiores (HARRIS, 2008). Contudo, por não ter sido desenvolvido para oferecer suporte ao UDP, o TLS pode ser usado para tornar segura a sinalização SIP (prevenindo ataques de manipulação de sinalização), mas não o fluxo de mídia RTP. Outra questão que deve ser considerada no uso do TLS é que as sessões estabelecidas são hop by hop, isto é, para cada salto entre dispositivos SIP um túnel TLS deve ser criado, o que aumenta a latência durante a sinalização (JOHNSTON, 2009). Vale a pena destacar o SIPS (Secure SIP), que é um esquema URI que requer o uso do TLS para cada salto entre dispositivos SIP. Sendo assim, com o SIPS em uso, quando um servidor proxy recebe uma mensagem ele deverá processá-la e estabelecer um conexão TLS com o próximo dispositivo SIP para então encaminhá-la ou, caso não ofereça suporte ao TLS, retornar uma mensagem de erro ao UA. Infelizmente este aditivo de segurança à comunicação SIP não ganhou o mercado graças a confusões e ambiguidades na especificação, bem como a falta de suporte ao TLS oferecida pela maior parte das aplicações SIP (JOHNSTON, 2009). DTLS – Datagram Transport Layer Security De acordo com (RESCORLA e MODADUGU, 2011), a filosofia básica do DTLS é construir “TLS sobre datagrama”. O motivo pelo qual o TLS não pode ser usado sobre datagramas é simplesmente porque pacotes podem se perder ou ser reordenados, isto é, a camada de criptografia do TLS não permite decriptografar registros isoladamente (se o registro N não for recebido, o registro N+1 não poderá ser desencriptar) e a camada de handshake assume que as mensagens são entregues em ordem e caso não sejam, ela falha. 27 Para suprir as deficiências que impedem o TLS ser usado sobre UDP, o DTLS utiliza um sistema de retransmissão baseada em contadores, o que significa que uma mensagem será automaticamente retransmitida se não houver retorno na comunicação. Com relação ao problema de reordenamento, o DTLS insere uma sequencia numérica específica em cada mensagem de handshake. Quando um sistema final recebe uma mensagem de handshake ele pode determinar se é a próxima mensagem que espera ou se é uma mensagem diferente. Se for a mensagem esperada, esta será processada. Caso contrário, será armazenada para processamento posterior, quando já tiverem sido recebidas todas as mensagens anteriores a esta (RESCORLA e MODADUGU, 2011). Autenticação SIP A autenticação SIP busca adição de segurança no processo de registro de usuários SIP, bem como início e término de sessões, isto é: para mensagens REGISTER, INVITE e BYE. A figura 4, extraída de (THERMOS e TAKANEN, 2007), ilustra o fluxo para tais mensagens. Figura 4: Exemplos de autenticação SIP Ao receber uma mensagem REGISTER, o servidor registrar verifica se nela há credenciais digest. Se não houver, será retornado ao UA uma “401 Unauthorized” onde um desafio MD5 digest é inserido. Quando o UA recebe o desafio, ele confirma o recebimento com um ACK e calcula a resposta adequada para enviar novamente uma mensagem REGISTER, dessa vez incluindo a resposta MD5 digest calculada. O servidor verifica se a resposta ao desafio está correta e processa a solicitação, caso positivo (JOHNSTON, 2009). Para mensagens BYE e INVITE, o procedimento é o mesmo, contudo servidores proxy encaminham o desafio ao UA numa mensagem “407Proxy Unauthorized Request”. De uma forma geral, se a solicitação é feita ao dispositivo SIP final (como no caso de uma mensagem de registro), o desafio é retornado numa mensagem 401, caso contrário o desafio é retornado numa mensagem 407 (ROSENBERG, SCHULZRINNE e CAMARILLO et al, 2011). Muito mais sobre autenticação SIP pode ser encontrado em (JOHNSTON, 2009) e (ROSENBERG, 28 SCHULZRINNE e CAMARILLO et al, 2011). SRTP e SRTCP O SRTP é um perfil seguro do RTP, definido no RFC 3711, (BAUGHER, 2011), que oferece autenticação, confidencialidade e integridade do fluxo de mídia. Em seu projeto, questões de relacionadas ao consumo de banda, processamento e latência da comunicação foram levadas em consideração para garantir a eficiência do protocolo. O protocolo usa um esquema de chaves simétricas que devem ser negociadas pelo modelo offer/answer com o SIP. Para a criptografia o algoritmo usado é o AES-CTR (Advanced Encryption Standard – Counter Mode) com 128 ou 256 bits, que executa uma operação XOR (Exclusive-OR) sobre o fluxo de mídia. Isso permite que a criptografia seja executada em paralelo com a codificação, diminuindo a latência introduzida pelo processamento (JOHNSTON, 2009). O pacote SRTP é idêntico ao pacote RTP em sua estrutura, contudo o payload é criptografado e é adicionado um campo Authentication tag. Opcionalmente, um campo MKI (Master Key Index) (BAUGHER, 2011). Como o fluxo do RTCP é totalmente separado do fluxo RTP (os protocolos usam portas diferentes para comunicação), há também a necessidade de que aquele seja protegido para que se previnam ataques que degradem ou interrompam a troca de mensagens RTCP e, consequentemente, a qualidade do fluxo de mídia. Para isso, em (BAUGHER, 2011) também é definido o SRTCP (Secure Real-time Transport Control Protocol). O mesmos campos adicionados no SRTP também são usados no pacote SRTCP, mas outros dois cabeçalhos também são incorporados: SRTCP Index, cuja função é identificar os pacotes RTCP evitando ataque por repetição e o Encrypt-flag, um campo de 1 bit que indica que o corpo do RTCP foi criptografado (THERMOS e TAKANEN, 2007). 29 VoIP: Considerações Finais Este tutorial procurou apresentar uma revisão bibliográfica sucinta acerca dos principais protocolos empregados na telefonia VoIP e das questões de segurança relevantes para o serviço. Foram abordadas ameaças legadas das redes IP (que já existiam antes mesmo da tecnologia de voz sobre IP), bem como ameaças específicas à arquitetura SIP. Referências SICKER, D. C.; LOOKBAUGH, T. VoIP Security – Not Na Afterthought. ACM Queue, New York, set. 2004. Disponível em: http://dl.acm.org/citation.cfm?id=1028898 SIÉCOLA, P. C. VoIPFix: Uma ferramenta para análise e detecção de falhas em sistemas de telefonia IP. Dissertação (Mestrado em Ciência da Computação) - São Paulo: Universidade de São Paulo, 2010. DALGIC, Ismael, FANG, H. Comparison of H.323 as SIP for IP Telephony Signaling. Disponível em: http://www.cs.columbia.edu/~hgs/papers/others/1999/Dalg9909_Comparison.pdf Acesso em: 10 de jul. 2011. JOHNSTON, A. B. SIP: Understanding the Session Initiation Protocol. 3. ed. Norwood: Artech House, 2009. ROSENBERG, J., SCHULZRINNE, H., CAMARILLO, G., et al. SIP: Session Initiation Protocol. Disponível em: http://tools.ietf.org/html/rfc3261 Acesso em: 6 de jun. 2011. YOSHIOKA, S. Protocolos para Telefonia IP. Dissertação (Mestrado em Ciência da Computação) – Campinas: Universidade Estadual de Campinas, 2003. HANDLEY, M., JACOBSON, V. SDP: Session Initiation Protocol. Disponível em: http://tools.ietf.org/html/rfc2327 Acesso em: 8 de jun. 2011. HANDLEY, M., JACOBSON, V., PERKINS, C. SDP: Session Description Protocol. Disponível em: http://tools.ietf.org/html/rfc4566 Acesso em: 8 de jun. 2011. ROSENBERG, J., SCHULZRINNE, H. An Offer/Answer Model with the Session Description Protocol (SDP). Disponível em: http://tools.ietf.org/html/rfc3264 Acesso em 7 de jun. 2011. JOHNSTON, A., SPARKS, R. Session Description Protocol (SDP) Offer/Answer Examples. Disponível em: http://tools.ietf.org/html/rfc4317 30 Acesso em: 15 de jun. 2011. SCHULZRINNE, H., CASNER, S., FREDERICK, R., et al. RTP: A Transport Protocol for Real-Time Applications. Disponível em: http://tools.ietf.org/html/rfc3550 Acesso em: 13 de jun. 2011. SCHULZRINNE, H. Some Frequently Asked Questions About RTP. Disponível em: http://www.cs.columbia.edu/~hgs/rtp/faq.html Acesso em: 1 de jul. 2011. REAL-time Transport Protocol, Wikipèdia. Disponível em: http://en.wikipedia.org/wiki/Real-time_Transport_Protocol Acesso em: 19 jul. 2011. SCHULZRINNE, H., CASNER, S. RTP for Audio and Video Conferences with Minimal Control. Disponível em: http://tools.ietf.org/html/rfc3551 Acesso em: 3 jul. 2011. BRAUMANN, R., CAVIN, S., SCHMID, S. Voice Over IP – Security and SPIT. Disponível em: http://scholar.googleusercontent.com/scholar?q=cache:uYD9e_DMEZsJ:scholar.google.com /+VoIP+Security+Threats&hl=pt-BR&as_sdt=0 Acesso em: 6 jul. 2011. STEWART, J. M., TITTEL, E., CHAPPLE, M. CISSP: Certified Information Systems Security Professional Study Guide.4. ed. [S.I]: Wiley Publishing, 2008. HARRIS, S. CISSP: All-in-One Exam Guide. 4. ed. [S.I]: McGraw-Hill, 2008. ENDLER, D., COLLIER, M. Hacking Exposed VoIP: Voice Over IP Security Secrets & Solutions. [S.I]: McGraw-Hill, 2007. THERMOS, P., TAKANEN, A. Securing VoIP Networks: Threats, Vulnerabilities, Countermeasures. Boston: Pearson Education, 2007. ROHR, A. Envenenamento do Cache DNS. Disponível em: http://www.linhadefensiva.org/2005/04/envenenamento-cache-dns Acesso em: 2 de ago. 2011 PORTER, T., GOUGH, M. How to Cheat at VoIP Secutity. Rockland: Syngress Publishing, 2007. RESCORLA, E., MODADUGU, N. Datagram Transport Layer Security. Disponível em: http://tools.ietf.org/html/rfc4347 Acesso em: 5 de ago. 2011. BAUGHER, M., et al. The Secure Real-time Transport Protocol (SRTP). Disponível em: http://www.rfc-editor.org/rfc/rfc3711.txt Acesso em: 6 de ago. 2011. 31 VoIP: Teste seu entendimento 1. Qual é a finalidade do protocolo SIP (Session Initiation Protocol) na comunicação VoIP? Sinalização Transporte de Voz Segurança Controle do Transporte de Voz. 2. Qual das alternativas abaixo representa uma das ameaças legadas das Redes IP para a comunicação VoIP? UDP Flood. Exaustão de DHCP. Envenenamento de Cache DNS. Envenenamento ARP. Todas as anteriores. 3. Qual das alternativas abaixo não representa uma das abordagens apresentadas que visam diminuir a probabilidade de um atacante executar uma ameaça com êxito numa comunicação VoIP? Virtual Local Area Network, Firewall, IDS e IPS. Sinalização ISUP/SS7. Protocolos IPSec, SRTP e SRTCP. TLS – Tranport Layer Security e DTLS – Datagram Transport Layer Security. Autenticação SIP. 32