Internet

Internet

Carlos

Um estudante quer fazer uma pesquisa na Internet. A maneira mais fácil é acessar algum

site de buscas e realizar sua pesquisa. Então, o estudante digita o nome do site em seu navegador,

por exemplo http://www.google.com.br, e assim chega até o site de buscas. Este mesmo estudante está

acessando a Internet através de uma rede de uma universidade, e deseja trocar arquivos com seu

colega que está em um outro PC. Basta digitar o nome do PC com o qual ele deseja se conectar,

através de um serviço de FTP (File Transfer Protocol), por exemplo, e iniciar a transferência do

arquivo.

É bem simples assim acessar algum site ou máquina remota a partir de uma máquina local. Basta

digitar o nome do destino, como algum site da Web ou um host em alguma rede para realizar

conexões entre dois computadores. Mas o que acontece por trás dessa facilidade é um processo

bem mais complexo, que será explicado ao longo deste trabalho.

“Em uma rede baseada no protocolo TCP/IP, cada host é identificado por um endereço numérico

de 32 bits, que são separados em quatro octetos e cada octeto é representado normalmente em

números decimais. Os quatro números são separados por um caractere ponto (“.”). Quatro

números decimais são bem mais fáceis de lembrar do que trinta e dois zeros e uns, como números

de telefones, e fica muito difícil para uma pessoa lembrar de muitos endereços IP´s sem precisar

de algum diretório de assistência. Esse diretório nomeia nomes de hosts em endereços IP [1]”.

Na verdade, ao acessar uma página na Internet ou um sistema remoto,a aplicação que fez a

conexão inicial precisa conhecer o endereço IP da página na Internet ou do sistema de destino,

pois as informações serão enviadas em pacotes IP, que tem um campo de origem e destino que

devem ser números IP e não "nomes". Acontece que a aplicação que faz essa requisição utiliza

um sistema que associa o endereço IP a um nome, tornando o acesso à página na Internet possível

através do nome dela e não do endereço IP. Este processo chama-se resolução de nomes, e é

realizado por um sistema chamado Domain Name System (Sistema de Nomes de Domínio), ou

DNS.

“O DNS, ou Sistema de Nomes de Domínio, é uma das bases de sustentação da teia que compõe

a Internet moderna. Ele realiza uma função simples e direta: mapear nomes para endereços IP e

vice-versa. Quando o sistema não está funcionando, as conseqüências são graves e generalizadas


Alguns dos problemas causados pelas falhas do DNS podem levar à poluição do cache do

servidor DNS, redirecionando as consultas feitas ao servidor DNS (cache poisoning), à

indisponibilidade do servidor DNS, causadas por várias consultas recursivas (server

compromising) e à falsificação do IP na resolução de nomes DNS (DNS spoofing) . 

Estes problemas podem ser causados por intrusos, que se aproveitam das falhas e

vulnerabilidades do sistema para enganar as pessoas ou para parar o funcionamento do sistema.


Os problemas do DNS


O sistema de nomes de domínio é responsável por traduzir diversos nomes de domínios

existentes para seus respectivos endereços IP, atendendo a requisições de clientes DNS

(resolvers) na porta 53, utilizando, para estas comunicações, tanto o protocolo UDP (User

Datagram Protocol) quanto o TCP (Transmission Control Protocol). As pesquisas DNS são

manipuladas sobre o protocolo UDP, enquanto as transferências de zonas utilizam o protocolo

TCP, ambos na porta 53.

Por seu uso ser amplamente utilizado e necessário na Internet, os administradores de rede não

podem bloquear, em seus mecanismos de defesa, como Firewalls, a passagem de pacotes com

destino a porta 53.

A classificação dos problemas do DNS não é uniforme, pois é divergente entre vários autores

quanto à classificação e terminologia. A seguir será feita uma compilação da literatura,

abordando alguns dos principais problemas do DNS.


O problema do protocolo UDP


Uma das principais razões que causam a insegurança do DNS é o uso do protocolo UDP

como protocolo de transporte[38]. Ao realizar uma consulta, utilizando o protocolo UDP, o

cliente escolhe um número de porta aleatório e envia um pacote destinado à porta 53 do servidor

DNS. O servidor, ao receber a requisição, responde com um ou mais pacotes para a porta de

origem da máquina do cliente. São características do protocolo UDP:

não orientado à conexão, ou seja, não garante a entrega do pacote ao destino e não

necessita estabelecer, gerenciar e fechar conexões, tendo apenas que transmitir os dados;

não utiliza mecanismos de reconhecimento para assegurar que as mensagens transmitidas

cheguem ao seu destino;

não ordena as mensagens que chegam;

não provê meios para controlar a taxa com que as informações fluem entre as máquinas.


Todas estas características do protocolo UDP na pesquisa DNS significam que o cliente não pode

garantir que a resposta enviada pelo servidor à sua consulta seja necessariamente respondida pelo

servidor ao qual foi enviada a consulta.


Interceptação de pacotes


Por todos os métodos existentes de captura de pacotes, este tipo de ataque é um dos mais

comuns contra o DNS. Capturando um pacote, o atacante pode simplesmente modificar os dados

da resposta de uma consulta a um servidor DNS e redirecionar o tráfego para um local à sua

escolha.

Este tipo de ataque torna-se relativamente simples pelo próprio comportamento do DNS e seu

protocolo UDP: o comportamento do DNS ao ser consultado é enviar respostas às consultas ou

encaminhá-las, utilizando um pacote UDP não assinado e não criptografado. Se um atacante

conseguir capturar uma consulta a um servidor DNS e injetar uma resposta do tipo referral2, pode

fazer com que o cliente que originou a consulta acredite que o atacante possui o servidor que tem

autoridade para responder à sua consulta, já que o protocolo UDP não realiza nenhum tipo de

verificação na resposta enviada pelo servidor.

Um exemplo deste tipo de ataque é o chamado Man-in-the-Middle, onde um atacante tenta

interceptar uma comunicação entre duas partes. Um usuário tenta acessar um site de e-commerce

para realizar uma compra. Ao clicar em um link onde seja necessário inserir dados financeiros, o

usuário é redirecionado para um outro site onde o atacante captura as informações fornecidas

pelo usuário. Após isso, o usuário é redirecionado novamente para o site original e o atacante

consegue os dados desejados.

Outro tipo de ataque que pode ser aplicado utilizando a interceptação de pacotes é quando o

atacante utiliza um servidor DNS e faz com que ele se passe por um servidor confiável (Trusted

Server), no qual os clientes enviarão consultas e receberão respostas falsas.

Este tipo de vulnerabilidade aplica-se à comunicação entre cliente-servidor, levando a ataques

do tipo Cache Poisoning, DoS e DNS Spoofing.


Transferência de zonas e atualizações dinâmicas


O DNS armazena suas informações em uma tabela, contendo dados que relacionam

nomes de máquinas e endereços (registros do tipo A), apelidos para essas máquinas (registros do

tipo CNAME), máquinas responsáveis por receber e-mails do domínio (registros do tipo MX),

entre outros dados que podem revelar informações sobre a rede ou domínio para qual o servidor é

autoridade. Esta tabela é chamada de arquivo de zona.

A transferência de zonas entre servidores ocorre quando um servidor consultado não tem

autoridade para responder a esta consulta e a encaminha para outro servidor DNS, e tem por

objetivo a replicação das informações de um servidor DNS primário para um ou mais servidores

DNS secundários.

Em uma transferência de zonas, um invasor pode ter acesso não autorizado às informações

contidas na troca dos dados entre os servidores, e até seqüestrar uma zona inteira, redirecionando

todo o tráfego enviado ao servidor do domínio seqüestrado e respondendo ao cliente com

respostas falsas. Este ataque é conhecido como DNS Hijacking, e a vulnerabilidade acontece na

atualização entre servidores.

Uma atualização dinâmica permite que clientes DNS registrem e atualizem dinamicamente seus

registros de recursos em um servidor DNS sempre que ocorrerem alterações. Isso reduz a

necessidade de administração manual de registros de zona, especialmente para clientes que se

movem ou alteram suas localizações com freqüência e usam DHCP para obter um endereço

IP.

O protocolo de atualização dinâmica do DNS provê mecanismos para controlar quais sistemas

são permitidos para atualizar dinamicamente o servidor primário. Segundo a RFC 2136, um

ataque do tipo DoS pode ser enviado por um remetente de uma atualização com o envio de seções

TCP simultâneas contendo atualizações que o servidor master primário irá recusar devido a

problemas de permissões. Os mecanismos de gerenciamento de conexões podem prevenir danos

maiores devido ao ataque, mas não previnem que algumas consultas sejam enviadas sem resposta

durante o ataque.


Cache Poisoning


Sempre que o servidor DNS não tem a resposta para a pesquisa em cache, passa a

pesquisa para outro servidor DNS em nome do cliente. Se o servidor passa a pesquisa para outro

servidor DNS que contém uma informação errada, então o envenenamento3 do cache (Cache

Poisoning) pode acontecer.

Significa fazer com que um servidor armazene em cache uma informação falsa sobre a resolução de um

determinado nome de domínio.

O envenenamento do cache envolve o envio de uma informação de mapeamento incorreto por um

servidor DNS com um TTL alto. Quando o servidor DNS for solicitado novamente, ele irá

responder com a informação errada. A informação errada é armazenada em cache por outro

servidor DNS, que torna a informação errada disponível para programas que requisitam a

informação do servidor DNS através de uma interface de um cliente.

O servidor DNS com o cache poluído responde à pesquisa, mas não necessariamente com a

resposta correta; ele preenche a seção “registros adicionais” da mensagem de resposta do DNS

com uma informação que não necessariamente se relaciona com a resposta. O servidor que

realizou a requisição aceita a resposta e não realiza nenhum tipo de checagem para assegurar-se

de que a resposta está correta ou se relaciona com a pesquisa. O servidor aceita a informação e a

adiciona em seu cache.

Com as informações armazenadas em cache alteradas de acordo com sua vontade, um atacante

pode redirecionar o tráfego intencionalmente de um site verdadeiro para um que esteja sob seu

controle. Dois métodos são mais conhecidos para este tipo de ataque:

O objetivo do redirecionamento do tráfego é encaminhar a vítima para um local falso sem que a

mesma desconfie da falsidade do destino para onde foi indicado. Este ataque é geralmente

utilizado para redirecionar sites de bancos para ganhar acesso às contas dos usuários ou

redirecionar sites de notícias para manipular as informações e publicar falsas histórias.

O envenenamento do cache também pode ter como objetivo lançar um ataque do tipo DoS –

Denial of Service. Um dos mais perigosos ataques consiste em negar a disponibilidade do serviço

de DNS congestionando um ou mais servidores de DNS com consultas recursivas. À medida que

o servidor é sobrecarregado com consultas, a CPU atingirá o nível máximo de processamento e o

servidor DNS ficará indisponível. Assim, quando um usuário solicitar uma pesquisa verdadeira

ao servidor, o serviço de resolução de nomes estará indisponível.

Uma maneira de realizar o DoS em um servidor é inserir um registro do tipo CNAME no cache

do servidor referindo-se a ele mesmo no nome canônico.

exemplo.sitecnet.com.br IN CNAME exemplo.sitecnet.com.br

Após inserir este registro de recurso no cache do servidor, o atacante pode causar uma falha no

DNS por uma simples transferência de zona.


Comprometimento do Servidor


Um atacante que conseguir acesso não autorizado ao servidor DNS com privilégios

administrativos pode comprometer totalmente o serviço DNS, modificando informações que são

servidas aos clientes. Uma vez com o controle do servidor, o invasor tem o controle de todas as

informações referentes à pesquisa de nomes da rede Este tipo de ataque é utilizado

principalmente para realizar outros tipos de ataques, como DoS e cache poisoning.

Outro objetivo desse tipo de ataque é a obtenção de informações referente ao domínio à qual o

servidor é autoridade. De posse dos dados da zona para o qual o servidor é autoridade, o atacante

tem acesso aos nomes dos hosts, domínios e endereços IP de recursos da rede. Muitas vezes,

nomes de máquinas e de domínios representam serviços vitais da rede, como servidores de email,

firewall, arquivos e FTP, por exemplo, revelando informações que o atacante pode tirar

proveito até para realizar outros tipos de ataque.


DNS Spoofing


Basicamente, a técnica do DNS spoofing (falsificação de respostas DNS) consiste em

responder com informações falsas consultas recursivas feitas a servidores DNS, resultando no

envenenamento do cache do servidor que originou a requisição, entre outros tipos de

conseqüências citadas mais adiante.

Quando um servidor DNS envia uma consulta em busca de o endereço IP de um determinado

nome de domínio, envia na consulta informações como o IP da estação de origem, porta UDP de

origem e o transaction ID, que é um número de identificação utilizado em todas as requisições de

resolução de nomes. Se o servidor consultado não tiver autoridade sobre o domínio enviado na

consulta, o mesmo fará consultas recursivas até chegar ao servidor do domínio consultado. Este

servidor irá responder à consulta em uma das informações verificadas pelo servidor que originou

a consulta o campo ID do cabeçalho do pacote DNS, além das seguintes verificações:

Se o campo ID e o campo “nome a ser resolvido” do pacote DNS são iguais aos enviados

na consulta;

Se a porta de origem é igual à porta de destino do pacote UDP enviado a consulta;

Se o endereço de IP de origem é igual ao endereço de IP de destino enviado na consulta.

Se um atacante conseguir interceptar o pacote UDP enviado na resposta e injetar informações

falsas nele, o servidor que gerou a consulta irá armazenar esta resposta e assim terá seu cache

poluído. Quando o cliente consultar este servidor, terá como resposta uma informação falsa e

poderá ser direcionado para outro local que não o verdadeiro destino desejado pelo cliente em sua

consulta original.

Este ataque visa enviar uma resposta falsa ao servidor DNS vítima antes que a resposta

verdadeira enviada pelo servidor DNS questionado chegue à vítima. Esta resposta verdadeira irá

chegar até o servidor vítima, mas será descartada, pois este já recebeu uma resposta, mesmo que

falsa, com as informações desejadas.

O dnsspoofing pode ser realizado através de interceptação de pacotes e predição de transactions

ID, por exemplo. Quando bem sucedido, o cache do servidor vítima permanece poluído por um

determinado tempo, armazenando informações falsas sobre um determinado nome de domínio,

podendo levar a sérias conseqüências, tais como:


>Redirecionar de tráfego;

>Driblar mecanismos de defesa, baseados em softwares de filtragem de pacotes que

utilizam nomes para verificar a autenticidade entre eles;

>Ataques a todas as aplicações que necessitam do serviço de DNS para resolução de

nomes;

>Ataques DoS;

>Ataques de buffer overflow em resoluções reversas.

Report Page