DNS Zone Transfers
Les transferts de zone DNS (DNS Zone Transfers) représentent une technique parfois sous-estimée mais très puissante lors d'une phase de reconnaissance web. Bien qu'ils soient conçus pour assurer la redondance et la cohérence des enregistrements DNS entre serveurs, une mauvaise configuration peut transformer cette fonctionnalité en véritable mine d'or pour un attaquant.
❔ Qu'est-ce qu'un transfert de zone DNS ?
Un transfert de zone est le processus par lequel un serveur DNS secondaire copie l'intégralité des enregistrements DNS d'un domaine à partir d'un serveur principal. Cela inclut les sous-domaines, adresses IP, enregistrements MX, etc. Ce processus est nécessaire pour :
Garantir la résilience du service DNS,
Assurer une cohérence des données DNS entre plusieurs serveurs,
Permettre une résolution rapide et fiable pour les utilisateurs finaux.
Mais s'il est mal configuré, tout utilisateur externe pourrait effectuer cette requête et recevoir une copie complète de la zone DNS, ce qui révèle des informations potentiellement sensibles.
🚫 Le risque des transferts non sécurisés
Historiquement, les serveurs DNS acceptaient les transferts de zone (à l'aide du type de requête AXFR) de n'importe qui. Aujourd'hui, cette pratique est considérée comme une faille de configuration majeure. Les informations qu'un attaquant peut collecter via un transfert de zone comprennent :
Une liste exhaustive des sous-domaines : services internes, interfaces d'administration, environnements de test...
Les adresses IP associées à chaque sous-domaine,
Les enregistrements MX révélant les serveurs mail internes,
Les serveurs NS (name server), fournissant des indices sur le prestataire DNS ou les infrastructures réseaux internes.
🔐 Méthode d'exploitation avec dig
dig
Le transfert de zone peut être testé avec une simple commande dig
. Voici un exemple contre un domaine volontairement vulnérable mis en place à des fins de démonstration :
0xH4shDumb@htb[/htb]$ dig axfr @nsztm1.digi.ninja zonetransfer.me
Sortie simplifiée :
zonetransfer.me. 7200 IN SOA nsztm1.digi.ninja. robin.digi.ninja. 2019100801 172800 900 1209600 3600
zonetransfer.me. 300 IN TXT "google-site-verification=..."
zonetransfer.me. 7200 IN MX 0 ASPMX.L.GOOGLE.COM.
www.zonetransfer.me. 7200 IN A 5.196.105.14
canberra-office.zonetransfer.me. 7200 IN A 202.14.81.230
...
;; XFR size: 50 records (messages 1, bytes 2085)
Ce résultat révèle de nombreux sous-domaines, leur correspondance IP, des enregistrements TXT, MX, PTR, etc. — l'ensemble des informations contenues dans la zone !
⚠️ Bonnes pratiques et mitigation
Pour se prémunir contre ces risques :
Restreindre les transferts de zone aux IP explicitement autorisées (serveurs secondaires légitimes).
Configurer les serveurs DNS pour refuser toute requête AXFR externe par défaut.
Utiliser des outils de supervision pour détecter toute tentative de transfert non autorisé.
🌐 En résumé
Les transferts de zone DNS sont un outil d'administration essentiel mais potentiellement dangereux en cas de mauvaise configuration. Pour un testeur d'intrusion, ils représentent un véritable raccourci vers une cartographie complète de la cible. C'est pourquoi ils doivent toujours être testés durant la phase de reconnaissance DNS, à condition d'être dans le cadre d'une mission autorisée.
After performing a zone transfer for the domain inlanefreight.htb on the target system, how many DNS records are retrieved from the target system's name server? Provide your answer as an integer, e.g, 123
Nous ajoutons dans un premier temps l'adresse IP fournie dans le fichier /etc/hosts
associée au nom de domaine de la question :
10.129.78.242 inlanefreight.htb
Utilisation de dig
:
$ dig axfr @10.129.78.242 inlanefreight.htb
inlanefreight.htb. 604800 IN SOA inlanefreight.htb. root.inlanefreight.htb. 2 604800 86400 2419200 604800
inlanefreight.htb. 604800 IN NS ns.inlanefreight.htb.
admin.inlanefreight.htb. 604800 IN A 10.10.34.2
ftp.admin.inlanefreight.htb. 604800 IN A 10.10.34.2
careers.inlanefreight.htb. 604800 IN A 10.10.34.50
dc1.inlanefreight.htb. 604800 IN A 10.10.34.16
dc2.inlanefreight.htb. 604800 IN A 10.10.34.11
internal.inlanefreight.htb. 604800 IN A 127.0.0.1
admin.internal.inlanefreight.htb. 604800 IN A 10.10.1.11
wsus.internal.inlanefreight.htb. 604800 IN A 10.10.1.240
ir.inlanefreight.htb. 604800 IN A 10.10.45.5
dev.ir.inlanefreight.htb. 604800 IN A 10.10.45.6
ns.inlanefreight.htb. 604800 IN A 127.0.0.1
resources.inlanefreight.htb. 604800 IN A 10.10.34.100
securemessaging.inlanefreight.htb. 604800 IN A 10.10.34.52
test1.inlanefreight.htb. 604800 IN A 10.10.34.101
us.inlanefreight.htb. 604800 IN A 10.10.200.5
cluster14.us.inlanefreight.htb. 604800 IN A 10.10.200.14
messagecenter.us.inlanefreight.htb. 604800 IN A 10.10.200.10
ww02.inlanefreight.htb. 604800 IN A 10.10.34.112
www1.inlanefreight.htb. 604800 IN A 10.10.34.111
inlanefreight.htb. 604800 IN SOA inlanefreight.htb. root.inlanefreight.htb. 2 604800 86400 2419200 604800
Nous pouvons alors observer que 22
records DNS sont présents.
Within the zone record transferred above, find the ip address for ftp.admin.inlanefreight.htb. Respond only with the IP address, eg 127.0.0.1
Grâce à la commande précédente, nous pouvons observer l'IP de ftp.admin.inlanefreight.htb : 10.10.34.2
.
Within the same zone record, identify the largest IP address allocated within the 10.10.200 IP range. Respond with the full IP address, eg 10.10.200.1
Une nouvelle fois, la commande de la première question nous permet de relevée l'adresse IP la plus élevée présente dans le scope 10.10.200.x : 10.10.200.14 (associé à cluster14.us.inlanefreight.htb)
.
Mis à jour