Cache Poisoning

O Ataque

O envenenamento do cache do servidor DNS é um ataque que visa a mudança de URL (Localizador uniforme de recursos) Web, prejudicar alguém economicamente e/ou vazar dados, informações pessoais e senhas.
O processo de envenenamento do cache ocorre durante o mapeamento DNS. Para fazer o envenenamento, o atacante faz uma requisição ao servidor DNS para saber o endereço IP de um site específico. Se o servidor local não tiver o endereço em seu cache, vai mandar o pedido para um servidor autoritário. Nesse ponto, o atacante resolve o pedido do servidor DNS através de um servidor autoritário falso implantado por ele, fornecendo o endereço IP do site desejado e, além do IP do site desejado, também envia endereços IP falsos de outros sites.

Cache Poisoning
Figura 2 - Cache Poisoning
Retirado de: "DESIGN AND IMPLEMENTATION OF AN SDN-ENABLED DNS SECURITY FRAMEWORK"

Na figura 2, é possível observar como o envenenamento de cache do DNS funciona. O cliente faz a requisição ao servidor(1), que por não ter o IP do site desejado faz pedidos até descobrir em que servidor existe o IP para o site desejado (2,3,4,5). Nesse momento, ele faz um pedido para o servidor autoritativo que contém o endereço do site desejado (6), mas ao invés de receber a resposta do servidor autoritário verdadeiro, o servidor autoritário do atacante responde à requisição, dando um endereço falso (7 vermelho). Esse endereço falsificado é, em seguida, encaminhado para o cliente que fez a requisição (8 vermelho).

Um ataque é considerado bem sucedido quando o servidor DNS aceita essa resposta falsificada recebida. Assim, caso alguém faça um pedido por um desses domínios específicos será redirecionado para o site de IP falso, que é feito com o intuito de parecer muito similar, quando não idêntico ao original, em vez de ser redirecionado para o verdadeiro. Nesse site falso montado pelo atacante, podem ser coletadas informações que a vítima inserir, desde senhas até dados pessoais.

exemplo-cache-poisoning
Figura 1 - Disponível em: https://exame.abril.com.br/tecnologia/
Na figura 1, podemos observar um site que, à primeira vista, pode ser confundido com o site verdadeiro do Banco do Brasil. Entretanto, quando analisado de forma cuidadosa, é possível perceber o uso de linguagem coloquial em "Ligue pra nóis", o que evidencia a falsificação da página.

Embora tenham sido propostos e desenvolvidos métodos contra o envenenamento do cache, eles não se provaram tão eficazes. Um desses métodos é o DNSSEC, que iria requerer uma mudança na arquitetura do DNS, o que torna essa proposta difícil de ser popularizada e, consequentemente, utilizada. Além disso, essa alternativa não previne completamente os ataques e não propõem métodos para restaurar o cache após o ataque.

Formas de mitigar o ataque

Uma das propostas para mitigar o impacto causado pelo envenenamento de cache do servidor DNS seria recuperar parte do cache do servidor.
Como os servidores DNS conservam as respostas falsas de IP enviadas pelo atacante, o cache do servidor seria primeiramente limpo. Após o cache ser esvaziado, uma lista contendo resoluções de nomes de sites frequentemente visitados (como Google, Facebook e Youtube) será carregada no cache do servidor DNS, sem que exista a necessidade de um pedido ser feito para esse site específico.

Outra proposta seria agir para prevenir o ataque:

Uma proposta para prevenir ataques de envenenamento de cache é uma resposta do pedido DNS vinda de vários servidores DNS, não de apenas um único. Esse método, ao qual os pesquisadores atribuíram o nome de Multi-DNS(MDNS), além de aumentar a dificuldade de sucesso no ataque, irá aumentar também os custos para realizá-lo , pois teria que comprometer diversos servidores ao mesmo tempo com a mesma resposta.
Para essa alternativa, é proposto que sejam utilizados N servidores DNS (N ≥ 3), que tenham diferentes softwares de DNS e diferentes sistemas operacionais. Embora eles tenham diferenças, eles precisarão gerar a mesma resposta para um mesmo pedido DNS.
Com o intuito de escolher os servidores a serem utilizados, o MDNS terá três módulos virtuais de funções: o agendador, o que toma as decisões e o purificador.
A função do agendador é escolher um certo número de servidores DNS (N ≥ 3) para serem ativos e receberem os pedidos DNS. Os casos em que a lista de servidores ativos seria trocada seria quando se passa um tempo determinado ou quando uma mensagem de alerta é recebido do que toma as decisões.
O decididor tem a função de julgar se os DNSs recebidos são legítimos ou falsificados. Para fazer essa escolha, ele parte do pressuposto de que é muito difícil para os atacantes comprometerem a maioria dos servidores DNS ao mesmo tempo e gerando uma mesma resposta. Para classificar as respostas, o decididor irá ver se as várias respostas recebidas são iguais e, em caso positivo, elas serão consideradas seguras e válidas. Caso contrário, o agendador irá ser notificado para mudar sua lista de servidores e o purificador será acionado.
O purificador tem como atribuição verificar os servidores que dão uma resposta diferente dos demais. Se for a primeira vez que o esse determinado servidor manda uma resposta diferente, seu cache será limpo, caso seja uma recorrência, ele será reiniciado. Depois do cache ser limpo ou servidor reiniciado, uma notificação será mandada para os outros módulos indicando que ele pode ser usado novamente.
Como para responder à requisição DNS várias respostas de servidores são necessárias, um problema relacionado à atraso irá surgir. Para mitigar essa situação, se o servidor receber um determinado número pré estabelecido de respostas até um tempo também arbitrário, a resposta ao pedido é enviada.