AMBIENTE DE MONITORAÇÃO E ESTUDO DAS
VULNERABILIDADES DO SERVIÇO DE NOMES DE
DOMÍNIO
Rafael S. Reis1, Leonardo S. S. Thomaz1, Edna Dias Canedo2, Laerte Peotta1,
Rafael Timóteo de Sousa Júnior1
1
2
Departamento de Engenharia Elétrica – Universidade de Brasília (UnB)
Brasília – DF – Brasil
Faculdade UnB Gama – Universidade de Brasília (UnB) - Caixa Postal 8114 – 72.405610 - Gama – DF – Brasil
[email protected], [email protected], [email protected],
[email protected], [email protected]
Abstract. The domain name system (DNS) is one of the main pillars of the
Internet. Successful attacks to servers responsible for this service can generate
large losses for providers and consumers of Internet services. In this context,
given the DNS protocol vulnerabilities, it is crucial that this protocol be
replaced by DNSSEC. This article describes an environment for studying the
vulnerabilities of the domain name service, including the comparison between
DNS and DNSSEC, and running scans to assess the migration from DNS to
DNSSEC (especially in Brazil), as well as to monitor exploits to known
vulnerabilities in this context. Using such an environment, experiments results
are presented in order to give evidence of its interest as well as a picture of
the situation of this critical system in Brazil.
Resumo. O sistema de nome de domínio (DNS) é um dos principais pilares da
Internet. Ataques bem-sucedidos a servidores responsáveis por este serviço
podem gerar grandes prejuízos para provedores e usuários finais de serviços
da Internet. Nesse contexto, dadas as vulnerabilidades do protocolo DNS, é
crucial que tal protocolo seja substituído pelo DNSSEC. Este artigo descreve
um ambiente de estudo das vulnerabilidades do serviço de nomes de domínio,
incluindo a comparação entre DNS e DNSSEC, a execução de varreduras
para avaliar o estado da migração do DNS para o DNSSEC (especificamente
no Brasil), bem como para monitorar a exploração de vulnerabilidades
conhecidas nesse contexto. Resultados de experimentos realizados com tal
ambiente são apresentados de modo a dar evidências de seu interesse, bem
como um retrato da situação desse sistema crítico no Brasil.
1. Introdução
O Sistema de Nomes de Domínios traduz nomes de domínio em endereços IP,
permitindo que aplicações e usuários tenham acesso aos diversos serviços da Internet,
como sistemas de comércio eletrônico, navegação de sites e envio de e-mails, sem
precisar indicar o endereço IP, mas apenas o mnemônico para o serviço desejado
[Barbosa, Souto, Feitosa e Martins 2014].
Tal sistema se apoia em uma base de dados hierárquica e distribuída entre os
nodos participantes, podendo cada um dos nodos usar uma memória cache para
armazenar as consultas mais comuns, o que permite agilizar o processo realizado, além
de inibir uma sobrecarga aos servidores envolvidos [Albitz, Liu 2005]. Na versão
clássica do sistema, as comunicações entre tais nodos eram providas pelo protocolo
DNS, que, apesar de ter dado provas de um bom funcionamento, possui importantes
vulnerabilidades de segurança.
Em função dessas vulnerabilidades, são amplamente conhecidos, por exemplo,
os ataques de envenenamento de cache (cache poisoning) e de amplificação DNS, que
podem ser realizados contra esse sistema:


O envenenamento de cache consiste em um atacante responder a uma consulta
DNS com uma resposta maliciosa antes de o resultado verdadeiro chegar. Assim
essa informação maliciosa fica armazenada na memória cache de servidores que
estejam armazenando tal consulta. Todos os usuários que realizarem essa mesma
consulta e receberem resposta de um desses servidores DNS com cache serão
direcionados para um destino malicioso;
A amplificação DNS se baseia no fato de que a resposta é muito maior que a
consulta DNS. Assim, o atacante varre a Internet à procura de servidores DNS e
faz requisições a todos os servidores encontrados. O usuário malicioso modifica
o endereço IP de origem da consulta, substituindo-o pelo IP da vítima do ataque,
de modo que as respostas são direcionadas a esse alvo, sobrecarregando-o.
Em função disso, surgiu a necessidade de criar o DNS Security Extensions
(DNSSEC) [Iwasa & Hilário 2011], que busca eliminar grande parte das falhas de
segurança do sistema DNS, provendo autenticidade e integridade às mensagens, através
de algoritmos de criptografia assimétrica, funções de hash e técnicas eficientes de
gerência de chaves. Vale notar que, apesar de ser a principal ferramenta de segurança
para sistemas DNS, este protocolo não garante proteção contra ataques de negação de
serviços [Krishnaswamy 2009].
O sistema DNS é uma das bases mais importantes da infraestrutura da Internet,
sendo considerado crítico para o bom funcionamento dessa rede [Hoepers 2013]. A
tendência é que este serviço seja cada vez mais utilizado, aumentando ainda mais a sua
importância. Por essa razão, é necessário garantir que o DNSSEC seja implementado
em todos os servidores DNS.
É importante monitorar a migração para o DNSSEC e dar continuidade à análise
de vulnerabilidades nesse contexto, especialmente no Brasil. Dada essa motivação, o
presente artigo busca contribuir com a definição de um ambiente de monitoração e
estudo de vulnerabilidades do sistema de nomes de domínio, o que tem como resultado
outra contribuição também no que se refere a monitorar a migração para o DNSSEC,
em especial dando um retrato da situação brasileira quanto a esse sistema crítico.
Este artigo é então organizado, no seu restante, com uma seção 2, que trata da
metodologia adotada, seguida da descrição do ambiente de monitoração e estudos do
sistema DNS na seção 3. Na seção 4, descrevem-se os experimentos demonstrativos das
funcionalidades desse ambiente no que se refere ao estudo de vulnerabilidades do
sistema DNS, apresentando ainda um apanhado da monitoração dos serviços no Brasil.
Finaliza-se com uma seção de conclusões.
2. Metodologia
A metodologia proposta consiste primeiro na concepção e implantação de um ambiente
para monitorar e estudar os serviços do DNS.
Concomitantemente, foram projetados e realizados experimentos para validar o
ambiente, comparando a situação com proteção do DNSSEC em relação à situação com
o protocolo DNS clássico. Tais experimentos são relacionados a ataques de
envenenamento de cache, e incluem uma varredura de serviços DNS que permite obter
um panorama brasileiro de servidores DNS. Para tanto, são os seguintes os
experimentos desenvolvidos:


