O que é envenenamento de cache DNS? | Falsificação de DNS

Os invasores podem envenenar um cache de DNS, fazendo com que os resolvedores de DNS façam o cache de informações falsas, resultando no resolvedor enviando o endereço IP errado aos clientes, e os usuários que tentam navegar em um site são direcionados para o local errado.

Share facebook icon linkedin icon twitter icon email icon

Falsificação de DNS

Objetivos de aprendizado

Depois de ler este artigo você será capaz de:

  • Definição de envenenamentos de cache de DNS
  • Entenda como o cache de DNS funciona
  • Explique como os invasores podem envenenar um cache de DNS
  • Entenda como o DNSSEC ajuda a impedir ataques de envenenamento de DNS

O que é envenenamento de cache de DNS?

Imagine que, como uma brincadeira de formatura, os alunos do ensino médio alteram todos os números de quartos no campus da escola, para que os novos alunos que ainda não conhecem o layout do campus passem o dia seguinte se perdendo e aparecendo nas salas de aula erradas. Agora imagine que os números de salas incompatíveis sejam registrados em um diretório do campus, e os alunos continuem indo para as salas erradas até que alguém finalmente perceba e corrija o diretório.

Envenenamento por cache de DNS é o ato de inserir informações falsas em um cache de DNS, para que as consultas de DNS retornem uma resposta incorreta e os usuários sejam direcionados aos sites errados. O envenenamento de cache de DNS também é conhecido como "falsificação de DNS". Endereços IP são os "números dos quartos" da internet, permitindo que o tráfego da web chegue aos lugares certos. Os caches do resolvedor de DNS são o "diretório do campus" e, quando armazenam informações com defeito, o tráfego vai para os lugares errados até que as informações em cache sejam corrigidas. Observe que isso realmente não desconecta os sites reais de seus endereços IP reais.

Como normalmente não há como os resolvedores de DNS verificarem os dados em seus caches, informações de DNS incorretas permanecem no cache até que o tempo de vida útil (TTL) expire ou até que sejam removidos manualmente. Várias vulnerabilidades tornam possível o envenenamento de DNS, mas o principal problema é que o DNS foi criado para uma internet muito menor e com base em um princípio de confiança (como o BGP). Um protocolo de DNS mais seguro chamado DNSSEC visa solucionar alguns desses problemas, mas ainda não foi amplamente adotado.

O que os resolvedores de DNS fazem?

Os resolvedores de DNS fornecem aos clientes o endereço IP associado a um nome de domínio. Em outras palavras, eles pegam endereços de sites legíveis por humanos, como "cloudflare.com" e os convertem em endereços IP legíveis por máquina. Quando um usuário tenta navegar para um site, seu sistema operacional envia uma solicitação para um resolvedor de DNS. O resolvedor de DNS responde com o endereço IP e o navegador da web pega esse endereço e inicia o carregamento do site.

Como funciona o cache de DNS?

Um resolvedor de DNS salvará respostas a consultas de endereço IP por um determinado período de tempo. Dessa maneira, o resolvedor pode responder a consultas futuras muito mais rapidamente, sem precisar se comunicar com os vários servidores envolvidos no processo típico de resolução de DNS. Os resolvedores de DNS salvam respostas em seu cache pelo tempo de vida útil (TTL) associado a esse endereço IP.

Resposta sem cache de DNS:

DNS uncached response

Resposta em cache de DNS:

DNS cached response

Como os invasores envenenam caches de DNS?

Os invasores podem envenenar os caches de DNS personificando nameservers de DNS, fazendo uma solicitação para um resolvedor de DNS e forjando a resposta quando o resolvedor de DNS consulta um nameserver. Isso é possível porque os servidores de DNS usam UDP em vez de TCP e porque atualmente não há verificação de informações DNS.

Processo de envenenamento de cache DNS:

DNS Cache Poisoning Process

Cache de DNS envenenado:

Poisoned DNS Cache

Em vez de usar o TCP, que exige que ambas as partes envolvidas na comunicação realizem um "handshake" para iniciar a comunicação e verificar a identidade dos dispositivos, as solicitações e respostas de DNS usam o UDP ou User Datagram Protocol. Com o UDP, não há garantia de que uma conexão esteja aberta, que o destinatário esteja pronto para receber ou que o remetente seja quem ele diz que é. O UDP é vulnerável à falsificação por esse motivo - um invasor pode enviar uma mensagem via UDP e fingir que é uma resposta de um servidor legítimo falsificando os dados do cabeçalho.

Se um resolvedor de DNS recebe uma resposta forjada, ele aceita e armazena em cache os dados de forma não crítica, porque não há como verificar se as informações são precisas e são provenientes de uma fonte legítima. O DNS foi criado nos primeiros dias da internet, quando as únicas partes conectadas a ele eram universidades e centros de pesquisa. Não havia razão para esperar que alguém tentasse espalhar informações falsas sobre o DNS.

Apesar desses principais pontos de vulnerabilidade no processo de cache de DNS, os ataques de envenenamento do DNS não são fáceis. Como o resolvedor de DNS realmente consulta o authoritative nameserver, os atacantes têm apenas alguns milissegundos para enviar a resposta falsa antes que a resposta real do authoritative nameserver chegue.

Os invasores também precisam conhecer ou adivinhar vários fatores para realizar ataques de falsificação de DNS:

  • Quais consultas de DNS não são armazenadas em cache pelo resolvedor de DNS direcionado, para que o resolvedor consulte o authoritative nameserver
  • Qual porta* o resolvedor de DNS está usando - eles costumavam usar a mesma porta para todas as consultas, mas agora usam uma porta aleatória diferente a cada vez
  • O número de identificação da solicitação
  • Para qual authoritative nameserver a consulta vai

Os invasores também podem obter acesso ao resolvedor de DNS de alguma outra maneira. Se uma parte mal-intencionada operar, invadir ou obter acesso físico a um resolvedor de DNS, poderá alterar mais facilmente os dados em cache.

*Na rede, uma porta é um ponto virtual de recepção de comunicação. Os computadores possuem várias portas, cada uma com seu próprio número e, para que os computadores se comuniquem, determinadas portas precisam ser designadas para certos tipos de comunicação. Por exemplo, as comunicações HTTP sempre vão para a porta 80 e o HTTPS sempre usa a porta 443.

Falsificação e censura de DNS

Vários governos envenenaram intencionalmente caches de DNS em seus países, a fim de negar o acesso a determinados sites ou recursos da web.

Como o DNSSEC ajudará a impedir o envenenamento do DNS?

DNSSEC é a abreviação de Domain Name System Security Extensions (Extensões de Segurança do Sistema de Nomes de Domínio) e é um meio de verificar a integridade e a origem dos dados de DNS. O DNS foi originalmente projetado sem essa verificação, e é por isso que o envenenamento por DNS é possível.

Assim como o TLS/SSL, o DNSSEC usa criptografia de chave pública (uma maneira de assinar informações digitalmente) para verificar e autenticar dados. As extensões DNSSEC foram publicadas em 2005, mas o DNSSEC ainda não é popular, deixando o DNS ainda vulnerável a ataques.