Web Spoofing:
----------------------

Documento traduzido e adaptado por Mag00
Fonte: Web Spoofing: An Internet Con Game
por Edward W. Felten, Dirk Balfanz, Drew Dean e Dan S. Wallach

Aqui iremos descrever um ataque que pode por em perigo a privacidade dos utilizadores da World Wide Web.

O ataque, designado por Web Spoofing, consiste em criar uma "cópia sombra" de toda a WWW. Os acessos à WWW sombra são transmitidos através da maquina de onde está a ser lançado o ataque, permitindo ao hacker observar todas as actividades da vítima, incluindo quaisquer passwords ou números de conta que a vítima envie através da WWW. O hacker pode também modificar quaisquer informações que sejam enviadas da vítima para o server ou vice-versa. Em resumo, o hacker observa e controla tudo o que a vítima faz na Web.

A falsa WWW é criada pelo hacker de forma a que seja igual à verdadeira WWW: ela contem exactamente as mesmas páginas e links; no entanto, o hacker controla tudo o que se passa entre o browser da vítima e a Web.

O hacker pode actuar de duas maneiras, ao usar a técnica de web spoofing: pode ser apenas um observador (observação passiva) ou pode alterar os dados que circulam entre a vitima e a verdadeira Web (manipulação).

Observação passiva: O hacker pode passivamente observar o tráfico, gravando as páginas que a vítima visita e os conteúdos dessas mesmas páginas. Quando a vítima preenche um formulário (form), os dados inseridos são transmitidos para o servidor da Web, portanto o hacker pode gravar isso também, assim como a resposta enviada pelo servidor. Como a maioria do comercio on-line é feito por intermédio de formulários, significa que o hacker pode observar quaisquer numeros de conta ou passwords que a vítima envie para o servidor da Web. Como iremos ver mais à frente, o hacker pode observar os dados enviados pela vítima mesmo que esta tenha uma ligaçao segura (normalmente por intermédio de Secure Sockets Layer) ao server, ou seja, mesmo que no browser da vítima apareça o ícone indicador de uma ligação segura (normalmente a imagem de uma fechadura ou de uma chave).

Manipulação: O hacker pode tambem modificar quaisquer dados que viagem em qualquer direcção entre a vítima e a Web. Pode modificar os dados de um formulário preenchido pela vítima, mudando, por exemplo, o endereço para o qual um determinado produto deve ser enviado. Pode também modificar a resposta ao formulário (ou outra coisa qualquer) enviada pelo servidor da Web.

Ao contrário do que se possa pensar, spoofar toda a WWW não constitui grande dificuldade. O hacker não precisa de armazenar todo o conteúdo da Web, uma vez que esta se encontra disponível on-line; o servidor que o hacker usa para o ataque apenas necessita de trazer as páginas da verdadeira Web quando precisa de providencia-la à vítima na falsa Web.

Como funciona o ataque...

A chave para este ataque é o server de Web do hacker ficar entre a vítima e o resto da Web. Chama-se a isto "homem no meio do ataque" ("man in the middle attack") na giria de segurança. Em primeiro lugar deve proceder-se à reescrita de todos os URLs numa página da Web, de modo a que elas apontem para o server do hacker em vez de um qualquer servidor real. Assumindo que o server do hacker está na maquina www.hacker.pt, o hacker reescreve uma URL adicionando http://www.hacker.pt à frente do URL. Por exemplo, http://free.east.timor.id fica http://www.hacker.pt/http://free.east.timor.id (a técnica de reescrita de URLs foi usada por outras razões em vários sites da Web, incluindo o Anonymizer - http://www.anonymizer.com - e o Zippy filter - http://www.metahtml.com/apps/zippy/welcome.mhtml) Quando a vítima pede uma página da Web, os seguintes passos ocorrem:

1. O browser da vítima pede a página ao servidor do hacker
2. O servidor do hacker pede a página ao servidor real
3. O servidor real fornece a página ao servidor do hacker
4 .O servidor do hacker reescreve a página, mudando todos os URLs do documento, colocando http://www.hacker.pt antes de cada um deles
5. O servidor do hacker fornece a versão reescrita da página à vítima.

Como todos os URLs na página reescrita apontam agora para http://www.hacker.pt, se a vítima seguir um link na nova página, a página será trazida outra vez através do servidor do hacker. A vítima continua presa na falsa Web do hacker e pode seguir links para sempre sem dela sair.

