2023-08-03 19:12:22 +00:00
# 5353/UDP 多播 DNS (mDNS) 和 DNS-SD
2022-04-28 16:01:33 +00:00
< details >
2023-08-03 19:12:22 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks 云 ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- 你在一家 **网络安全公司** 工作吗?你想在 HackTricks 中看到你的 **公司广告** 吗?或者你想获得 **PEASS 的最新版本或下载 HackTricks 的 PDF 版本** 吗?请查看 [**订阅计划** ](https://github.com/sponsors/carlospolop )!
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- 发现我们的独家 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 集合 [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- 获取 [**官方 PEASS & HackTricks 商品** ](https://peass.creator-spring.com )
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- **加入** [**💬** ](https://emojipedia.org/speech-balloon/ ) [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**Telegram 群组** ](https://t.me/peass ) 或 **关注** 我的 **Twitter** [**🐦** ](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md )[**@carlospolopm** ](https://twitter.com/hacktricks_live )**.**
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- **通过向 [hacktricks 仓库 ](https://github.com/carlospolop/hacktricks ) 和 [hacktricks-cloud 仓库 ](https://github.com/carlospolop/hacktricks-cloud ) 提交 PR 来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
< / details >
2023-08-03 19:12:22 +00:00
## 基本信息
2020-07-15 15:43:14 +00:00
2023-08-03 19:12:22 +00:00
多播 DNS (mDNS) 是一种**零配置协议**,允许你在没有传统单播 DNS 服务器的情况下,在本地网络上执行类似 DNS 的操作。该协议使用与 DNS 相同的 API、数据包格式和操作语义, 允许你解析本地网络上的域名。**DNS 服务发现 (DNS-SD)** 是一种协议,允许客户端使用标准 DNS 查询在域中**发现命名的服务实例列表**(例如 test.\_ipps.\_tcp.local 或 linux.\_ssh.\_tcp.local) 。DNS-SD 最常与 mDNS 结合使用, 但并不依赖于它。它们都被许多物联网设备使用, 例如网络打印机、Apple TV、Google Chromecast、网络附加存储 (NAS) 设备和摄像头。\
**默认端口:**5353/UDP
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
PORT STATE SERVICE
5353/udp open zeroconf
```
2023-08-03 19:12:22 +00:00
### mDNS的工作原理
2020-07-15 15:43:14 +00:00
2023-08-03 19:12:22 +00:00
当本地网络缺乏传统的单播DNS服务器时, 设备使用mDNS。为了使用mDNS解析本地地址的域名, 设备向多播地址224.0.0.251( IPv4) 或FF02::FB( IPv6) 发送以.local结尾的域名的DNS查询。您也可以使用mDNS解析全局域名( 非.local域名) , 但是mDNS实现应默认禁用此行为。mDNS请求和响应使用UDP和端口5353作为源和目标端口。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
mDNS的回复包含几个重要的标志, 包括一个表示记录有效时间的生存时间( TTL) 值。发送TTL=0的回复意味着相应的记录应该被清除。另一个重要的标志是QU位, 它表示查询是否是单播查询。如果QU位未设置, 则数据包是多播查询( QM) 。因为可能在本地链路之外接收到单播查询, 安全的mDNS实现应始终检查数据包中的源地址是否与本地子网地址范围匹配。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
### DNS-SD的工作原理
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
DNS-SD允许客户端在网络上发现可用的服务。要使用它, 客户端发送标准的DNS查询以获取指针记录( PTR) , 该记录将服务类型映射到特定实例的名称列表。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
为了请求PTR记录, 客户端使用名称形式“\<Service>.\<Domain>”。**\<Service>**部分是服务名称前面加上“\_”( 例如, \_ipps, \_printer或\_ipp) , 然后是**\_tcp或\_udp**。**\<Domain>**部分是“.local”。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
然后,**响应者**返回指向相应**服务( SRV) **和**文本( TXT) 记录**的PTR记录。以下是PTR记录的示例:
2022-02-19 19:42:58 +00:00
```
2023-08-03 19:12:22 +00:00
_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local
2022-02-19 19:42:58 +00:00
```
2023-08-03 19:12:22 +00:00
PTR记录中冒号左侧的部分是其名称, 右侧的部分是PTR记录指向的SRV记录。SRV记录列出了服务实例可以访问的目标主机和端口。例如, 下图显示了Wireshark中主机ubuntu.local和端口8000上的“test._ipps._tcp.local” SRV记录:
2022-02-19 19:42:58 +00:00
2022-04-28 14:00:21 +00:00
![](< .. / . gitbook / assets / image ( 651 ) ( 1 ) ( 1 ) ( 1 ) ( 1 ) . png > )
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
因此, SRV记录的名称类似于PTR记录前面的\<Instance>名称( 在本例中为test) 。TXT记录与SRV记录具有相同的名称, 并包含在IP地址和端口号( 包含在SRV记录中) 无法足以标识服务时所需的信息。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
## 枚举
2020-07-15 15:43:14 +00:00
2022-05-01 13:25:53 +00:00
### nmap
2021-07-27 12:31:20 +00:00
```bash
2020-07-15 15:43:14 +00:00
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
```
2023-08-03 19:12:22 +00:00
### 网络枚举
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
通过发送mDNS请求并捕获多播mDNS流量, 您可以了解有关本地网络的许多信息。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
您可以使用工具[**Pholus**](https://github.com/aatlasis/Pholus/)在本地网络上发送mDNS请求( -rq) 并捕获多播mDNS流量( 持续 -stimeout 10秒) :
2022-02-19 19:42:58 +00:00
```bash
sudo python3 pholus3.py eth0 -rq -stimeout 10
```
2023-08-03 19:12:22 +00:00
## 攻击
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
### 滥用mDNS探测阶段
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
当mDNS响应器启动或更改其连接时, 它会询问本地网络是否有**任何资源使用他计划使用的名称**。如果答案中包含所询问的记录,则探测主机**应选择一个新名称**。如果在10秒内发生15次冲突, 则主机必须在进行任何其他尝试之前等待至少五秒。此外, 如果主机在一分钟内找不到未使用的名称, 则向用户报告错误。
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
以下命令行将阻止任何新设备获得任何新名称,因为它将指示**任何名称已被占用**:
2022-02-19 19:42:58 +00:00
```bash
sudo python pholus.py eth0 -afre -stimeout 1000
```
2023-08-03 19:12:22 +00:00
### 伪造/中间人攻击
2022-02-19 19:42:58 +00:00
2023-08-03 19:12:22 +00:00
您可以在此服务上执行的最有趣的攻击是在**客户端和真实服务器之间的通信中执行中间人攻击**。您可能能够获取敏感文件( 中间人攻击与打印机的通信) 甚至凭据( Windows身份验证) 。
有关更多信息,请查看:
2022-02-19 19:42:58 +00:00
2022-05-01 13:25:53 +00:00
{% 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 ](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md )
2022-02-19 19:42:58 +00:00
{% endcontent-ref %}
2023-08-03 19:12:22 +00:00
## 参考资料
2022-02-19 19:42:58 +00:00
* [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 )
2022-04-28 16:01:33 +00:00
< details >
2023-04-25 18:35:28 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks Cloud ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- 您在**网络安全公司**工作吗? 您想在HackTricks中看到您的**公司广告**吗?或者您想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- 发现我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组** ](https://discord.gg/hRep4RUj7f )或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
2022-04-28 16:01:33 +00:00
2023-08-03 19:12:22 +00:00
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
2022-04-28 16:01:33 +00:00
< / details >