INE 5630 Segurança da Informação
Seqüestro de Sessão
Leonardo de Oliveira MullerRodrigo Benincá MachadoShirlei 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 algumasferramentas 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/security/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/2005/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?newsid1079578716,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.