Hijacking - Corresponde a um ataque aonde uma sessão activa é interceptada e utilizada pelo atacante. Pode acontecer localmente se o PC for deixado desprotegido, ou remotamente via internet."
Introdução
O Termo “Session Hijacking” refere-se à exploração de uma sessão válida de um computador – as vezes também chamada de Session Key ou ID – para conseguir acesso não-autorizado a informações ou serviços em um sistema de computador.
Em particular, é usado para referir-se ao roubo do Magic Cookie, utilizado para autenticar um usuário em um servidor remoto. Isto é particularmente relevante para os desenvolvedores Web, já que os HTTP Cookies usados para manter uma sessão em diversos sites Web podem facilmente ser roubados por um atacante utilizando um computador que esteja no meio da comunicação ou então acessando os cookies salvos no computador da vítima.
Muitos web sites permitem que usuários criem e gerenciem suas próprias accounts, logando utilizando um username e password (que pode ou não ser criptografada durante o transito) ou outro método de autenticação. Para que o usuário não tenha que re-digitar seu usuário/senha em todas as página para manter sua sessão, muitos web sites utilizam-se de cookies: um token de informações solicitadas pelo server e retornada pelo user browser para confirmar sua identidade.
Se um atacante estiver habilitado a rouber este cookie, ele pode fazer requisições como se fosse o usuário legítimo, ganhando acesso à informações privilegiadas ou até modificando dados. Se o cookie for um Cookie Persistente, o roubo de identidade pode se estender por um tempo muito longo.
É claro que Session Hijacking não é limitada para a Web, qualquer protocolo cujo o estado é mantido através de uma key que é checada através de dois computadores é vulnerável, especialmente se não for criptografada.
Terminologia
Uma das grandes vantagens de utilizar o Mozilla Firefox é que você pode conseguir uma porção de plugins interessantes para explorar aplicações. Tamper Data, Cookie Culler, AEC Cookie Editor são alguns destes. Uma pequena introdução sobre estas tools.
- Tamper Data: É utilizado para rastrear a comunicação entre o browser e o servidor e esta funcionalidade permite interceptar e modificar os dados “on the Fly” e re-enviar para o servidor.
- Cookie Culler: É utilizado para visualizar os cookies e apaga-los caso seja necessário
- AEC Cookie Edito: Permite melhor controle sobre o Cookie que você modifica, e assim modificar seu conteúdo para testar vulnerabilidades em sua aplicação web.
Um Exemplo
Vamos verificar algumas tools mencionadas acima. Aqui, TamperData mostra a comunicação de outgoing onde eu fiz um search por “Session Hijacking” no google. Você pode ver ambos os Headers, tanto de request quanto de response assim como os parametros GET, POST e seus valores.
AEC Cookie Editar mostra informações a respeito dos Cookies no sistema e explica como um Web Server rastreia os clientes utilizando os cookies.
Exploitation Scenario
A maioria das aplicações web utilizam HTTP e HTTPS protocols juntos para suas comunicações dependendo da sensibilidade da informação que está sendo enviada através do canal de comunicação. Em geral o HTTPS é ativado para enviar username/password, informações financeiras e outras informações importantes. Uma vez que a informação é enviada a aplicação volta a utilizar HTTP novamente.
Normalmente se você observar uma aplicação web, ela joga seus cookies assim que você visita a página pela primeira vez e o cookie vai manter o seu Session ID. Este ID e uma importante peça de informação a qual poderá ser utilizada para rastrear a sessão toda vez que o usuário se logar. Muitas pessoas negligenciam a importancia deste ID. Todas as vezes antesde entrar num canal seguro, eles utilizam o mesmo Session ID. Aí é onde a vulnerabilidade existe. Sniffar uma rede é muito simples. Uma grande variedade de softwares estão disponiveis para sniffar informações de forma ativa e passiva.
Especialmente em redes wireless, sniffing é fácil como roubar doce de criança :-)
A maioria das web applications vai dar acesso ao Sniffer se este conseguir o Session ID se um usuário que ainda está logado no sistema e poderá permitir que ele acesse importantes informações da vítima. Esta vulnerabilidade existe na maioria dos sites comerciais que provem vários serviços. Provedores de E-mail, Sites de Shopping, etc todos estão vulneráveis à este tipo de ataque se implementarem a autenticação desta forma.