8.5 KiB
5353/UDP Multicast DNS (mDNS) e DNS-SD
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud no github.
Informações Básicas
Multicast DNS (mDNS) é um protocolo de configuração zero que permite realizar operações semelhantes ao DNS na rede local na ausência de um servidor DNS unicast convencional. O protocolo utiliza a mesma API, formatos de pacotes e semânticas de operação que o DNS, permitindo resolver nomes de domínio na rede local. DNS Service Discovery (DNS-SD) é um protocolo que permite aos clientes descobrir uma lista de instâncias nomeadas de serviços (como test._ipps._tcp.local ou linux._ssh._tcp.local) em um domínio usando consultas DNS padrão. DNS-SD é mais frequentemente usado em conjunto com mDNS, mas não depende dele. Ambos são usados por muitos dispositivos IoT, como impressoras de rede, Apple TVs, Google Chromecast, dispositivos de armazenamento conectados à rede (NAS) e câmeras.
Porta padrão: 5353/UDP
PORT STATE SERVICE
5353/udp open zeroconf
Como o mDNS Funciona
Dispositivos usam mDNS quando a rede local carece de um servidor DNS unicast convencional. Para resolver um nome de domínio para um endereço local usando mDNS, o dispositivo envia uma consulta DNS para um nome de domínio terminado em .local para o endereço multicast 224.0.0.251 (para IPv4) ou FF02::FB (para IPv6). Você também pode usar mDNS para resolver nomes de domínio globais (não terminados em .local), mas as implementações de mDNS devem desativar esse comportamento por padrão. Solicitações e respostas mDNS usam UDP e porta 5353 como porta de origem e destino.
As respostas mDNS contêm várias flags importantes, incluindo um valor de Time-to-Live (TTL) que indica quantos segundos o registro é válido. Enviar uma resposta com TTL=0 significa que o registro correspondente deve ser apagado. Outra flag importante é o bit QU, que indica se a consulta é uma consulta unicast ou não. Se o bit QU não estiver definido, o pacote é uma consulta multicast (QM). Como é possível receber consultas unicast fora do link local, implementações seguras de mDNS devem sempre verificar se o endereço de origem no pacote corresponde à faixa de endereço da sub-rede local.
Como o DNS-SD Funciona
DNS-SD permite que clientes descubram serviços disponíveis na rede. Para usá-lo, clientes enviam consultas DNS padrão para registros de ponteiros (PTR), que mapeiam o tipo de serviço para uma lista de nomes de instâncias específicas desse tipo de serviço.
Para solicitar um registro PTR, clientes usam o formato de nome "<Serviço>.<Domínio>". A parte <Serviço> é o nome do serviço precedido por "_" (por exemplo, _ipps, _printer ou _ipp) e _tcp ou _udp. A parte <Domínio> é ".local".
Respondentes então retornam os registros PTR que apontam para os acompanhantes registros de serviço (SRV) e texto (TXT). Aqui está um exemplo de um registro PTR:
_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local
A parte do registro PTR à esquerda do dois pontos é o seu nome, e a parte à direita é o registro SRV ao qual o registro PTR aponta. O registro SRV lista o host alvo e a porta onde a instância do serviço pode ser alcançada. Por exemplo, a próxima imagem mostra um registro SRV "test._ipps._tcp.local" no Wireshark no host ubuntu.local e porta 8000:
Portanto, o nome do registro SRV é semelhante ao registro PTR precedido pelo nome da <Instância> (test neste caso). O registro TXT tem o mesmo nome que o registro SRV e contém as informações necessárias quando o endereço IP e o número da porta (contidos no registro SRV) para um serviço não são suficientes para identificá-lo.
Enumeração
nmap
nmap -Pn -sUC -p5353 192.168.1.2
Starting Nmap 6.46 (http://nmap.org) at 2015-01-01 10:30 GMT
Nmap scan report for 192.168.1.2
PORT STATE SERVICE
5353/udp open zeroconf
| dns-service-discovery:
| 9/tcp workstation
| Address=192.168.1.2
| 22/tcp ssh
| Address=192.168.1.2
| 22/tcp sftp-ssh
| Address=192.168.1.2
| 445/tcp smb
| Address=192.168.1.2
Enumeração de Rede
Você pode aprender muito sobre a rede local simplesmente enviando solicitações mDNS e capturando o tráfego mDNS multicast.
Você pode usar a ferramenta Pholus para enviar solicitações mDNS (-rq) na rede local e capturar o tráfego mDNS multicast (por -stimeout 10 segundos):
sudo python3 pholus3.py eth0 -rq -stimeout 10
Ataques
Abusando da Fase de Sondagem mDNS
Quando um respondedor mDNS inicia ou altera sua conectividade, ele pergunta à rede local se há algum recurso com o nome que planeja usar. Se a resposta contiver o registro em questão, o host de sondagem deve escolher um novo nome. Se 15 conflitos ocorrerem em 10 segundos, o host deve então esperar pelo menos cinco segundos antes de qualquer tentativa adicional. Além disso, se passar um minuto durante o qual o host não conseguir encontrar um nome não utilizado, ele relata um erro ao usuário.
O seguinte comando impedirá que qualquer novo dispositivo obtenha qualquer novo nome, pois indicará que qualquer nome já está em uso:
sudo python pholus.py eth0 -afre -stimeout 1000
Spoofing/MitM
O ataque mais interessante que você pode realizar sobre este serviço é realizar um MitM na comunicação entre o cliente e o servidor real. Você pode ser capaz de obter arquivos sensíveis (MitM na comunicação com a impressora) ou até mesmo credenciais (autenticação do Windows).
Para mais informações, confira:
{% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}
Referências
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quer ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF, confira os PLANOS DE ASSINATURA!
- Adquira o material oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção de NFTs exclusivos
- Junte-se ao grupo 💬 Discord ou ao grupo telegram ou siga-me no Twitter 🐦 @carlospolopm.
- Compartilhe suas dicas de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud no github.