8.1 KiB
Informations de base
Multicast DNS (mDNS) est un protocole de configuration zéro qui vous permet d'effectuer des opérations de type DNS sur le réseau local en l'absence d'un serveur DNS classique en unicast. Le protocole utilise la même API, les formats de paquets et les sémantiques 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 (tels que 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 TV, 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
Comment fonctionne mDNS
Les appareils utilisent mDNS lorsque le réseau local ne dispose pas 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 demandes et les réponses mDNS utilisent UDP et le port 5353 à la fois comme port source et port de destination.
Les réponses mDNS contiennent plusieurs indicateurs importants, notamment une valeur de Time-to-Live (TTL) qui indique pendant combien de secondes l'enregistrement est valide. L'envoi d'une réponse avec TTL=0 signifie que l'enregistrement correspondant doit être effacé. Un autre indicateur 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). Étant donné qu'il est possible de recevoir des requêtes unicast en dehors du lien local, les implémentations sécurisées de mDNS doivent toujours vérifier que l'adresse source dans le paquet correspond à la plage d'adresses de sous-réseau local.
Comment fonctionne 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 de 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 la forme de nom "<Service>.<Domaine>". La partie <Service> est le nom du service précédé de "_" (par exemple, _ipps, _printer ou _ipp) et soit _tcp ou _udp. La partie <Domaine> 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'enregistrement PTR :
_ipps._tcp.local: type PTR, class IN, test._ipps._tcp.local
La partie du record PTR à gauche des deux-points est son nom, et celle à droite est le record SRV vers lequel pointe le PTR. Le record SRV répertorie l'hôte et le port cible où l'instance de service peut être atteinte. Par exemple, l'image suivante montre un enregistrement 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 similaire au record PTR précédé du nom de l'instance (test dans ce cas). Le 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 multicast mDNS.
Vous pouvez utiliser l'outil Pholus pour envoyer des requêtes mDNS (-rq) sur le réseau local et capturer le trafic multicast mDNS (pendant -stimeout 10 secondes):
sudo python3 pholus3.py eth0 -rq -stimeout 10
Attaques
Abus de la phase de sondage mDNS
Lorsqu'un répondeur mDNS démarre ou modifie sa connectivité, il demande au réseau local s'il existe une ressource avec 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 ont lieu dans les 10 secondes, l'hôte doit alors attendre au moins cinq secondes avant toute tentative supplémentaire. De plus, si une minute s'écoule pendant laquelle l'hôte ne peut pas trouver de nom inutilisé, il signale une erreur à l'utilisateur.
La commande suivante empêchera tout nouveau périphérique 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 effectuer sur ce service est de réaliser une MitM dans la communication entre le client et le serveur réel. Vous pourriez être en mesure d'obtenir des fichiers sensibles (MitM la communication avec l'imprimante) voire des informations d'identification (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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
-
Découvrez The PEASS Family, notre collection exclusive de NFTs
-
Obtenez le swag officiel PEASS & HackTricks
-
Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
-
Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et hacktricks-cloud.