Blog Agility

Segurança no DNS: Impedindo que terceiros saibam sua versão de DNS Server

Segurança no DNS: Impedindo que terceiros saibam sua versão de DNS Server

Existe uma boa frase que diz: “A genialidade está nas coisas simples”. Ao contrário do que pensam as pessoas, os hackers não trabalham 24 horas por dia em tarefas de adivinhação de senhas do seu perfil do Facebook ou de sua conta de e-mail corporativo. Utilizam-se de artifícios simples, mas que passam despercebidos pela maioria de nós. Na nossa vida de analista nos preocupamos demais quando um fabricante atualiza uma versão de algum software. É importante sabermos o que mudou em relação a uma versão no que diz respeito a vulnerabilidades.

Agora, pense no seguinte exemplo. Se alguém mal intencionado consegue ver quais as versões das ferramentas que você utiliza diariamente para manter o seu ambiente, ele pode fazer uma consulta rápida na Internet e ver quais vulnerabilidades ainda estão abertas na versão que você está utilizando. Pense no leque de opções que ele terá a partir desse ponto. Ele conseguirá, com um pouco de esforço, explorar esta vulnerabilidade e ter acesso ao seu ambiente.  


Conseguir essa informação é mais simples do que parece no DNS. Vamos demonstrar abaixo como obter essa informação e como ocultá-la para dificultar o trabalho de um invasor, protegendo-se de ataques direcionados ao DNS. Num prompt de comando, vamos executar uma consulta simples de DNS para um servidor executando o seguinte comando:

Linux:

dig chaos txt version.bind @(endereço_do_servidor_alvo) +short

Windows: Digite, em ordem:

Nslookup
server <IP_do_servidor_alvo>
set class=chaos
Set type=txt
version.bind

Veja o que a consulta retorna.
Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server01

É possível deduzir que este cliente utiliza o Bind na versão 9.7.3. Para DNS Microsoft, a coisa fica um pouco mais explícita.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server02

É possível ocultar essa informação nas duas plataformas. Vamos primeiro mostrar como isso é feito no Bind. Para isso, precisamos definir uma opção de configuração que oculte a versão do DNS Bind. Precisamos primeiro identificar onde estão definidas as opções.

  1. Localize o arquivo de configuração do Bind e mostre o conteúdo dele na tela.

    O arquivo geralmente se encontra em /etc/bind/named ou em var/named

    Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server03

Este é um arquivo de configuração default. Nele, vemos que não existem configuracões, apenas referências para outros arquivos de configuração. O interessante para nós é o arquivo /etc/bind/named.conf.options, que nos sugere que ele seja o responsável por armazenar as opções de configuração do Bind.Vamos então editar este arquivo com o VIAdicione a seguinte linha no final do arquivo

version “<texto_livre>”;

A imagem abaixo exibe um exemplo da configuração.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server04

Salve o arquivo ao finalizar. De volta ao console, reinicie o serviço do bind com o comando:

 /etc/init.d/bind9 restart

Nota: No comando, “bind9” pode ser substituído por “named” dependendo da sua distribuição Linux.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server05

Agora, vamos tentar novamente obter a informação da versão do bind deste servidor.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server06

Voilá! Agora, vamos ver como realizar a tarefa para o DNS Microsoft.

Para fazer a configuração no Microsoft, é preciso se conectar ao servidor de DNS alvo e abrir o prompt de comando. Vamos utilizar a biblioteca de comandos “DNSCMD” para alterar a variável EnableVersionQuery.Em primeiro lugar, a Microsoft não esconde de ninguém que exibe essa informação quando seu DNS é consultado e até fornece métodos para configurar a resposta.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server07

Fonte:
https://msdn.microsoft.com/en-us/library/cc422472.aspx  

Vamos considerar para o nosso exemplo que não queremos que nenhuma informação seja exibida.

No prompt de comando, digite:

dnscmd /config /EnableVersionQuery 0

Nota: verifique que seu usuário tem permissão suficiente para executar o comando ou a execução falhará.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server08

Executando como administrador:

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server09

Agora, vamos repetir a consulta ao DNS Microsoft. Perceba que a resposta volta vazia.

Tech-Tip_2015_02_Paulo_Elias_Jr_DNS_Impedindo_Que_Terceiros_Saibam_DNS_Server10

Vemos por meio do exemplo acima como é fácil um terceiro obter informações do seu ambiente com um simples comando e como fechar essa porta. Note que essa configuração não deve ser usada como pretexto para não trabalhar com versões mais recentes de software. Independente de qual solução você utiliza, conhecer o seu ambiente é a melhor forma de protegê-lo. Fique atento, pois o mundo desconhecido fora dos limites do seu firewall também se esforça pra isso. Até a próxima!