hacktricks/network-services-pentesting/5353-udp-multicast-dns-mdns.md
2023-08-03 19:12:22 +00:00

114 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 5353/UDP 多播 DNS (mDNS) 和 DNS-SD
<details>
<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>
- 你在一家 **网络安全公司** 工作吗?你想在 HackTricks 中看到你的 **公司广告** 吗?或者你想获得 **PEASS 的最新版本或下载 HackTricks 的 PDF 版本** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- **加入** [**💬**](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)**.**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧。**
</details>
## 基本信息
多播 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
```
PORT STATE SERVICE
5353/udp open zeroconf
```
### mDNS的工作原理
当本地网络缺乏传统的单播DNS服务器时设备使用mDNS。为了使用mDNS解析本地地址的域名设备向多播地址224.0.0.251IPv4或FF02::FBIPv6发送以.local结尾的域名的DNS查询。您也可以使用mDNS解析全局域名非.local域名但是mDNS实现应默认禁用此行为。mDNS请求和响应使用UDP和端口5353作为源和目标端口。
mDNS的回复包含几个重要的标志包括一个表示记录有效时间的生存时间TTL值。发送TTL=0的回复意味着相应的记录应该被清除。另一个重要的标志是QU位它表示查询是否是单播查询。如果QU位未设置则数据包是多播查询QM。因为可能在本地链路之外接收到单播查询安全的mDNS实现应始终检查数据包中的源地址是否与本地子网地址范围匹配。
### DNS-SD的工作原理
DNS-SD允许客户端在网络上发现可用的服务。要使用它客户端发送标准的DNS查询以获取指针记录PTR该记录将服务类型映射到特定实例的名称列表。
为了请求PTR记录客户端使用名称形式“\<Service>.\<Domain>”。**\<Service>**部分是服务名称前面加上“\_”例如\_ipps\_printer或\_ipp然后是**\_tcp或\_udp**。**\<Domain>**部分是“.local”。
然后,**响应者**返回指向相应**服务SRV**和**文本TXT记录**的PTR记录。以下是PTR记录的示例
```
_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local
```
PTR记录中冒号左侧的部分是其名称右侧的部分是PTR记录指向的SRV记录。SRV记录列出了服务实例可以访问的目标主机和端口。例如下图显示了Wireshark中主机ubuntu.local和端口8000上的“test._ipps._tcp.local” SRV记录
![](<../.gitbook/assets/image (651) (1) (1) (1) (1).png>)
因此SRV记录的名称类似于PTR记录前面的\<Instance>名称在本例中为test。TXT记录与SRV记录具有相同的名称并包含在IP地址和端口号包含在SRV记录中无法足以标识服务时所需的信息。
## 枚举
### nmap
```bash
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
```
### 网络枚举
通过发送mDNS请求并捕获多播mDNS流量您可以了解有关本地网络的许多信息。
您可以使用工具[**Pholus**](https://github.com/aatlasis/Pholus/)在本地网络上发送mDNS请求-rq并捕获多播mDNS流量持续 -stimeout 10秒
```bash
sudo python3 pholus3.py eth0 -rq -stimeout 10
```
## 攻击
### 滥用mDNS探测阶段
当mDNS响应器启动或更改其连接时它会询问本地网络是否有**任何资源使用他计划使用的名称**。如果答案中包含所询问的记录,则探测主机**应选择一个新名称**。如果在10秒内发生15次冲突则主机必须在进行任何其他尝试之前等待至少五秒。此外如果主机在一分钟内找不到未使用的名称则向用户报告错误。
以下命令行将阻止任何新设备获得任何新名称,因为它将指示**任何名称已被占用**
```bash
sudo python pholus.py eth0 -afre -stimeout 1000
```
### 伪造/中间人攻击
您可以在此服务上执行的最有趣的攻击是在**客户端和真实服务器之间的通信中执行中间人攻击**。您可能能够获取敏感文件中间人攻击与打印机的通信甚至凭据Windows身份验证
有关更多信息,请查看:
{% 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)
{% endcontent-ref %}
## 参考资料
* [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)
<details>
<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>
- 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗?或者您想要访问**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入**[**💬**](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)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
</details>