Também os formulários (forms) podem ser alterados, uma vez que estes se encontram integrados nos protocolos básicos da Web: as submissões dos formulários são codificadas nos pedidos da Web e as respostas são em vulgar HTML; como qualquer URL pode ser spoofado, então os formulários tambem podem. O hacker pode assim modificar quaisquer dados enviados num formulário para o verdadeiro servidor da Web e também alterar a resposta do servidor à submissão do formulário.

As ligações "seguras" não servem de nada...

Mesmo que a vítima traga uma página por intermédio de uma ligação "segura" (usando normalmente o Secure Sockets Layer), o ataque funciona na perfeição e tudo parece normal à vítima. Isto acontece porque, na verdade, existe uma ligação "segura"; no entanto, essa ligação é ao servidor do hacker (http://www.hacker.pt) e não ao local a que a vítima pensa que é. O browser da vítima pensa que tudo está bem: foi-lhe indicado que acedesse a um URL em http://www.hacker.pt, portanto ele fez uma ligação "segura" a http://www.hacker.pt. O indicador de ligação-segura (a chave ou a fechadura) da à vítima apenas um falso juizo de segurança.

Começando o ataque...

Para começar um ataque, o hacker tem que, de algum modo, atrair a vítima para a sua falsa Web. Existem diversas maneiras de fazer isso: o hacker pode por um link para a falsa Web numa página popular da WWW; pode mandar um e-mail à vítima com um link para a falsa Web, ou mesmo com os conteúdos da página da falsa Web; pode, também, fazer com que um mecanismo de busca da Web indicie parte da falsa Web.
No entanto, o ataque descrito até agora está ainda longe de ser perfeito. É necessário "disfarça-lo", para que a vítima não descubra que esta a "passear" na falsa Web.
O hacker pode, virtualmente, eliminar todas as pistas que restam da existência do ataque. Isso é conseguido devido aos browsers mais modernos serem altamente customizaveis, sobretudo depois da inclusão do Java nestes.

A linha de status - esta linha aparece no fundo do browser e exibe varias mensages, normalmente estatísticas de transferências da Web que estão a ocorrer. O ataque descrito até agora deixa dois tipos de marcas na linha de status: primeiro, quando o ponteiro do mouse é levado para cima de um link, a linha de status mostra o URL para que esta a apontar - logo, a vítima pode verificar que o URL foi reescrito; segundo, quando a página está a ser trazida, a linha de status indica resumidamente o servidor que está a ser contactado - assim, a vítima pode verificar que www.hacker.pt é o que aparece quando outro nome era esperado.

Não é difícil esconder estas marcas - basta adicionar um programa em JavaScript a cada página reescrita. Isto porque os programas em JavaScript são capazes de escrever na linha de status, permitindo ao hacker que a linha de status mostre à vítima o que deveria aparecer na linha de status se esta estivesse na verdadeira Web. A linha de localização - esta linha indica o URL da página que está a ser vista. A vítima pode também escrever o URL na linha de localização (location line), enviando o browser para esse URL. O ataque descrito até agora faz com que o URL reescrito apareça na linha de localização, dando possivelmente à vitima a indicação de que um ataque está em progresso.

Esta marca pode ser escondida usando também o JavaScript. Um programa em JavaScript pode esconder a verdadeira linha de localização, repondo-a por uma falsa que parece verdadeira e que está exactamente no mesmo local. A falsa linha de localização pode mostrar o URL que a vítima espera ver, para alem de aceitar input do teclado, permitindo à vítima escrever URL's normalmente. O programa em JavaScript pode reescrever as URL's que a vítima inseriu antes de elas serem acedidas, "trancando" completamente a vítima na falsa Web. A fonte do documento (document source) - os browsers mais populares oferecem um item no menu que permite ao utilizador examinar o código de HTML da página que está a ser vista. Deste modo, o utilizador pode procurar URLs reescritas no código de HTML e descobrir o ataque.

Mais uma vez, pode-se eliminar esta marca usando o JavaScript para esconder a barra do menu, substituindo-a por outra parecida com a original. Se a vítima escolher a opção "view document source" da barra de menu spoofada, o hacker pode abrir uma nova janela para mostrar o código original (não reescrito) de HTML. A informaçao do documento - relacionado com o anterior esta a opção do menu do browser "view document information". Esta mostra a informação incluindo o URL do documento. Esta marca pode ser spoofada como a anterior, repondo a barra do menu do browser.

Fica assim explicado como fazer um Web Spoofing limpo, sem deixar quaisquer marcas que possam permitir à vítima descobrir o ataque.

Deve-se ainda referir que, como é obvio, não deve ser usado o computador do hacker (o vosso), pois uma eventual detecção do ataque poderia trazer algumas consequências indesejadas...