Visão geral

No final do terceiro trimestre de 2015, a Akamai SIRT começou a observar o uso limitado de ataques DDoS alimentados por dispositivos compatíveis com o Sistema de Nomes de Domínio Multicast (mDNS). O potencial do mDNS para se tornar um vetor para uso em ataques DDoS de reflexão e amplificação também foi divulgado em março de 2015.

Essa advertência detalha o conceito e as técnicas do vetor de ataque de reflexão mDNS, além de como atenuá-lo. Esse vetor de ataque é possível através da disponibilidade de dispositivos de origem que expõem o mDNS, que é esperado na porta 5353, pela Internet.

Em outubro de 2016, a Akamai detectou e atenuou com sucesso sete ataques DDoS mDNS contra alvos nos segmentos verticais do setor de jogos e software e tecnologia. Até agora, a longevidade desse ataque pode estar em questão, com base nas características observadas em ataques reais.

Cronograma de ataque

O vetor de ataque mDNS tem visto uso esporádico desde a primeira observação em setembro de 2015. Conforme indicado no cronograma abaixo, havia aproximadamente cinco meses de intervalo entre o ataque inicial e o seguinte; isso foi possivelmente o resultado do teste inicial de scripts de ataque. Não foi até o final de março, início de abril de 2016 que o vetor de ataque começou a ter um uso mais consistente. No entanto, os ataques que usam mDNS como um único vetor não foram tão poderosos quanto outros vetores de reflexão até o momento.

mDNS attack timeline

Atributos do ataque destacados

Na seção a seguir, destacamos um ataque ocorrido em 2016. Dos sete ataques atenuados até agora, nenhum foi contra o mesmo alvo.

  • Pico de largura de banda: 2,9 Gigabits por segundo (Gbps)
  • Pico de pacotes por segundo: 465,2 centenas de pacotes por segundo
  • Vetor de ataque: mDNS
  • Porta de origem: 5353 (mDNS)
  • Porta de destino: Aleatória

mdns Highlighted Attack Attributes

O último evento de ataque mDNS observado ocorreu em 27 de outubro de 2016. Esse foi um ataque DDoS multivetorial que consiste em uma inundação SYN, inundação UDP, fragmento UDP, inundação DNS e inundação mDNS com picos de 41 Gbps.

  • Início da Hora do evento: 27 de outubro de 2016, 06:01:00 UTC
  • Pico de largura de banda: 41 Gbps
  • Pico de pacotes por segundo: 6 milhões de pacotes por segundo
  • Vetor de ataque: Inundações SYN; inundações UDP; fragmentos UDP; inundações DNS; inundações mDNS
  • Porta de origem: Aleatória
  • Porta de destino: Aleatória

mdns flood
mdns SVN flood

Visão geral de ataque e mDNS

O Multicast DNS(mDNS) é um protocolo padrão proposto lançado em 2013 como RFC6762. Ele facilita a descoberta de dispositivos e serviços, idealmente em redes pequenas, sem a necessidade de qualquer interação mínima do usuário. Por isso, o mDNS também pode ser um componente adequado para o Zeroconf (Zero Configuration Networking). O mDNS compartilha grande parte da mesma estrutura que os pacotes DNS comuns, um motivo provável para sua rápida adoção como um vetor de ataque DDoS.

