mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 17:28:13 +00:00
113 lines
11 KiB
Markdown
113 lines
11 KiB
Markdown
# 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)のコレクションです。
|
||
|
||
- [**公式の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リポジトリ](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.251(IPv6の場合はFF02::FB)に送信します。mDNSを使用してグローバルドメイン名(.local以外のもの)を解決することもできますが、mDNSの実装ではデフォルトでこの動作が無効になっているはずです。mDNSのリクエストとレスポンスは、ソースポートと宛先ポートとしてUDPとポート5353を使用します。
|
||
|
||
mDNSの応答には、有効なレコードの秒数を示す**Time-to-Live(TTL)**値を含むいくつかの重要なフラグがあります。**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)のコレクションです。
|
||
|
||
- [**公式のPEASS&HackTricksのスワッグ**](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>
|