Active Directory : comment et pourquoi désactiver le protocole mDNS ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons partir à la découverte du protocole mDNS qui est pris en charge par Windows, Linux, et macOS afin d'effectuer de la résolution de noms dans certaines conditions ! Nous verrons également quels sont les risques associés au protocole mDNS et comment nous pouvons le désactiver !
Cet article fait suite à celui publié au sujet des protocoles LLMNR et NetBIOS (NBT-NS) que vous pouvez consulter en utilisant le lien suivant :
Retrouvez cet article au format vidéo :
II. Qu'est-ce que le protocole mDNS ?
Au même titre que le protocole LLMNR, le protocole mDNS pour Multicast DNS (ou multicast Domain Name System) a pour objectif de permettre la résolution des noms de machines sur les réseaux locaux. Il fonctionne sur le même principe que le DNS, sans avoir besoin d'un serveur DNS pour fonctionner, c'est pour cette raison qu'il émet des paquets en multicast sur le réseau (pour sonder les machines connectées au réseau local).
Comme avec le protocole LLMNR, Windows va émettre une requête mDNS sur le réseau local à partir du moment où il ne parvient pas à résoudre un nom à partir de son fichier hosts, de son cache DNS et qu'il n'obtient pas de réponse de la part du serveur DNS déclaré dans l'interface réseau active. Ceci en fait un protocole relativement bavard puisqu'il est susceptible d'envoyer de nombreux paquets sur le réseau.
En principe, le protocole mDNS doit être implémenté de manière à fonctionner uniquement pour les noms en ".local", c'est pour cette raison que les requêtes émises via le protocole mDNS concerneront toujours "le nom à résoudre + l'extension .local". Enfin, sachez que le protocole mDNS est activé par défaut sur Windows (jusqu'à sur les dernières versions de Windows 10 et Windows 11) et sur certaines distributions Linux.
Remarque : le protocole mDNS s'appuie sur l'UDP et le port 5353, contrairement au DNS qui travaille sur le port 53.
III. Quels sont les risques associés au protocole mDNS ?
Avec le protocole mDNS, les risques sont les mêmes qu'avec le protocole LLMNR puisqu'il est vulnérable à plusieurs attaques, notamment celles de type poisoning et man-in-the-middle (MiTM).
Comme je l'avais expliqué dans mon précédent article, cela signifie qu'une machine émettrice d'une requête mDNS peut être empoisonnée par la machine contrôlée par un attaquant (notamment via l'outil Responder). Autrement dit, la machine de l'attaquant va répondre à la requête mDNS émise sur le réseau afin de retourner une fausse information. Dans ce cas, le client mDNS va tenter une authentification auprès du serveur contrôlé par l'attaquant, ce qui va permettre de récupérer des identifiants (hash Net-NTLM, identifiants HTTP, etc.).
Ainsi, nous pourrions effectuer la même attaque sur une machine à partir du moment où le protocole mDNS est activé. Avec l'outil Responder, que nous avons mis en pratique pour l'empoisonnement LLMNR, ceci est clairement visible :
[*] [MDNS] Poisoned answer sent to 192.168.14.11 for name srv-fichiers.local
[*] [MDNS] Poisoned answer sent to 192.168.14.11 for name srv-fichiers.local
Dans le même temps, à partir du PC de l'attaquant, si l'on effectue une capture du trafic avec Wireshark, nous pouvons voir arriver deux requêtes mDNS, une en IPv4 et une en IPv6. Nous pouvons voir également une troisième requête correspondante à la réponse à la requête mDNS, générée par l'outil Responder pour empoisonner le client Windows.
IV. Windows : comment désactiver le protocole mDNS par GPO ?
Pour désactiver le protocole mDNS sur les machines Windows d'un environnement Active Directory, nous allons créer une stratégie de groupe (GPO) qui va créer une valeur dans le Registre Windows des machines. Sur une machine locale, vous pouvez également créer manuellement cette valeur dans le Registre Windows.
Commencez par ouvrir la console de gestion des stratégies de groupe afin de créer une nouvelle GPO. Par exemple, la GPO "Sécurité - Désactiver mDNS". Éditez cette GPO et accédez à cet emplacement :
1 - Accédez à : Configuration ordinateur > Préférences > Paramètres Windows > Registre
2 - Effectuez un clic droit, puis sous "Nouveau" choisissez "Élément Registre".
Une fenêtre s'affiche à l'écran.
Nous allons devoir configurer la valeur de Registrer à déployer sur les machines Windows. Voici la configuration à effectuer :
- Action : Mettre à jour (même si cette valeur n'existe pas par défaut)
- Ruche : HKEY_LOCAL_MACHINE
- Chemin d'accès de la clé : SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
- Nom de valeur : EnableMDNS
- Type de valeur : REG_DWORD
- Données de valeur : 0
Ce qui donne ceci :
La valeur "0" sert à désactiver le protocole mDNS sur Windows !
Voilà, la GPO est prête ! Il ne reste plus qu'à tester sur une machine après avoir effectué un "gpupdate /force" et un reboot sur une machine affectée par la stratégie de groupe.
V. Conclusion
Si vous désactivez les protocoles LLMNR, NBT-NS et mDNS sur les machines de votre infrastructure, vous ne devriez plus capturer de trames associées à ces différents protocoles à partir d'un outil tel que Wireshark ! En effet, si la résolution DNS échoue, elle échoue, point. En plus de réduire la surface d'attaque de vos machines, vous allez aussi générer moins de trafic réseau, car ces protocoles sont bavards !
Comme d'habitude, effectuez des tests avant de déployer massivement ce type de changements...
Bonsoir
J’avais découvert cela sur Linux il y a quelques années en travaillant sur du durcissement d’OS linux, et en recherchant l’origine de ces échanges MDNS, j’avais remonté le service AVAHI ou systemd-resolved. dans le doute je n’avais pas été plus loin.
Est ce que les risques évoqué sur Windows existent sur Linux ?
Merci