Seqüestro de Sessão Leonardo de Oliveira Muller Rodrigo Benincá Machado Shirlei Aparecida de Chaves INE 5630 Segurança da Informação Introducão Preocupação de hoje: invasão e ataques. Habilidades para atacar não qualificam alguém para montar mecanismos de defesa. INE 5630 Segurança da Informação Estrutura da Apresentação O que é seqüestro de sessão Formas existentes para combater e prevenir esse tipo de invasão Conclusões Referências bibliográficas INE 5630 Segurança da Informação O que é seqüestro de sessão Como o seu computador sabe que está falando com o computador que ele acha que está falando? Quando a comunicação é estabelecida entre dois computadores, pelo uso de credenciais, ela é feita na fase de configuração da sessão, mas depois não mais. INE 5630 Segurança da Informação O que é seqüestro de sessão Classificado em três categorias: Ataque do Homem do meio Roubo cego de sessão Seqüestro de sessão INE 5630 Segurança da Informação O que é seqüestro de sessão Ataque do Homem do Meio Comunicação entre os dois hosts é interceptada Comunicação passa a fluir pelo atacante Alvos: protocolo que usam chave pública para proteger a comunicação. INE 5630 Segurança da Informação O que é seqüestro de sessão Roubo Cego Atacante pode adicionar comandos maliciosos na mensagem interceptada Atacante não recebe confirmação de que o comando adicionado à mensagem foi efetivamente executado Ataque geralmente muito efetivo INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão O termo seqüestro de sessão se refere à capacidade de um atacante assumir o controle de parte de uma sessão (normalmente uma conversação de rede) e agir como um dos participantes. O seqüestro de sessão explora a fragilidade inerente na maioria dos tipos de rede e de protocolos não criptografados, principalmente os que transmitem as informações livremente. (RUSSEL, 2002). INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Estabelecimento de sessão TCP Cliente envia um pacote de sincronização (SYN) x para o servidor como um número de seqüência inicial Servidor responde com um pacote SYN/ACK que contêm o próprio número de seqüência p do servidor e o número ACK para o pacote SYN O cliente informa ao servidor que tomou conhecimento desse pacote através do envio do pacote ACK com o próximo número de seqüência que é esperado pelo servidor, nesse caso p+1. INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Estabelecimento de sessão TCP INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Envio de dados INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Envio de dados Cliente envia para o servidor o caracter A num pacote com o número de seqüência x+1 O servidor avisa que recebeu este pacote através do ACK x+2 como sendo o próximo número de seqüência esperado pelo servidor INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Neste ponto o atacante deve: Imitar o ip do cliente Determinar o número de seqüência correto que é esperado pelo servidor do cliente Adicionar dados na sessão antes que o cliente envie o próximo pacote INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Envio de dados às cegas INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Envio de dados às cegas Se o servidor receber o pacote enviado pelo atacante, vai responder ao cliente com o ACK x+3 Pacote confunde o cliente, ou porque ele não enviou dados ou porque a próxima seqüência esperada está incorreta INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Envio de dados às cegas Pode causar um problema conhecido como TCP ACK storm O cliente vai tentar re-sincronizar esta sessão através do envio para o servidor de um pacote ACK da seqüência que ele está esperando Este pacote ACK vai conter uma seqüência que o servidor não está esperando, então ele vai reenviar ao cliente o último pacote ACK INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão TCP Envio de dados às cegas Pode ser facilmente percebida por dispositivos como os sensores IDS (Intrusion Detection System) O intruso pode então utilizar a manipulação da tabela ARP (Address Resolution Protocol) INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão UDP Protocolo DNS Responsável pela resolução dos endereços de domínios para endereços IP’s Um hacker pode fingir ser o servidor WEB e quando o cliente faz uma solicitação DNS ela ser resolvida para a máquina do hacker e não para a máquina servidor legítima Muito usada para para roubar números de contas bancárias. INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão UDP Passos seguidos pelo hacker O hacker finge ser o servidor Web, digamos, securityfocus.com; O hacker programa sua máquina atacante para esperar uma requisição por esse nome e armazenar uma cópia do pacote; O hacker extrai o ID de requisição e o utiliza para aprontar um pacote de resposta, preparado antecipadamente, que aponte para seu endereço IP; O cliente, então, contata a máquina do hacker em vez de securityfocus.com; O cliente vê uma mensagem equivalente a securityfocus encontrado. INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão Nível Aplicação Protocolo http Não possui informações de estado Servidores HTTP não mantêm qualquer informação a respeito dos navegadores que estão conectados a eles de uma solicitação para a outra INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão Nível Aplicação Protocolo http Na próxima vez que ele receber uma solicitação, a mesma será tratada como se fosse a primeira daquela máquina Gerenciamento de sessão fica por conta da aplicação INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão Nível Aplicação Protocolo http Vulnerabilidade Implicações Transmitir identificadores de sessão por canais sem criptografia Os invasores podem capturar os identificadores de sessão para falsificar a identificação. Tempo prolongado de sessão. Isso aumenta o risco de seqüestro da sessão e de ataques de repetição. INE 5630 Segurança da Informação O que é seqüestro de sessão Seqüestro de Sessão Nível Aplicação Protocolo http Vulnerabilidade Implicações Armazenamentos inseguros de estado da sessão Os invasores podem acessar os dados de uma sessão particular de um usuário. Identificadores de sessão em seqüências de caracteres de consulta Os identificadores de sessão podem ser modificados facilmente no cliente para se falsificar a identificação e acessar o aplicativo como outro usuário. INE 5630 Segurança da Informação O que é seqüestro de sessão Ferramentas Juggernaut Criada por Route, editor da revista Phrack. Pioneira como ferramenta de seqüestro de sessão e sniffing Escrita na linguagem C Informações: http://staff.washington.edu/dittrich/talks /qsm-sec/P50-06.txt INE 5630 Segurança da Informação O que é seqüestro de sessão Ferramentas Hunt Criada por Pavel Krautz, encontra-se na versão 1.5 Possui modos de sniffing e seqüestro de sessão Inclui ferramentas para realizar spoofing de ARP a fim de fazer os hosts vítimas buscarem uma máquina atacante, para eliminar os problemas de tempestade ACK normalmente associados a um seqüestro de sessão TCP Informações : http://lin.fsid.cvut.cz/~kra/index.html#HUNT INE 5630 Segurança da Informação Combatendo e Prevenindo Ações A tentativa de seqüestro de sessão contra suas próprias aplicações ou rede (pouco recomendável) Ideal: utilizar um paradigma de segurança. Por exemplo, usar protocolos de transporte que utilizem criptografia como Secure Shell (SSH), Secure Socket Layers (SSL), e Internet Protocol Security (IPSec) INE 5630 Segurança da Informação Combatendo e Prevenindo Ações Evitar se comunicar com sistemas de alta criticidade sem ser sobre um algoritmo de alta criptografia Telnet e FTP são escolhas extremamente pobres e susceptíveis a seqüestros de sessão quando não protegidos por canais seguros INE 5630 Segurança da Informação Combatendo e Prevenindo Ações Na questão de sistema operacional utilizado, Russel (RUSSEL, 2002), cita que se acaba tendo que optar por alguma solução UNIX “(...)a única razão para isso é que algumas ferramentas de segurança estão disponíveis apenas para sistemas UNIX ou os que funcionam como ele.” INE 5630 Segurança da Informação Combatendo e Prevenindo Recomendações quanto ao seqüestro no nível de aplicação Troca de identificadores de sessão No caso do estado da sessão com identificadores de sessão (por exemplo, símbolos contidos nos cookies), examinar se o identificador ou cookie é ou não transmitido apenas por um canal criptografado, como SSL INE 5630 Segurança da Informação Combatendo e Prevenindo Recomendações quanto ao seqüestro no nível de aplicação Troca de identificadores de sessão No caso de usar autenticação de formulários, certificar-se de que o aplicativo criptografa os cookies de autenticação usando o atributo protection="All" do elemento <forms>. Essa prática é recomendada além do SSL para reduzir o risco de um ataque XXS (cross site scripting) que tenta roubar o cookie de autenticação de um usuário INE 5630 Segurança da Informação Combatendo e Prevenindo Recomendações quanto ao seqüestro no nível de aplicação Troca de identificadores de sessão Certificar-se de que o aplicativo não transmite identificadores de sessão em seqüências de caracteres de consulta. Essas seqüências de caracteres podem ser facilmente modificadas no cliente, permitindo que um usuário acesse o aplicativo como outro usuário, bem como acesse os dados particulares de outros usuários e possivelmente eleve privilégios INE 5630 Segurança da Informação Combatendo e Prevenindo Recomendações quanto ao seqüestro no nível de aplicação A duração da sessão é restrita Examinar por quanto tempo o aplicativo considera válido um identificador de sessão. O aplicativo deve limitar esse tempo para reduzir a ameaça de seqüestro de sessão e ataques de repetição INE 5630 Segurança da Informação Combatendo e Prevenindo Recomendações quanto ao seqüestro no nível de aplicação Protegendo o armazenamento de estado da sessão Examinar como o aplicativo armazena o estado da sessão. Ele pode ser armazenado no processo do aplicativo da Web, no serviço de estado de sessão ASP.NET ou no armazenamento de estados do SQL Server INE 5630 Segurança da Informação Combatendo e Prevenindo Recomendações quanto ao seqüestro no nível de aplicação Protegendo o armazenamento de estado da sessão Se usar um armazenamento de estado remoto, certificar-se de que o link entre o servidor Web e o armazenamento remoto seja criptografado com IPSec ou SSL para proteger os dados durante a transmissão INE 5630 Segurança da Informação Combatendo e Prevenindo Prevenção Criptografia é hoje a principal forma de proteção, embora em alguns casos possa não ser 100% garantidas Detecção Utilizar ferramentas que observem alguns dos sinais desse tipo de ataque: conexões sendo reinicializadas ou “penduradas” (tempestades de ACK ou lixo estranho aparecendo na tela), por exemplo INE 5630 Segurança da Informação Conclusão Não há como ter um sistema 100% imune a seqüestro de sessão, mas medidas preventivas e um bom conhecimento do assunto pelos responsáveis pela segurança podem, se não impedir essa situação, minimizar os efeitos negativos que podem ter sobre o sistema como um todo, incluindo a imagem da empresa atacada, pois o alvo geralmente são informações confidenciais de clientes. INE 5630 Segurança da Informação Referências Bibliográficas Seqüestro de Sessão. Disponível em: http://www.geocities.com/siliconvalley/network/1493/securi ty/fa/fa00002.htm. Acessado em: 05/11/2004. LAM, Kevin & LeBLANC, David & SMITH Ben. Theft on the Web : Prevent Session Hijacking. Disponível em: http://www.microsoft.com/technet/technetmag/issues/200 5/01/SessionHijacking/default.aspx. Acessado em: 07/11/2004. MURILO, Nelson. "Para saber defender é preciso saber atacar". Disponível em: http://www.infoguerra.com.br/infonews/viewnews.cgi?news id1079578716,19492, . Acessado em: 05/11/2004. PITELLA, Felipe. Gerenciamento de Sessão. Disponível em: http://www.javafree.com.br/forum/viewtopic.php?t=1408 . Acessado em: 11/11/2004. RUSSEL, Ryan at al. Rede Segura. Pág. 348 – 375. Alta Books, 2002. INE 5630 Segurança da Informação