O primeiro experimento contempla uma atividade de estudo da eficiência do
DNSSEC contra fraudes e envenenamento de cache, evidenciando, de maneira
didática, o tipo de proteção fornecido com o uso das medidas de segurança desse
protocolo. Nesse sentido, foram construídos dois ambientes virtualizados; um
deles com o DNS comum e outro com a utilização do DNSSEC para o servidor
em modo recursivo de operação;
O segundo experimento consiste de atividade relacionada às estatísticas de uso
do DNS e DNSSEC no Brasil, e também inclui uma proposta de monitoramento
de incidentes de envenenamento do cache.
3. Ferramentas Utilizadas
Os cenários experimentais são realizados por intermédio de máquinas virtuais. O
sistema operacional usado em todas as máquinas virtuais foi o Ubuntu 12.04 LTS com o
BIND9 como software para o serviço de DNS.
Para os procedimentos experimentais, foram exploradas as ferramentas,
WireShark, para captura e análise de pacotes, NMAP, para efetuar a varredura de rede,
DIG, para verificação de recursividade e uso de DNSSEC, e Virtual Box, para criação
dos cenários em máquinas virtuais1.
O Wireshark é uma ferramenta muito disseminada para captura e análise de
pacotes em redes TCP/IP.
O NMAP é uma ferramenta clássica para varreduras de redes TCP/IP. Com esta
ferramenta, é possível especificar diversos parâmetros para otimizar e personalizar a
varredura (“scanning”) de modo a obter os resultados esperados. Dentre estes
parâmetros, se pode determinar o protocolo utilizado da camada de transporte, portas de
destino, listas de endereços IP, velocidade, tamanho do pacote, tempo limite de
resposta, etc.
O DIG é um cliente de DNS nativo de sistemas UNIX de derivação Debian,
muito útil em depurações de resoluções de nomes. Ele permite fazer uma consulta
especificando cada campo ou tipo de entrada, como MX (Mail Exchange), AA
(Endereço IPv6) ou NS (Name Server), com a opção de uso ou não de cache.
1
Instruções sobre as ferramentas DIG e NMAP podem ser encontradas no
https://www.nanog.org/meetings/nanog52/presentations/Sunday/Sinatra-DNS-DNSSEC_tutorialreallyfinal.pdf
site:
Os cenários dos experimentos foram criados utilizando o Virtual Box, um
produto gratuito da Oracle que permite oferecer os recursos físicos de um computador –
disco, memórias e interfaces de entrada e saída – para uma máquina virtual. Assim, é
preciso apenas um dispositivo físico para criar uma topologia virtual que integra
diferentes sistemas operacionais.
4. Descrição de Experimentos com Serviços do DNS
O primeiro experimento é realizado em dois cenários que permitem comparar DNS com
a extensão DNSSEC. Com os dois cenários, mostra-se que uma resposta DNS pode ser
facilmente fraudada e que com recurso do DNSSEC é possível garantir a integridade e
confiabilidade da consulta.
O segundo experimento consiste de uma varredura de baixa velocidade que concerne
tanto aos serviços pelo DNS, quanto pelo DNSSEC.
4.1. Experimento 1 – Cenário 1 – DNS Vulnerável
O cenário é composto por três dispositivos clientes (Usuários), um servidor DNS
operando no modo recursivo e um servidor DNS configurado para funcionar como
autoritativo do domínio alvo, sendo que todos estes componentes contam com acesso
total à Internet (Figura 1).
Figura 1. Cenário 1 – Atividade com o DNS Vulnerável
Nos experimentos realizados, foi usado o domínio "UNB.BR" pelo fato de o
mesmo fazer uso do DNSSEC, mas este teste pode ser repetido para qualquer domínio
com DNSSEC habilitado.
Neste cenário simulado, um dos clientes faz uma requisição do nome
"www.unb.br" para o Servidor Recursivo. O servidor do "BR." delega o domínio
"UNB.BR." apontando as consultas do tipo "NS” para o(s) IP(s) do(s) servidor(es) que
contêm a zona deste domínio. O ataque vem logo depois desta etapa. No momento em
que o Recursivo (sem DNSSEC) faz a consulta ao IP que recebeu como resposta do
“.BR”, o atacante intercepta a mensagem e dá uma falsa resposta, atribuindo o IP que
lhe convém ao nome "www.unb.br". Feito isto, o cache do Recursivo fica contaminado
com essa entrada falsa e consequentemente todos os clientes que usarem essa entrada
também terão a mesma resposta.
Para melhor evidenciar o ataque, foram feitas capturas de pacotes no modo
PCAP, que podem ser visualizadas graficamente pelo software WIRESHARK (Figura
2), e também capturas das telas dos clientes e evidências pelo NSLOOKUP (Figura 3).
Figura 2. Cenário 1 – Captura com o Wireshark
Figura 3. Cenário 1 – Saída do NSLOOKUP
Na Figura 4, é possível observar a resposta falsa enviada pelo dispositivo
malicioso, ou seja, aquele acessado através do endereço IP gerado pelo atacante e vetor
da contaminação do cache. Neste caso, a fraude consiste em redirecionar o cliente para
o IP 192.168.10.10, mas este poderia ser qualquer outro de interesse do atacante.
Especificamente, a Figura 4 apresenta a página www que é mostrada quando o cliente
acessa a falsa URL www.unb.br. No experimento, tal página foi configurada em um
servidor WEB apache2, instalado em um UBUNTU 12.04 - LTS, apenas para fim de
ilustração completa de um ataque de envenenamento de cache DNS.
Figura 4. Cenário 1 – Página Falsa Acessada
4.2. Experimento 1 – Cenário 2 – DNSSEC
Este cenário tem a mesma estrutura do Cenário 1, sendo feita apenas uma alteração no
Servidor Recursivo, no qual a validação de DNSSEC é habilitada (Figura 5).
Para habilitar o DNSSEC em um servidor Recursivo BIND9, deve-se editar o
arquivo de configuração em "/etc/bind/named.conf" e retirar o comentário da linha
"dnssec - validation auto" conforme apresentado na Figura 6.
Figura 5. Cenário 2 – Atividade com o DNSSEC
Figura 6. Cenário 2 – Habilitação DNSSEC
No cenário, repetem-se as mesmas consultas ao domínio "UNB.BR", efetuandose o mesmo tipo de tentativa de fraude. O resultado é que durante o ataque não há
nenhuma resposta fraudada, pois a integridade e a autenticidade foram garantidas pelo
DNSSEC.
Também são capturados os pacotes no formato PCAP e telas dos clientes para
validar o procedimento, mas, como o Bind9 registra os eventos de consultas DNS na
pasta /var/log/syslog, pode-se examinar este arquivo para confirmar a recusa da resposta
pela verificação de chaves: (Figura 7). Observa-se que, na primeira tentativa de acesso à
URL www.unb.br, obtém-se a resposta de que não foi possível resolver o nome em
questão. Já no segundo acesso, obtém-se o endereço correto. Isso é explicado pelo fato
de que a primeira resposta obtida não contém a chave fornecida pelo domínio pai, no
caso o ".BR". Assim, a resposta foi descartada pelo servidor recursivo.
Figura 7. Cenário 2 – Registros Syslog
No destaque da Figura 7, verifica-se que a resposta foi recusada, pois o domínio
"Parent" informou que o domínio "UNB.BR" possui DNSSEC, entretanto não recebeu
uma resposta segura, devendo assim ser descartada. Com estes resultados, mostra-se a
eficiência da extensão DNSSEC de segurança ao DNS, provendo integridade e
autenticidade ao protocolo.
4.3. Experimento 2 – Varreduras e Monitoração do Sistema DNS
A segunda atividade proposta está relacionada às estatísticas de uso do DNS e DNSSEC
no Brasil, e também inclui uma proposta de monitoramento de incidentes de
envenenamento do cache.
Neste experimento, além da configuração comum do Experimento 1, NMAP e
DIG, foi utilizada a ferramenta Notepad++, todas instaladas em um S.O. UBUNTU 12.4
LTS 64bits, processador Intel-I7 com 8 GBs de memória.
Ao fim deste experimento, é possível ter uma visão geral de como se encontra a
migração de DNS para DNSSEC no Brasil atualmente. Para isto, foi feita uma varredura
em todos os blocos de endereços IPs reservados ao Brasil, no período do dia primeiro de
abril até o dia 28 de maio de 2014. A varredura foi feita de maneira distribuída, ou seja,
a partir de diversas origens, para evitar problemas de bloqueios por firewalls das
operadoras.
Para obter os dados de interesse, a varredura foi feita de maneira gradual.
Primeiramente, foi levantada a quantidade de servidores DNS públicos com a porta 53
aberta. Nesta lista foram diferenciados servidores autoritativos e/ou recursivos. Das
duas listas resultantes, foram retiradas informações de uso de DNSSEC, sistema
operacional, software DNS e versão do software.
Para as varreduras, o NMAP foi configurado com os seguintes parâmetros:
"nmap -Pn -n -T5 -p T:53 --open -iL Lista_de_IPs > Resultado", onde “-Pn" é para não
executar o icmp request, "-n" para não fazer consulta reversa de DNS, "-T5" define a
velocidade, “-p T:53" especifica a porta e o protocolo a ser inspecionado, e "--open"
filtra a saída para mostrar apenas os abertos.
O programa "DIG" foi usado para verificar a recursividade e também para
checar o uso de DNSSEC.
Todos estes dados foram tratados e organizados para maior entendimento e
geraram os seguintes resultados:
a. Na primeira fase foram identificados cerca de 45 mil servidores respondendo a
requisições na porta 53/TCP-UDP. Observa-se que isso não significa que todos
estes servidores estejam com serviço de DNS ativado, simplesmente respondem
na porta 53.
b. Da lista acima, aproximadamente 7.500 são servidores recursivos.
c. Dentre os servidores recursivos abertos, 836 estão aptos a responder requisições
com a validação de DNSSEC. Esta fração representa aproximadamente 13% do
total.
O resultado do Item 'a' é puramente estatístico se analisado isoladamente, pois
este valor representa a soma de diferentes tipos de serviço como DNS recursivo,
autoritativo, Relay e diversos serviços com porta não padronizada. Deve-se ressaltar
também que a maioria dos servidores DNS recursivos de redes locais não são públicos,
obviamente por motivos de segurança e de desempenho.
No item 'b' pode-se registrar uma quantia razoável de servidores recursivos
abertos publicamente. Há indícios de que a grande maioria destes seja publicada
indevidamente e sem intenção definida, pois verifica-se que a maioria destes são
roteadores e equipamentos mal configurados. Estes servidores, como são abertos para
toda a Internet, podem contribuir para a insegurança na rede, sendo facilmente usados
em um ataque DNS amplificado.
O resultado 'c' mostra que a utilização de DNSSEC no Brasil ainda é baixa,
porém vale considerar também que a maioria destes servidores parecem não ser
administrados, já que em uma primeira análise muitos nem deveriam encontrar-se
abertos para a Internet. Logo, para tais casos, tendo sido fechadas as portas
desnecessariamente abertas, a implementação do DNSSEC seria um segundo
incremento de segurança.
Além de tais resultados do experimento, verifica-se outra possibilidade de uso
do ambiente apresentado neste artigo. De fato, como continuidade da atividade, foi
proposto um "script" de monitoramento de incidentes de envenenamento de cache. O
objetivo é detectar em tempo real a ocorrência de entrada fraudulenta em cache de
algum servidor recursivo vulnerável.
Para facilitar a detecção, são filtrados os servidores recursivos com a finalidade
de gerar uma lista apenas com os mais vulneráveis. Por exemplo, foi elaborada uma lista
de 20 prováveis alvos deste tipo incidente, dentre eles: bancos, seguradoras, governo, e
demais sites que exigem autenticação para movimentação financeira.
O fluxograma da figura 8 representa o funcionamento da rotina de
monitoramento que faz a resolução de cada nome da lista de alvos em todos os
servidores vulneráveis e compara com uma base obtida anteriormente de maneira
confiável. Sempre que existir uma entrada diferente da base, esta resposta é escrita em
um arquivo de endereços IP suspeitos, para uma posterior verificação manual e
individual. Este Script de monitoramento detecta a ocorrência de envenenamento de
cache, entretanto não corrigem os erros encontrados.
Figura 8. Experimento 2 – Rotina de monitoração de envenenamentos de cache
Para efeito de validação, esta rotina foi executada continuamente durante 28
dias. A primeira entrada suspeita foi escrita após 14 dias de monitoramento. Ao final
deste período, o arquivo de entradas suspeitas continha apenas 2 entradas, referentes ao
mesmo domínio. O IP da resposta encontrada foi pesquisado em algumas listas de
reputação, mas nenhuma informação foi encontrada.
Os resultados deste último experimento mostram que a rotina funciona, porém
não obteve o sucesso esperado. Talvez deva ser melhorada no que se refere à escolha
dos alvos, quantidade de servidores consultados e duração.
3. Conclusão
O DNS é um sistema que tornou mais amigável e gerenciável o acesso aos diversos
serviços da Internet, já que é inviável a memorização de endereços IP. Assim, seu
funcionamento tornou-se vital para a Internet e para todas as redes locais.
Entretanto, o DNS está vulnerável a diversos ataques e incidentes de segurança.
Portanto, é essencial incrementar segurança neste sistema. Existem muitas medidas que
podem ser tomadas para deixar este serviço mais seguro. Além da medida que consiste
em manter o software de DNS sempre atualizado, a adoção de DNSSEC parece ser a
melhor maneira de prover segurança para a resolução de nomes.
Por todos os benefícios de segurança que o DNSSEC fornece, é importante o
estudo de sua implementação, principalmente em um ambiente de alta criticidade, onde
a integridade e autenticidades das informações são requisitos importantes.
Neste trabalho, por meio da primeira atividade experimental, é possível mostrar
a efetividade do DNSSEC na proteção das transações de resolução de nomes.
Evidencia-se também o quão simples é a sua implementação em servidores recursivos, o
que pode encorajar mais administradores a aderirem a esta extensão segura, já que o
sucesso do DNSSEC está diretamente associado à sua disseminação. Neste experimento
indica-se ainda que, apesar da segurança contra alguns ataques, o DNSSEC não pode
contrabalançar ataques distribuídos de negação de serviço, cujo efeito inclusive pode ser
amplificado no DNSSEC, já que este traz consigo uma carga de dados um pouco maior
que o DNS em cada requisição.
O segundo experimento indica que, no cenário brasileiro geral, as estatísticas
não são muito boas em relação ao sistema DNS como todo, não só pelo fato de existir
apenas 13,5 % de uso de DNSSEC nos recursivos, mas pela quantidade de servidores
abertos para a Internet, desnecessariamente e com softwares desatualizados.
Dado este cenário, pode-se sugerir algumas políticas de segurança a nível
nacional para melhorar estes aspectos. A principal delas seria a obrigatoriedade de uso
do DNSSEC para um número maior de domínios, assim como já se estabeleceu para os
domínios de bancos e “.jus”. Como foram detectados servidores de DNS abertos
desnecessariamente, seria importante algum esforço nacional no sentido de filtrar
corretamente a porta 53 na Internet, já que hospedar um serviço de DNS é dispensável
para a grande maioria dos clientes de Internet, que muitas vezes possuem
inconscientemente um servidor disponível.
A administração do DNSSEC em servidores autoritativos pode trazer alguma
complexidade, e isso talvez explique por que é tão pouco utilizado. Já no caso dos
servidores recursivos, não há nenhuma dificuldade em sua implementação e
manutenção. Em um trabalho futuro, poderia ser considerada a configuração de um
servidor DNS em modelos de um "honeypot". Desta maneira, poderia ser alimentada
uma base de endereços IP maliciosos, e poderiam ser estudadas novas vulnerabilidades
que envolvem o DNS.
Referências
BARBOSA, K. R. S.; SOUTO, E; FEITOSA, E.; MARTINS, G. B. (2014).
Identificação e Caracterização de Comportamentos Suspeitos Através da Análise do
Tráfego DNS. XIV Simpósio Brasileiro em Segurança da Informação e de Sistemas
Computacionais – SBSeg 2014.
HOEPERS, C. (2013). Gestão de Incidentes e Resiliência das Infraestruturas Críticas de
Internet. Centro de Estudos, Resposta e Tratamento de Incidentes de Segurança no
Brasil. Núcleo de Informação e Coordenação do Ponto BR. Comitê Gestor da
Internet no Brasil.
ALBITZ, P.; LIU, C. (2006). DNS and BIND. 5th Edition. O’Reilly Media.
IWASA, A. M. DE A.; HILÁRIO, P. S. (2011). Análise de Segurança em DNS e Propostas
do Mecanismo de Defesa do DNSSEC. Trabalho de Graduação em Engenharia de
Redes de Comunicação, Faculdade de Tecnologia, Universidade de Brasília, Brasília,
DF.
KRISHNASWAMY, S., HARDAKER, W., & MUNDY, R. (2009). DNSSEC in
Practice: Using DNSSEC-Tools to Deploy DNSSEC. Conference for Homeland
Security, 2009. CATCH '09. Cybersecurity Applications & Technology.
Download

Ambiente de Monitoração e Estudo das Vulnerabilidades do Serviço