DNS Cache Snooping
DNS
(Domain Name System) é um protocolo que tem como função traduzir nomes para
endereços IPs, sendo o sistema utilizado por praticamente todos os sistemas que
estão na internet. Entretanto, quando um servidor de DNS está com alguma
configuração incorreta, pode comprometer a aplicação, pois acaba fornecendo
informações que podem ser utilizadas para os atacantes.
Neste
artigo, falaremos sobre o DNS Cache Snooping, que é quando um atacante consulta
um servidor DNS afim de descobrir se um determinado endereço está registrado em
cache ou não naquele servidor DNS. Ou seja, o atacante faz uma query no
servidor DNS do alvo, afim de descobrir se o mesmo visitou um determinado
endereçou ou não.
Essa
técnica costuma ser utilizada para obter informações sobre o empresa, como
quais endereços são frequentemente utilizados. Com isso, um atacante pode planejar
a execução de um ataque, como um phishing elaborado.
Exemplo prático:
Um
servidor DNS está suscetível ao ataque de DNS Cache Snooping, se for possível fazer
uma consulta afim de procurar endereços já resolvidos pelo mesmo. Na figura
abaixo, nós tentamos obter o endereço IP de um determinado hostname.
Primeiramente
acima, tentamos executar o comando com a opção –norecurse e obtemos a resposta
que não foi possível encontrar o hostname.
Depois
disso, usamos a opção –recurse, que revela o IP relativo ao hostname. Se executássemos
o nslookup com a opção –norecurse novamente, a resposta com o retorno do IP tornaria
a aparecer. A razão disso acontecer, é que quando a opção –recurse foi usada, o
servidor DNS guardou em cache a resposta e retornou o resultado também quando
utilizado a opção –norecurse com a ferramenta nslookup. O exemplo acima demonstra
que o servidor DNS está suscetível ao ataque de DNS cache snooping.
Outro
método para verificar é utilizando a ferramenta dig, informando o dns e endereço alvos, seja recursivo ou não. A
linha de comando ficaria:
dig
@ns.teste.br alvo.com.br A +norecurse
Neste
exemplo a consulta é feita e caso o endereço esteja em cache, exibira algo como
ANSWER:1 e os respectivos dados, caso contrário será exibido ANSWER:0. Ocorre que mesmo que o retorno seja 0 em primeira instância,
na segunda será 1, pois opôs a consulta o mesmo estará em cache.
Também
é possível analisar devido ao tempo de resposta, comparando o TTL das duas
consultas, caso na segunda consulta esteja muito baixo comparado ao primeiro,
também pode caracterizar vulnerável.
O
Nmap, ferramenta conhecida por muitos e já abordada neste blog, tem um script
que verifica os domínios em cache, o comando por default é não recursivo. Ao
testarmos o script no DNS do Google, temos o retorno conforme imagem:
Como Proteger
A
proteção consiste em filtrar os acessos ao seus servidores recursivos. Caso
esteja fornecendo uma resolução de DNS, é possível limitar o acesso apenas para
os clientes confiáveis.
Referencias:
0 comentários: