Impedir entradas DNS pendentes e evitar tomada de controle de subdomínio

Este artigo descreve a ameaça comum de segurança da tomada de subdomínio e as medidas que você pode tomar para mitigá-la.

O que é uma tomada de controle de subdomínio?

As aquisições de subdomínios são uma ameaça comum e de alta gravidade para organizações que criam e excluem muitos recursos regularmente. Um subdomínio pode ser tomado quando um registro DNS aponta para um recurso desprovisionado do Azure. Esses registros DNS também são conhecidos como entradas "DNS pendentes". Os registros CNAME são particularmente vulneráveis a essa ameaça. As invasões de subdomínio permitem que os atores mal-intencionados redirecionem o tráfego destinado ao domínio de uma organização a um site que executa atividades mal-intencionadas.

Um cenário comum de uma tomada de controle de subdomínio:

  1. CRIAÇÃO:

    1. Você provisiona um recurso do Azure com um FQDN (nome de domínio totalmente qualificado) de app-contogreat-dev-001.azurewebsites.net.

    2. Você atribui um registro CNAME na zona DNS com o subdomínio greatapp.contoso.com que roteia o tráfego para o recurso do Azure.

  2. DESPROVISIONAMENTO:

    1. O recurso do Azure é desprovisionado ou excluído depois que não é mais necessário.

      Neste ponto, o registro CNAME greatapp.contoso.comdeve ser removido da zona DNS. Se o registro CNAME não for removido, ele será anunciado como um domínio ativo, mas não roteará o tráfego para um recurso ativo do Azure. Agora você tem um registro DNS "pendente".

    2. O subdomínio pendente, greatapp.contoso.com, agora está vulnerável e pode ser controlado ao ser atribuído a outro recurso da assinatura do Azure.

  3. TOMADA DE CONTROLE:

    1. Usando métodos e ferramentas comumente disponíveis, um agente de ameaça descobre o subdomínio abandonado.

    2. O ator de ameaça provisiona um recurso do Azure com o mesmo FQDN do recurso que você controlou anteriormente. Neste exemplo, app-contogreat-dev-001.azurewebsites.net.

    3. O tráfego enviado para o subdomínio greatapp.contoso.com agora é direcionado para o recurso do ator malicioso, onde ele controla o conteúdo.

Tomada de controle de subdomínio de um site desprovisionado

Os riscos da tomada de controle de subdomínio

Quando um registro DNS aponta para um recurso que não está disponível, o próprio registro deve ser removido da sua zona DNS. Se não for excluído, é um registro de “DNS pendente” e cria a possibilidade de controle de subdomínio.

As entradas DNS pendentes possibilitam que atores de ameaça assumam o controle do nome DNS associado para hospedar um site ou serviço mal-intencionado. Páginas e serviços mal-intencionados no subdomínio de uma organização podem resultar em:

  • Perda de controle sobre o conteúdo do subdomínio: Má imprensa sobre a incapacidade da sua organização de proteger seu conteúdo, danos à marca e perda de confiança.

  • Colheita de cookies de visitantes desavisados: É comum que aplicativos web expõem cookies de sessão a subdomínios (*.contoso.com). Qualquer subdomínio pode acessá-los. Agentes ameaçadores podem usar a tomada de subdomínio para construir uma página com aparência autêntica, enganar usuários desavisados para visitá-la e coletar seus cookies (até mesmo cookies seguros). Um equívoco comum é que certificados SSL protegem seu site e os cookies dos seus usuários contra uma tomada de controle. No entanto, um agente malicioso pode usar o subdomínio sequestrado para solicitar e obter um certificado SSL legítimo. Os certificados SSL válidos concedem a eles acesso a cookies seguros e podem aumentar ainda mais a legitimidade percebida do site mal-intencionado.

  • Campanhas de phishing: Agentes maliciosos frequentemente exploram subdomínios com aparência autêntica em campanhas de phishing. O risco se estende tanto a sites maliciosos quanto a registros MX. Os registros MX poderiam permitir que atores ameaçadores recebam e-mails direcionados a subdomínios legítimos associados a marcas confiáveis.

  • Riscos adicionais: sites maliciosos podem escalar para outros ataques clássicos, como XSS, CSRF, CORS BYPASS e outros.

Identificar entradas DNS pendentes

Para identificar as entradas DNS na organização que podem estar pendentes, use as ferramentas do PowerShell hospedado pelo GitHub da Microsoft "Get-DanglingDnsRecords".

Esta ferramenta ajuda você a listar todos os domínios com um CNAME associado a um recurso Azure existente que você criou em suas assinaturas ou locatários.

Se os CNAMEs estiverem em outros serviços DNS e apontarem para recursos do Azure, forneça os CNAMEs em um arquivo de entrada para a ferramenta.

A ferramenta dá suporte aos recursos do Azure listados na tabela a seguir. A ferramenta extrai ou usa como entradas todos os CNAMEs do locatário.

Serviço Tipo Propriedade FQDN Exemplo
Azure Front Door microsoft.network/frontdoors properties.cName abc.azurefd.net
Armazenamento de Blobs do Azure microsoft.storage/storageaccounts properties.primaryEndpoints.blob abc.blob.core.windows.net
CDN do Azure microsoft.cdn/profiles/endpoints properties.hostName abc.azureedge.net
Endereços IP públicos microsoft.network/publicipaddresses properties.dnsSettings.fqdn abc.EastUs.cloudapp.azure.com
Gerenciador de Tráfego do Azure microsoft.network/trafficmanagerprofiles properties.dnsConfig.fqdn abc.trafficmanager.net
Instância de Contêiner do Azure microsoft.containerinstance/containergroups properties.ipAddress.fqdn abc.EastUs.azurecontainer.io
Gerenciamento de API do Azure microsoft.apimanagement/service properties.hostnameConfigurations.hostName abc.azure-api.net
Serviço de Aplicativo do Azure microsoft.web/sites properties.defaultHostName abc.azurewebsites.net
Serviço de Aplicativo do Azure – Slots microsoft.web/sites/slots properties.defaultHostName abc-def.azurewebsites.net

Pré-requisitos

Execute a consulta como um usuário com:

  • No mínimo, o acesso de função Reader às assinaturas do Azure.
  • Acesso de leitura ao Azure Resource Graph.

Se você é um Administrador Global do inquilino da sua organização, siga as orientações no Elevate Access para gerenciar todas as assinaturas e grupos de gestão do Azure e assim obter acesso a todas as assinaturas da sua organização.

Dica

Considere os limites de paginação e a limitação do Azure Resource Graph se você tiver um ambiente grande do Azure.

Saiba mais sobre como trabalhar com grandes conjuntos de dados do recurso do Azure.

A ferramenta usa a agregação de assinaturas para evitar essas limitações.

Executar o script

Para mais informações sobre o script PowerShell, vejaGet-DanglingDnsRecords.ps1.

Corrigir entradas DNS pendentes

Revise suas zonas DNS e identifique registros CNAME que estão pendentes ou foram assumidos. Se você encontrar subdomínios pendentes ou assumidos, remova os subdomínios vulneráveis e mitigue os riscos usando os seguintes passos:

  1. Na zona DNS, remova todos os registros CNAME que apontam para FQDNs de recursos que não são mais provisionados.

  2. Para rotear o tráfego para recursos q você controla, provisione mais recursos com os FQDNs especificados nos registros CNAME dos subdomínios finais.

  3. Examine o código do aplicativo para obter referências de subdomínios específicos e atualize todas as referências de subdomínio incorretas ou desatualizadas.

  4. Investigue se houve algum comprometimento e tome providências de acordo com os procedimentos de resposta a incidentes da sua organização. Para dicas e melhores práticas para investigar:

    Se a lógica da sua aplicação resultar em segredos, como credenciais OAuth, sendo enviados para subdomínios pendentes ou se informações sensíveis à privacidade forem transmitidas para esses subdomínios, esses dados podem ser expostos a terceiros.

  5. Entenda por que o registro CNAME não foi removido da sua zona DNS quando você desprovisionou o recurso e tome medidas para garantir que os registros DNS sejam atualizados adequadamente quando os recursos do Azure forem desprovisionados no futuro.

Impedir entradas DNS pendentes

Torne processos que impedem entradas de DNS pendentes e as consequentes tomadas de subdomínio uma parte crucial do seu programa de segurança.

As seções a seguir descrevem recursos de serviço do Azure que podem ajudar a criar medidas preventivas. Estabeleça outros métodos para prevenir esse problema por meio das melhores práticas ou procedimentos operacionais padrão da sua organização.

Habilitar o Microsoft Defender para Serviço de Aplicativo

A CWPP (plataforma de proteção de cargas de trabalho na nuvem) integrada do Microsoft Defender para Nuvem oferece uma variedade de planos para proteger recursos e cargas de trabalho do Azure, híbridos e de várias nuvens.

O plano do Microsoft Defender para Serviço de Aplicativo inclui a detecção de DNS pendente. Quando habilitar esse plano, você receberá alertas de segurança se desativar um site do Serviço de Aplicativo, mas não remover o domínio personalizado do registrador de DNS.

A proteção de DNS pendente do Microsoft Defender para Nuvem estará disponível para o gerenciamento de domínios com o DNS do Azure ou também para um registrador de domínios externo. Além disso, ela se aplica ao Serviço de Aplicativo no Windows e no Linux.

Para mais informações sobre esse recurso e outros benefícios desses planos Microsoft Defender, veja Introdução ao Microsoft Defender para Serviços de Aplicativos.

Usar registros de alias do DNS do Azure

Registros de alias do DNS do Azure podem evitar referências pendentes ao acoplar o ciclo de vida de um registro DNS com um recurso Azure. Por exemplo, considere um registro DNS qualificado como um registro de alias para apontar para um endereço IP público ou um perfil do Gerenciador de Tráfego. Se você excluir esses recursos subjacentes, o registro de alias de DNS se tornará um conjunto de registros vazio. O registro de alias DNS não faz mais referência ao recurso excluído. Registros de alias têm limites quanto ao que podem proteger. A lista atualmente se limita a:

  • Azure Front Door
  • Perfis do Gerenciador de Tráfego
  • Pontos de extremidade da CDN (Rede de Distribuição de Conteúdo) do Azure
  • IPs Públicos

Apesar das ofertas de serviço limitadas atuais, use os registros de alias para se defender contra a tomada de controle de subdomínio sempre que possível.

Para mais informações, veja as capacidades dos registros de alias do DNS do Azure.

Usar a verificação de domínio personalizado do Serviço de Aplicativo do Azure

Ao criar entradas DNS para o Serviço de Aplicativo do Azure, crie um asuid.{subdomain} registro TXT com o ID de verificação do domínio. Quando tal registro TXT existe, nenhuma outra assinatura do Azure pode validar o domínio personalizado ou assumi-lo.

Esses registros não impedem alguém de criar uma instância do Serviço de Aplicativo do Azure com o mesmo nome que está na sua entrada CNAME. Sem a capacidade de provar a propriedade do nome de domínio, os mal-intencionados não conseguem receber tráfego ou controlar o conteúdo.

Para mais informações, veja Mapear um nome DNS personalizado existente para o Serviço de Aplicativo do Azure.

Criar e automatizar processos para reduzir a ameaça

Desenvolvedores e equipes de operações devem executar processos de limpeza para evitar ameaças de DNS pendentes. As práticas a seguir ajudam sua organização a evitar essa ameaça.

  • Criar procedimentos para prevenção:

    • Instrua os desenvolvedores de aplicativos a redirecionar endereços sempre que os recursos forem excluídos.

    • Coloque "Remover entrada DNS" na lista de verificações obrigatórias ao descomissionar um serviço.

      • Adicione bloqueios de exclusão em qualquer recurso que tenha uma entrada DNS personalizada. Um bloqueio de exclusão serve como um indicador de que o mapeamento deve ser removido antes que o recurso seja desprovisionado. Medidas como essa só funcionam quando combinadas com programas internos de educação.
  • Criar procedimentos para descoberta:

    • Examine os registros DNS regularmente para garantir que todos os subdomínios estão mapeados para os recursos do Azure que:

      • Existem: Consulte suas zonas DNS em busca de recursos que apontem para subdomínios do Azure, como *.azurewebsites.net ou *.cloudapp.azure.com (veja a lista de referência de domínios do Azure).
      • Você possui: Confirme que você possui todos os recursos para os quais seus subdomínios DNS apontam.
    • Mantenha um catálogo de serviços dos pontos de extremidade de FQDN (nome de domínio totalmente qualificado) do Azure e os proprietários do aplicativo. Use o Azure Resource Graph, o portal Azure ou outro processo de inventário de ativos para exportar regularmente as informações do endpoint FQDN para recursos acessados. Se você tiver acesso a todas as assinaturas do seu inquilino, inclua todas as assinaturas no inventário. Se não tiver, documente quais assinaturas o estoque cobre.

  • Criar procedimentos para correção:

    • Quando a equipe encontrar entradas DNS finais, investigue se houve algum comprometimento.
    • Investigue por que o endereço não foi redirecionado quando o recurso foi encerrado.
    • Exclua o registro DNS se ele não estiver mais em uso ou aponte-o para o recurso correto do Azure (FQDN) de propriedade da organização.

Limpe os ponteiros de DNS ou recupere o DNS

Quando você exclui um recurso clássico de serviço em nuvem, o Azure reserva o nome DNS correspondente de acordo com as políticas do DNS do Azure. Durante o período de reserva, apenas as assinaturas que pertencem ao locatário do Microsoft Entra da assinatura que originalmente tinha o nome DNS podem reutilizá-lo. Após o término da reserva, qualquer assinatura do Azure pode reivindicar o nome DNS. As reservas de DNS permitem que você tenha tempo para limpar as associações ou os ponteiros para o nome DNS, ou para reivindicar novamente o nome DNS no Azure. Exclua entradas DNS indesejadas o mais rápido possível. Você pode derivar o nome DNS reservado adicionando o nome do serviço de nuvem à zona DNS dessa nuvem.

  • Público: cloudapp.net
  • Bolo da Lua: chinacloudapp.cn
  • Fairfax: usgovcloudapp.net
  • Floresta Negra: azurecloudapp.de

Por exemplo, um serviço hospedado em Public nomeado test tem o nome test.cloudapp.netDNS .

Exemplo: as assinaturas A e B são as únicas assinaturas que pertencem ao locatário do Microsoft Entra AB. A assinatura A contém um serviço de nuvem clássico chamado test com o nome DNS test.cloudapp.net. Quando você exclui o serviço em nuvem, o Azure reserva o nome test.cloudapp.netDNS . Durante o período de reserva, apenas assinaturas A ou assinaturas B podem reivindicar o nome test.cloudapp.net DNS criando um serviço clássico em nuvem chamado test. Nenhuma outra assinatura pode reivindicá-lo. Após o período de reserva, qualquer assinatura do Azure pode reivindicar test.cloudapp.net.

Próximas etapas

Para saber mais sobre os serviços relacionados e os recursos do Azure que você pode usar para se defender da tomada de controle do subdomínio, consulte as páginas a seguir.