Spoofing Tomando a Identidade de Um Host.

Post by R3 | Post in | Postado em 15:53

Alguns conceitos:

Para que você entenda este texto, é necessírio que você possua alguns conceitos
bísicos de Unix e protocolos tcp/ip. Ok, vamos lí. Antes de mais nada o spoofing não é
um ataque e sim parte de um. Logo, spoofing é uma espécie de técnica de ataque, do
qual o hacker pode mascarar o seu endereço IP ou DNS, Por exemplo, dizendo ao
sistema que ele vai atacar, que ele é confiível. Isto ocore porque as comunicações entre

computadores em uma rede (Internet) se baseiam nestes endereços "confiíveis" para
trocarem informações. Uma míquina A pode manter uma comunicação com a míquina B
de forma que não seja necessírio verificar toda hora se a informação vinda é autêntica
entre elas. O hacker, então, põe uma espécie de disfarce na sua míquina, dizendo para
a míquina A que "ele" é a míquina B. Assim, a míquina A vai aceitar todos os seus
comandos, então o cara pode fazer o que quiser nela. Os tripos mais comuns de
spoofing são: IP-spoofing, DNS-spoofing, Web-spoofing, mail-spoofing entre outros.

Como mencionei anteriormente, em um ataque de spoofing o intruso toma a identidade
de um host confiível. Em uma rede Unix podemos configurar hosts "confiíveis". Se uma
míquina Unix cria em seu diretório /home, um arquivo denominado rhosts que contenha
uma lista de nomes de hosts, logo qualquer usuírio com o user id que você pôs neste
arquivo pode
logar-se na sua conta usando rlogin. O Rlogin é um protocolo baseado em

cliente/servidor simples, que usa o TCP como protocolo de comunicação. O Rlogin
permite ao usuírio se logar remotamente de um host ao outro. Se a míquina-alvo confiar
na míquina deste usuírio, o rlogin permitirí a conveniência de não pedir password. Ela irí
somente autenticar o cliente via endereço IP. Então podemos executar comandos
remotos (com rsh) desde que aqueles hosts "confiíveis" estejam listados no rhosts, sem
pedir password. Outra possibilidade é listar nomes de hosts no arquivo
/etc/hosts.equiv. Neste caso, qualquer usuírio das míquinas listadas pode também
logar-se no host local sem uma password.





Three-Way Handshake:


Quando um host envia uma mensagem a um outro host, este pode ser dividido em un
número de segmentos e redirecionado ao host destino por TCP. O IP somente se
encarrega de roteí-lo.

