hacktricks/network-services-pentesting/5353-udp-multicast-dns-mdns.md

8.9 KiB

5353/UDP Multicast DNS (mDNS) et DNS-SD

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Informations de base

Le Multicast DNS (mDNS) est un protocole de configuration zéro qui vous permet d'effectuer des opérations similaires à DNS sur le réseau local en l'absence d'un serveur DNS unicast conventionnel. Le protocole utilise la même API, les formats de paquets, et la sémantique de fonctionnement que DNS, vous permettant de résoudre des noms de domaine sur le réseau local. DNS Service Discovery (DNS-SD) est un protocole qui permet aux clients de découvrir une liste d'instances nommées de services (comme test._ipps._tcp.local, ou linux._ssh._tcp.local) dans un domaine en utilisant des requêtes DNS standard. DNS-SD est le plus souvent utilisé en conjonction avec mDNS mais n'en dépend pas. Ils sont tous deux utilisés par de nombreux appareils IoT, tels que les imprimantes réseau, les Apple TVs, les Google Chromecast, les dispositifs de stockage en réseau (NAS), et les caméras.
Port par défaut : 5353/UDP

PORT     STATE SERVICE
5353/udp open  zeroconf

Fonctionnement de mDNS

Les appareils utilisent mDNS lorsque le réseau local manque d'un serveur DNS unicast conventionnel. Pour résoudre un nom de domaine pour une adresse locale en utilisant mDNS, l'appareil envoie une requête DNS pour un nom de domaine se terminant par .local à l'adresse multicast 224.0.0.251 (pour IPv4) ou FF02::FB (pour IPv6). Vous pouvez également utiliser mDNS pour résoudre des noms de domaine globaux (non .local), mais les implémentations de mDNS sont censées désactiver ce comportement par défaut. Les requêtes et réponses mDNS utilisent UDP et le port 5353 comme port source et de destination.

Les réponses mDNS contiennent plusieurs drapeaux importants, y compris une valeur Time-to-Live (TTL) qui signifie combien de secondes l'enregistrement est valide. Envoyer une réponse avec TTL=0 signifie que l'enregistrement correspondant doit être effacé. Un autre drapeau important est le bit QU, qui indique si la requête est une requête unicast ou non. Si le bit QU n'est pas défini, le paquet est une requête multicast (QM). Comme il est possible de recevoir des requêtes unicast en dehors du lien local, les implémentations sécurisées de mDNS devraient toujours vérifier que l'adresse source dans le paquet correspond à la plage d'adresses du sous-réseau local.

Fonctionnement de DNS-SD

DNS-SD permet aux clients de découvrir les services disponibles sur le réseau. Pour l'utiliser, les clients envoient des requêtes DNS standard pour des enregistrements pointeur (PTR), qui associent le type de service à une liste de noms d'instances spécifiques de ce type de service.

Pour demander un enregistrement PTR, les clients utilisent le format de nom "<Service>.<Domain>". La partie <Service> est le nom du service précédé de "_" (par exemple, _ipps, _printer ou _ipp) et soit _tcp ou _udp. La portion <Domain> est ".local".
Les répondeurs renvoient ensuite les enregistrements PTR qui pointent vers les enregistrements de service (SRV) et de texte (TXT) correspondants. Voici un exemple d'un enregistrement PTR :

_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local

La partie du record PTR à la gauche du deux-points est son nom, et la partie à la droite est le record SRV vers lequel le record PTR pointe. Le record SRV liste la cible hôte et le port où l'instance du service peut être atteinte. Par exemple, l'image suivante montre un record SRV "test._ipps._tcp.local" dans Wireshark sur l'hôte ubuntu.local et le port 8000 :

Par conséquent, le nom du record SRV est comme le record PTR précédé par le nom de <Instance> (test dans ce cas). Le record TXT a le même nom que le record SRV et contient les informations nécessaires lorsque l'adresse IP et le numéro de port (contenus dans le record SRV) pour un service ne sont pas suffisants pour l'identifier.

Énumération

nmap

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

Énumération du réseau

Vous pouvez en apprendre beaucoup sur le réseau local en envoyant simplement des requêtes mDNS et en capturant le trafic mDNS multicast.

Vous pouvez utiliser l'outil Pholus pour envoyer des requêtes mDNS (-rq) sur le réseau local et capturer le trafic mDNS multicast (pour -stimeout 10 secondes) :

sudo python3 pholus3.py eth0 -rq -stimeout 10

Attaques

Exploiter la phase de sondage mDNS

Lorsqu'un répondant mDNS démarre ou change sa connectivité, il interroge le réseau local pour savoir s'il existe une ressource portant le nom qu'il prévoit d'utiliser. Si la réponse contient l'enregistrement en question, l'hôte de sondage doit choisir un nouveau nom. Si 15 conflits surviennent en 10 secondes, l'hôte doit ensuite attendre au moins cinq secondes avant toute nouvelle tentative. De plus, si une minute s'écoule pendant laquelle l'hôte ne parvient pas à trouver un nom inutilisé, il signale une erreur à l'utilisateur.

La ligne de commande suivante empêchera tout nouvel appareil d'obtenir un nouveau nom, car elle indiquera que tout nom est déjà pris :

sudo python pholus.py eth0 -afre -stimeout 1000

Spoofing/MitM

L'attaque la plus intéressante que vous pouvez réaliser sur ce service est d'effectuer un MitM dans la communication entre le client et le vrai serveur. Vous pourriez être en mesure d'obtenir des fichiers sensibles (MitM la communication avec l'imprimante) ou même des identifiants (authentification Windows).
Pour plus d'informations, consultez :

{% 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 {% endcontent-ref %}

Références

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :