# 5353/UDP 多播 DNS (mDNS) 和 DNS-SD {{#include ../banners/hacktricks-training.md}} ## **基本信息** **多播 DNS (mDNS)** 使得 **类似 DNS 的操作** 在本地网络中得以实现,而无需传统的 DNS 服务器。它在 **UDP 端口 5353** 上运行,允许设备相互发现及其服务,通常见于各种 IoT 设备。**DNS 服务发现 (DNS-SD)** 通常与 mDNS 一起使用,帮助识别网络上可用的服务,通过标准的 DNS 查询进行。 ``` PORT STATE SERVICE 5353/udp open zeroconf ``` ### **mDNS的操作** 在没有标准DNS服务器的环境中,mDNS允许设备通过查询多播地址**224.0.0.251**(IPv4)或**FF02::FB**(IPv6)来解析以**.local**结尾的域名。mDNS的重要方面包括指示记录有效性的**生存时间(TTL)**值和区分单播和多播查询的**QU位**。在安全方面,mDNS实现必须验证数据包的源地址是否与本地子网一致。 ### **DNS-SD的功能** DNS-SD通过查询指针记录(PTR)来促进网络服务的发现,这些记录将服务类型映射到其实例。服务使用**\_\.\_tcp或\_\.\_udp**模式在**.local**域中进行标识,从而发现相应的**SRV**和**TXT记录**,提供详细的服务信息。 ### **网络探索** #### **nmap使用** 扫描本地网络以查找mDNS服务的有用命令是: ```bash nmap -Pn -sUC -p5353 [target IP address] ``` 此命令有助于识别开放的 mDNS 端口及其上广告的服务。 #### **使用 Pholus 进行网络枚举** 要主动发送 mDNS 请求并捕获流量,可以按如下方式使用 **Pholus** 工具: ```bash sudo python3 pholus3.py [network interface] -rq -stimeout 10 ``` ## 攻击 ### **利用 mDNS 探测** 一种攻击方式是向 mDNS 探测发送伪造的响应,暗示所有潜在名称已经被使用,从而阻碍新设备选择唯一名称。这可以通过以下方式执行: ```bash sudo python pholus.py [network interface] -afre -stimeout 1000 ``` 这种技术有效地阻止新设备在网络上注册其服务。 **总结**,理解 mDNS 和 DNS-SD 的工作原理对于网络管理和安全至关重要。像 **nmap** 和 **Pholus** 这样的工具提供了对本地网络服务的宝贵洞察,而对潜在漏洞的意识有助于防范攻击。 ### 伪造/中间人攻击 您可以在此服务上执行的最有趣的攻击是执行 **MitM** 在 **客户端与真实服务器之间的通信**。您可能能够获取敏感文件(与打印机的通信进行 MitM)甚至凭据(Windows 身份验证)。\ 有关更多信息,请查看: {{#ref}} ../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}} ## 参考文献 - [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical_IoT_Hacking.html?id=GbYEEAAAQBAJ&redir_esc=y) {{#include ../banners/hacktricks-training.md}}