FreeBSD

22 de setembro de 2016

Interrogação de servidor DNS com DNSEnum

Mais artigos de »
Escrito por: Leonardo Souza
Tags:

Interrogação de servidor DNS com DNSEnum

Uma das técnicas mais utilizadas na fase de reconhecimento do pentest é a interrogação de servidores DNS. Através dela o auditor do teste procura descobrir quais são os computadores, considerados críticos para o bom funcionamento da organização e seus respectivos IPs, e que consequentemente possuem informações altamente confidenciais, como por exemplo, os servidores. Neste artigo realizaremos uma interrogação do servidor DNS com o DNSEnum.

Domain Name Server (DNS) é o serviço responsável por traduzir nomes de hosts em IPs e de IPs em nomes. Em outras palavras, este serviço recebe uma requisição a um nome de host na rede (ou internet) e a encaminha para o IP correspondente e virce-versa. Um servidor DNS é o computador que realiza uma relação entre estes nomes e IPs e retorna a resposta a quem solicita a informação.




Este servidor consegue fazer isso, porque possui uma lista contendo todos os IPs e seus respectivos nomes em um banco de dados de domínio e ao receber a requisição, realiza esta relação e retorna para o cliente, do serviço DNS, o IP correspondente ao nome solicitado. Pela sua importância, é comum configurar este serviço com redundância de servidores, ou seja, mais de uma máquina oferecendo este serviço.

Isso significa que, ao realizar uma interrogação a um servidor DNS é possível conseguir uma lista dos computadores, seus nomes e IPs de um determinado domínio, e consequentemente uma rede. Este tipo de interrogação retorna as entradas existentes no arquivo de zona do domínio configurado no servidor DNS.

Interrogação de servidores

A ferramenta DNSEnum possui várias funcionalidades relativas a consulta a servidores DNS. Através dela podemos realizar a transferência de zona do domínio ou realizar uma interrogação ao servidor DNS por meio da força bruta, ou seja, tentativa e erro.

A técnica de transferência de zona consiste em realizar uma cópia do arquivo de zona configurada no servidor DNS. Este arquivo é muito importante, pois é ele que armazena todos nomes de computadores de um determinado domínio e o associa a um endereço IP. Sendo assim, podemos dizer que realizar a transferência de zona bem sucedida, nos permitirá conhecer todos os computadores de um determinado domínio e seus respectivos IPs.

Por outro lado, existem casos em que a transferência de zona não é permitida e a melhor técnica para este cenário é o ataque de força bruta. Através desta técnica,  perguntamos ao servidor DNS se existe em sua zona um computador com determinado nome, em caso positivo ele responde o IP correspondente. Para que esta técnica seja bem sucedida, passamos como parâmetro um arquivo contendo uma lista com nomes de computadores, quanto mais completa e extensa for a lista, melhores resultados serão obtidos dela.

DNSEnum

O DNSEnum não é uma ferramenta nativa do FreeBSD, por este motivo precisaremos instalá-la no sistema. Para isso, podemos utilizar a coleção de ports ou a instalação via pacotes binários. Para realizar a instalação por meio da coleção de ports basta utilizar o port “/usr/port/dns/dnsenum”. Neste artigo utilizaremos a instalação por meio de pacotes binários. Para mais detalhes leia nosso arquivo sobre instalação de programas no FreeBSD.

Para instalar o dnsenum digite o comando pkg install dnsenum:

# pkg install dnsenum

pkg-install-dnsenum

O sistema vai realizar um levantamento de todas as dependências necessárias para concluir a instalação. Para confirmar digite “y”.

confirmar-dnsenum

Assim, a instalação será concluída.

Transferência de zona utilizando o DNSEnum

Por padrão, o servidor DNS possui um arquivo de zona, local onde são listados todos computadores relativos ao domínio configurado e seus respectivos IPs associados. A técnica de transferência de zona obtêm uma cópia deste arquivo, e é isso que faremos agora. Para este primeiro exemplo utilizaremos o domínio chamado “dominiobsd.com” configurado em um FreeBSD 10.3 e que possui o seguinte arquivo de zona:

zona

O que desejamos aqui é realizar a transferência de zona e assim, obter uma cópia destes registros. Para isso digite o comando dnsenum seguido do domínio.

# dnsenum dominiobsd.com

dnsenum_transferencia_zona

Perceba que a transferência foi bem sucedida, e podemos visualizar várias informações importantes, como IP do servidor, IPs e nomes dos computadores que fazem parte deste domínio. Estas informações podem ser utilizadas em outras fases do pentest como a fase de varredura e fase de ataque.

Ataque de força bruta com o DNSEnum

Embora seja uma técnica interessante, a transferência de zona nem sempre bem sucedida, afinal um bom administrador de redes criará mecanismos para evitar que um computador sem permissão consiga realizar este procedimento e isso pode ser facilmente realizado por meio de uma configuração correta de servidor DNS.

Para resolver este problema existe a possibilidade de obter uma lista dos computadores de uma determinada zona por meio da força bruta. Esta técnica utiliza uma lista de palavras para perguntar ao servidor se existe um computador com os nomes presentes nesta lista, em seu domínio. Assim, perguntamos ao servidor DNS, por exemplo, se existe em sua configuração de zona um host com o nome de “adm” e caso o resultado seja positivo isso será mostrado no fim da pesquisa.

Para facilitar esta tarefa o DNSEnum possui uma wordlist, a “/usr/local/share/dnsenum/dns.txt”, muito útil, e que possui uma grande quantidade de nomes que pode ser utilizada juntamente com o parâmetro –f.

Como ilustração, vamos utilizar esta técnica no domínio google.com. para isso digite o comando “dnsenum –f /usr/local/share/dnsenum/dns.txt dominio”.

# dnsenum –f /usr/local/share/dnsenum/dns.txt dominio

forca-bruta-dnsenum

Veja que conseguimos obter várias informações sobre os hosts e IPs associados a este domínio. Como explicado em outros artigos, estas informações serão utilizadas em outras fases do pentest, e nos retornará uma possível lista de alvos.

Considerações Finais

Já explicamos que o pentest não é um conjunto de técnicas soltas e individuais, estas técnicas fazem parte de um projeto que possui cronologia e é divido em fases bem definidas, por isso aprender uma técnica ou como usar uma ferramenta não faz de ninguém um pentester. Sendo assim, reforço que esta é apenas uma das inúmeras técnicas da fase de reconhecimento e como tal deve ser utilizada juntamente com outras ferramentas e técnicas.

Espero que o conteúdo tenha sido útil, em caso de dúvidas utilize os comentários.






Sobre o Autor

Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.




0 Comments


Seja o Primeiro a Comentar!


You must be logged in to post a comment.