SPOOFING

O ataque de DNS spoofing faz a modificação do endereço fonte ou destino nas mensagens DNS com diversas finalidades. Se uma botnet modifica seu endereço IP de origem trata-se de um Flood Attack de amplificação, através do qual os servidores DNS enviarão respostas para o endereço que supostamente fez as requisições, exaurindo, assim, os recursos do alvo.
Por outro lado, quando a resposta tem seu campo Value alterado pode se tratar de um ataque de Cache Poisoning, que, por sua vez, pode ter como objetivo o sequestro de um domínio ou redirecionar vítimas para endereços Web maliciosos, como ilustra a figura abaixo:

Exemplo de DNS spoofing

O ataque é bem sucedido caso o servidor aceite a resposta falsa. Softwares como o DNS Server da Microsoft verifica o único campo exigido pela RFC 1035 para validar uma resposta, o campo ID. Como este campo possui 16 bits, é possível, teoricamente, realizar um ataque de força bruta enviando respostas com diferentes IDs. O BIND (Berkley Internet Name Domain), no intuito de aumentar a segurança, verifica campos como IP e porta UDP, entre outros.

Formas de mitigar o ataque

Um método de defesa é guardar uma lista de respostas para uma determinada requisição por um intervalo de tempo. Enquanto outra resposta não for recebida o servidor pode armazenar a primeira resposta em seu cache ou não. Assim que outra resposta chega com o mesmo ID, são verificados os outros campos. Se o Value de alguma das respostas subsequentes for diferente, é identificado o ataque e as devidas medidas são tomadas, como remover a resposta do cache e relatar o ocorrido à administração da rede. As respostas que tiverem o mesmo Value são consideradas como uma única resposta.
O tempo estimado para análise das respostas DNS é baseado nas estatísticas de performance do DNS mostradas pelo MIT Laboratory for Computer Science e pelo Korea Advance Institute of Science and  Technology (KAIST). Essas estatísticas mostraram que o tempo médio para resolução de um nome é de 97 ms, sendo assim, um tempo entre 500 e 900 ms estipulado para análise de detecção de um ataque é suficiente.

Outro método de defesa é utilizar o DNSSEC, nome dado às extensões de segurança que estão sendo propostas para o protocolo DNS, definido pela RFC 2035. A principal característica desse modelo é prover autenticação da origem dos dados e verificar sua integridade utilizando criptografia de chave pública. No entanto o custo de processamento para validação de assinaturas digitais é demasiadamente elevado. Esse custo depende do algoritmo utilizado: Com DSA-512 é possível assinar aproximadamente 135 domínios/segundo em um PC de 500 Mhz utilizando FreeBSD e com RSA-1024 a taxa cai para 17 domínios/segundo. Para efeito de comparação um Root Server recebe em torno de 1.8 milhão de requisições por minuto.