É claro que, com a simplicidade de um protocolo projetado para permitir que um dispositivo seja conectado e esteja pronto para uso, há algum risco. Uma vulnerabilidade (VU#550620) no mDNS foi encontrada por Chad Seaman em que o mDNS permitiria respostas a consultas originadas de fora da rede local. Essas respostas permitiriam a divulgação de informações sobre o dispositivo afetado, como o software e serviços, além de outras informações potencialmente confidenciais, como nome de host, definições de configuração de rede interna, número do modelo, etc. Esse feedback pode permitir que um agente mal-intencionado use qualquer host mDNS que responda a consultas unicast através de sua interface conectada à Internet para participar de ataques DDoS (Distributed Denial of Service) de reflexão e amplificação. Mais informações sobre a vulnerabilidade podem ser encontradas aqui.

Usando um conceito semelhante, o script de ataque mDNS criado por agentes mal-intencionados envia uma consulta unicast especializada para solicitar uma resposta de dispositivos mDNS. Definido na RFC6763, a consulta de enumeração de serviço é útil para retornar todos os tipos de serviço anunciados em uma rede. O script do ataque gerará uma consulta de carga de 46 bytes, conforme mostrado na figura a seguir, enviando uma consulta de DNS para "_services._dns-sd._udp.local" para o host vulnerável; isso significa retornar todos os serviços conhecidos para os dispositivos solicitantes. Esses serviços anunciados também podem ser consultados individualmente com diferentes tamanhos de resposta, oferecendo mais oportunidades para invasores. No entanto, essa tática exigiria uma ferramenta de ataque mais sofisticada para aproveitar facilmente essas cargas adicionais de resposta em um ataque DDoS.

mdns attack

As cargas úteis de resposta do mDNS observadas em ataques DDoS até agora foram limitadas em tamanho. O maior continha 428 bytes de dados, 12 bytes a menos do que um único pacote de resposta de dados monlist NTP. No entanto, o tamanho de resposta típico do mDNS observado está em torno da faixa de 100 a 200 bytes. Isso significa que o vetor está, com mais frequência, atingindo cerca de 4,35x de amplificação, ao considerar apenas a carga da solicitação de 46 bytes e a resposta de carga útil de 200 bytes.

Amostra de uso e assinaturas de scripts de ataques

O script de ataque criado para mDNS é uma versão modificada dos muitos scripts disponíveis agora para ataques de reflexão e amplificação de UDP. Seu uso é semelhante aos outros scripts: basta fornecer um IP de destino, uma porta de destino, uma lista de dispositivos mDNS na Internet, conexões, uma taxa de aceleração de pacotes e, finalmente, um tempo de execução de ataques. Em seguida, o script representará o IP de destino ao enviar as consultas mal-intencionadas de 46 bytes observadas na próxima figura por meio de tcpdump.

mdns sample script usage
mdns sample script usage

Em nosso teste de laboratório, as consultas foram enviadas para uma configuração de servidor Linux com um ouvinte de mDNS. A resposta básica pode ser visualizada na figura seguinte.

mdns basic response

Em 4 de novembro de 2016, a Shadowserver Foundation concluiu uma verificação de mDNS (5353/UDP) em que 526.245 IPs únicos responderam à consulta mDNS. O gráfico a seguir representa os 20 principais países e ASNs com mDNS acessível de acordo com a última verificação.

mDNS Source Distribution Countries
mDNS Source Distribution ASNs

Mitigação

Esse é um daqueles protocolos projetados para uso em uma rede local. Como tal, não deve haver razão para a exposição de dispositivos mDNS pela Internet. Se necessário, uma boa prática seria filtrar as consultas recebidas e permitir apenas fontes conhecidas. Um IDS, como o Snort, pode ainda ser usado para detectar essas consultas e diminuir ainda mais o uso de seus dispositivos em ataques DDoS. Uma regra de detecção de snort de amostra está abaixo.

mdns mitigation

Conclusão

O vetor de ataque mDNS tem tido um uso limitado até o momento. Assim como o SSDP, esse vetor provavelmente seria alimentado por dispositivos em uma rede doméstica. Os primeiros ataques foram limitados, mas a verificação da porta mDNS 5353 é observada diariamente em nossa plataforma de atenuação. Uma vez que mais dispositivos são enumerados, existe a possibilidade de ataques maiores. Além disso, como o SSDP, com base na exposição desnecessária desse protocolo, espera-se que o mDNS não prospere como um vetor de ataque DDoS, pois os ISPs introduzem a filtragem dessa porta aos usuários domésticos. Infelizmente, mesmo após anos de uso, o SSDP continua sendo utilizado diariamente e ainda é capaz de ataques DDoS substanciais. Isso significa que os ataques mDNS podem se tornar mais poderosos antes que qualquer filtragem proativa significativa seja aplicada.

Referências