hacktricks/network-services-pentesting/5353-udp-multicast-dns-mdns.md
2023-07-07 23:42:27 +00:00

113 lines
11 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 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の最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
- [**公式のPEASSHackTricksのグッズ**](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リポジトリ](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 は、多くの IoT デバイスネットワークプリンター、Apple TV、Google Chromecast、NAS デバイス、カメラなどと一緒に使用されることが最も一般的ですが、mDNS に依存する必要はありません。\
**デフォルトポート:** 5353/UDP
```
PORT STATE SERVICE
5353/udp open zeroconf
```
### mDNSの動作原理
デバイスは、ローカルネットワークに従来のユニキャストDNSサーバーがない場合にmDNSを使用します。mDNSを使用してローカルアドレスのドメイン名を解決するために、デバイスはドメイン名が.localで終わるDNSクエリを、IPv4の場合はマルチキャストアドレス224.0.0.251IPv6の場合はFF02::FBに送信します。mDNSを使用してグローバルドメイン名.local以外のものを解決することもできますが、mDNSの実装ではデフォルトでこの動作が無効になっているはずです。mDNSのリクエストとレスポンスは、ソースポートと宛先ポートとしてUDPとポート5353を使用します。
mDNSの応答には、有効なレコードの秒数を示す**Time-to-LiveTTL**値を含むいくつかの重要なフラグがあります。**TTL=0で応答を送信すると、対応するレコードがクリアされる**ことを意味します。もう1つの重要なフラグはQUビットで、クエリがユニキャストクエリかどうかを示します。**QUビットが設定されていない場合**、パケットはマルチキャストクエリQMです。ローカルリンクの外部からユニキャストクエリを受信することが可能なため、セキュアなmDNSの実装では常にパケットのソースアドレスがローカルサブネットアドレス範囲と一致するかどうかを確認する必要があります。
### DNS-SDの動作原理
DNS-SDは、クライアントがネットワーク上で利用可能なサービスを発見するためのものです。クライアントは、特定のサービスの名前のリストにサービスのタイプをマップするポインタレコードPTRの標準DNSクエリを送信します。
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レコード**には、サービスインスタンスにアクセスできるターゲット**ホスト**と**ポート**がリストされています。例えば、次の画像は、ホストubuntu.localとポート8000でWiresharkで表示される「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回の競合が発生した場合、ホストは追加の試行を行う前に少なくとも5秒間待機する必要があります。さらに、未使用の名前を見つけることができないまま1分が経過すると、ホストはユーザーにエラーを報告します。
次のコマンドラインは、**すべての新しいデバイスが既に使用されていると指定する**ため、新しい名前を取得できなくします:
```bash
sudo python pholus.py eth0 -afre -stimeout 1000
```
### スプーフィング/MitM
このサービス上で実行できる最も興味深い攻撃は、**クライアントと実際のサーバー間の通信でのMitM**を実行することです。プリンターとの通信をMitMすることで、機密ファイルを入手することができるかもしれません。また、資格情報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の最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
- [**公式のPEASSHackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。
- **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**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>