Quando uma aplicação em um cliente quer alcançar a outra em um servidor, deve
conhecer a direção IP da míquina-destino e o número da porta TCP designado à
aplicação, e decidir então a conexão-destino. (conexão-destino = direção IP +
número de porta Para establecer uma conexão, O TCP utiliza um procedimento
denominado "3-way handshake". Neste processo 3 mensagens (SYN, SYN/ACK y ACK)
são requeridas para estabelecer a conexão. Entre a informacão intercambiada estí a
direção de cada míquina e o número de seqüência inicial (#SI) que ambas utilizarão
para establecer a comunicação. Estes números são exclusivos para a conexão entre
essas duas míquinas, e se baseiam na hora do relógio interno do sistema. Uma vez
aberta a conexão, as duas míquinas, jí "autenticadas", estão prontas para trocar
dados. Em determinadas versões do sistema operacional Unix, os números de
seqüência respondem a um padrão muito previsàvel.

Por exemplo, na versão BSD Unix (Berkeley Software Development) o #SI se
incrementa em 128 cada segundo e em 64 por nova conexão estabelecida. Assim se
uma conexão se abre, pode-se saber que #SI serí utilizado em uma próxima
conexão. Esta é a caracteràstica explorada nos ataques de spoofing.

Ok, suponhamos que o host A quer comunicar-se com o host B. O host A inicia o
handshake passando seu #SI, chamando A, no campo de seqüência do primeiro
segmento sincronizado (SYN) do 3-way handshake. Quando o segundo host, B, recebe
o SYN de A, este memoriza o número de seqüência recebido e replica enviando um SYN
com seu #SI, chamando B, assim com um reconhecimento (ACK) indicando a A que
reconhece o primeiro SYN enviado e continua com o handshake.
Quando A recebe o SYN/ACK de B, lhe devolve um ACK a B indicando que ambos
concordam que a conexão se estabeleceu. Complicado né? ví em frente, você acabarí
entendendo.
O ataque:



A primeira etapa de um ataque de spoofing é identificar as míquinas que vão ser
vàtimas do mesmo, suponhamos que sejam os hosts "A" e "B" sendo A um host confiível
de B. O agressor, que chamaremos de X, tentarí estabelecer uma conexão com B de
forma que B acredite ter uma conexão com A quando na realidade ele tem uma conexão
com a míquina do intruso. X em primeiro lugar, abre uma conexão legàtima a seu host
objetivo B, respondendo este último com uma mensagem que reconhece a solicitação e
establece um #SI=b1. Logo X, toma o lugar de A, enviando a B um SYN com a direção
origem de A. B responde com um SYN (#SI=b2) e um ACK que vão ao host legàtimo A (é
necessírio que B "ache" que estí se comunicando com A). X nunca "enxerga" esta
mensagem, mas pode enviar um ACK a B predizendo b2 a partir do conhecimento de b1.
Se enganar este mesmo, B crerí ter uma conexão legàtima com A, quando na realidade
esta conexão é com X. As saàdas desta sessão não podem ser vistas por X, mas este
pode executar comandos em B.


Além de predizer o #SI, o intruso deverí impedir que a mensagem de B chegue a A, esta mensagem alcançarí A, este se daria conta que B estí reconhecendo algo que ele nunca enviou, logo A enviaria em reposta um reset (RST) a B para terminar a conexão e o ataque de spoofing falharia. Uma das formas de evitar que o ataque falhe é enviando uma grande
quantidade de SYNs à porta 513 (login) para carregar completamente aquela porta de forma tal que B, no aceite nenhuma outra conexão, incluàndo Resets (B se torna inoperante).
Normalmente hí um time-out associado com uma conexão pendente, logo as conexões half-opened eventualmente expirarão e o host atacado se recuperarí. O host agressor pode então continuar enviando pacotes IP-spoofed sem problemas, requerendo novas conexões mais rípido que o sistema atacado pode dar "baixa" às conexões pendentes.



Como prevenir?

Uma forma de detectar o IP spoofing é monitorando pacotes com algum software de
monitoração de redes tal como o netlog por exemplo. O objetivo é verificar um pacote
na interface externa da rede que tenha direções IP de origem e destino pertenecentes
ao domànio local.

Com a atual tecnologia de protocolo IP, é impossàvel eliminar pacotes IP-spoofed.
Sistemas provedores de serviços Internet baseados em TCP podem ver-se inabilitados
de administrar tais serviços quando estão sobre um ataque e por algum tempo depois
de que o mesmo jí tenha cessado. Para evitar um ataque dessse tipo, vírias medidas
podem ser tomadas para reduzir o número de pacotes IP-spoofed que entram na sua
rede.


A melhor forma de prevenir o problema de IP spoofing é reduzir a probabilidade de que um site seja objetivo de algum destes ataques, é instalando um roteador que filtre a entrada da interface externa da rede (conhecido como um filtro de entrada) não permitindo que um pacote o atravesse, se o mesmo tem como direção de origem um que não corresponda ao da rede interna. Isto preveniria que um agressor não pertencente a sua rede lhe envie pacotes pretendendo ser uma míquina de sua rede. Esta í uma boa solução, se nós unicamente confiamos em míquinas locais. Se confiamos em míquinas externas, esta solucão topológica falha. Neste caso devem-se bloquear todos os protocolos que usem TCP e autenticações basedas em direções. Ainda que este ataque especàfico estí dirigido a sistemas Unix, qualquer sistema que autentica hosts ou usuírios baseados em endereços IP é vulnerível a um ataque
de spoofing.

Comentários (0)

Postar um comentário

Parceiros

'create