Énumérer les enregistrements DNS avec dnsenum

NmapNmapBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à utiliser l'outil dnsenum pour l'énumération DNS afin de découvrir des informations critiques sur l'infrastructure d'un domaine cible. Vous allez pratiquer l'installation de l'outil, la sélection de cibles appropriées, l'exécution de scans et l'interprétation des résultats tels que les sous-domaines et les enregistrements DNS.

Le laboratoire offre une expérience pratique en matière de reconnaissance DNS systématique, couvrant la configuration de l'outil, la vérification des cibles et l'exécution de commandes. Vous développerez des compétences essentielles pour identifier les vulnérabilités de sécurité grâce à l'analyse des données DNS.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/installation("Installation and Setup") subgraph Lab Skills nmap/installation -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} nmap/output_formats -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} nmap/save_output -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} nmap/host_discovery -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} nmap/target_specification -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} nmap/service_detection -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} nmap/script_management -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} wireshark/installation -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} hydra/installation -.-> lab-549936{{"Énumérer les enregistrements DNS avec dnsenum"}} end

Installer dnsenum

Dans cette étape, vous allez installer l'outil dnsenum, qui est une utilité d'énumération DNS utilisée pour collecter des informations sur l'infrastructure DNS d'un domaine. L'énumération DNS est une technique de reconnaissance fondamentale en cybersécurité qui permet d'identifier les potentielles surfaces d'attaque. L'outil dnsenum automatise le processus de découverte de sous-domaines, d'enregistrements DNS (tels que les enregistrements A, MX, NS) et d'autres informations précieuses sur la configuration réseau d'un domaine cible.

Avant de commencer, comprenons pourquoi nous utilisons cette structure de répertoire spécifique. Le répertoire ~/project est un espace de travail propre que nous avons préparé pour vous afin de garder vos outils organisés. C'est également une bonne pratique dans les évaluations de sécurité dans le monde réel.

  1. Tout d'abord, assurez-vous d'être dans le répertoire de travail par défaut :

    cd ~/project

La commande suivante installe Perl et plusieurs modules Perl dont dnsenum dépend pour fonctionner correctement. Perl est un langage de script dans lequel dnsenum est écrit, tandis que les autres modules fournissent des fonctionnalités de réseau et de DNS.

  1. Installez les dépendances requises pour dnsenum :

    sudo apt-get update && sudo apt-get install -y perl libnet-dns-perl libnet-netmask-perl libnet-ip-perl

Maintenant, nous allons télécharger l'outil dnsenum depuis son dépôt GitHub officiel. GitHub est l'endroit où les développeurs partagent des projets open-source comme celui-ci.

  1. Téléchargez dnsenum depuis son dépôt officiel :

    git clone https://github.com/fwaeytens/dnsenum.git

Après le téléchargement, nous devons entrer dans le répertoire dnsenum pour accéder aux fichiers de l'outil. C'est là que se trouve le script principal dnsenum.pl.

  1. Accédez au répertoire dnsenum :

    cd dnsenum

Enfin, nous allons vérifier que l'installation s'est bien déroulée en vérifiant le menu d'aide. C'est une étape importante avec tout nouvel outil - comprendre ses options avant de l'exécuter contre des cibles réelles.

  1. Vérifiez l'installation en vérifiant le menu d'aide :
    perl dnsenum.pl --help
    Vous devriez voir les informations d'utilisation de l'outil et les options disponibles. Cette sortie vous montre toutes les commandes et les options que vous pouvez utiliser avec dnsenum pour différents types de tâches d'énumération DNS.

Sélectionner un domaine cible

Dans cette étape, vous allez sélectionner un domaine cible approprié pour l'énumération DNS. L'énumération DNS consiste à découvrir tous les enregistrements DNS associés à un domaine, ce qui permet aux professionnels de la sécurité de comprendre l'infrastructure d'un site web. Choisir la bonne cible est crucial pour les tests de sécurité éthiques - nous utilisons toujours des domaines autorisés ou des domaines de test spéciaux comme example.com.

  1. Tout d'abord, assurez-vous d'être dans le bon répertoire de travail. C'est là que nous allons stocker tous nos fichiers d'énumération DNS :

    cd ~/project/dnsenum
  2. Pour ce laboratoire, nous allons utiliser example.com comme domaine cible. Ce domaine est spécifiquement réservé pour la documentation et les tests par l'IANA (Internet Assigned Numbers Authority), ce qui le rend parfait pour apprendre les techniques d'énumération DNS. N'oubliez pas : dans les évaluations de sécurité réelles, vous devez toujours obtenir l'autorisation appropriée avant de scanner tout domaine.

  3. Vérifions que le domaine est accessible avec une recherche DNS de base. Cette commande vérifie si le nom de domaine peut être résolu en une adresse IP :

    nslookup example.com

    Vous devriez voir des informations de résolution DNS montrant les adresses IP du domaine. Si vous obtenez une erreur, vérifiez votre connexion Internet.

  4. Nous allons créer un fichier texte pour stocker notre domaine cible. Ce fichier sera utilisé plus tard par dnsenum :

    echo "example.com" > target_domain.txt
  5. Affichez le contenu de votre fichier cible pour confirmer qu'il a été créé correctement :

    cat target_domain.txt

    La sortie devrait afficher : example.com. Cette simple étape de vérification permet d'éviter les erreurs dans les étapes ultérieures du processus d'énumération.

Exécuter l'énumération DNS

Dans cette étape, vous allez effectuer une énumération DNS sur votre domaine cible en utilisant l'outil dnsenum installé précédemment. L'énumération DNS est une technique de reconnaissance fondamentale qui permet aux professionnels de la sécurité de cartographier l'infrastructure numérique d'un domaine en découvrant les sous-domaines, les enregistrements DNS et d'autres informations réseau.

  1. Tout d'abord, accédez au répertoire dnsenum où se trouve l'outil. Cela garantit que vous travaillez au bon endroit avec tous les fichiers nécessaires :

    cd ~/project/dnsenum
  2. Exécutez dnsenum sur votre domaine cible (example.com) avec une énumération de base. Le flag --enum indique à l'outil d'effectuer une énumération DNS standard :

    perl dnsenum.pl --enum example.com

    Ce scan de base révèlera des informations DNS importantes, notamment :

    • Les adresses d'hôte (enregistrements A mappant les domaines aux adresses IP)
    • Les serveurs de noms (enregistrements NS indiquant les serveurs DNS autoritatifs)
    • Les serveurs de messagerie (enregistrements MX pour l'infrastructure email)
    • Les sous-domaines courants grâce à une approche de devinette par force brute
  3. Pour obtenir des résultats plus complets, nous allons améliorer le scan avec des paramètres supplémentaires. Ce scan plus approfondi est utile lorsque vous avez besoin d'informations exhaustives sur une cible :

    perl dnsenum.pl --enum -f dns.txt --threads 5 example.com

    Cette commande avancée :

    • Utilise une liste de mots de sous-domaines (dns.txt) pour tester les modèles de nommage courants
    • S'exécute avec 5 threads parallèles pour accélérer le processus de scan
    • Effectue des vérifications exhaustives, y compris des recherches inverses et des tentatives de transfert de zone
  4. Examinez attentivement la sortie qui affichera :

    • Les sous-domaines découverts (points d'entrée potentiels dans les systèmes cibles)
    • Les adresses IP (montrant où les services sont hébergés)
    • Divers types d'enregistrements DNS (A, MX, NS, etc. révélant les configurations de service)
    • Les tentatives de transfert de zone (testant les serveurs DNS mal configurés)

Examiner les sous-domaines et les enregistrements

Dans cette étape, vous allez analyser les résultats de l'énumération DNS pour identifier les sous-domaines et divers enregistrements DNS. L'énumération DNS est une technique de reconnaissance cruciale qui révèle la structure du réseau d'un domaine. En examinant ces résultats, vous pouvez comprendre comment le domaine cible organise ses services et identifier les points d'entrée potentiels pour des investigations supplémentaires.

  1. Tout d'abord, accédez au répertoire des résultats dnsenum où vos données de scan sont stockées :

    cd ~/project/dnsenum

    Ce répertoire contient les fichiers de sortie de votre scan d'énumération DNS précédent. Nous allons travailler avec la sortie au format XML qui contient des données structurées sur le domaine.

  2. Affichez le fichier de sortie XML de votre scan précédent :

    cat dnsenum_example.com.xml

    Cette commande affiche les données XML brutes contenant toutes les informations DNS collectées. Le fichier inclut plusieurs types d'enregistrements DNS importants :

    • Les adresses d'hôte (enregistrements A) - Ces enregistrements mappent les noms de domaine aux adresses IP
    • Les serveurs de noms (enregistrements NS) - Les serveurs DNS autoritatifs pour le domaine
    • Les serveurs de messagerie (enregistrements MX) - Les serveurs responsables de la livraison des emails
    • Les sous-domaines découverts - Des domaines supplémentaires sous le domaine principal
  3. Pour une meilleure lisibilité lors du travail avec de grands ensembles de résultats, vous pouvez filtrer des types d'enregistrements spécifiques :

    grep -E "<host>|<a>" dnsenum_example.com.xml

    Cette commande grep extrait uniquement les entrées d'hôte et leurs adresses IP correspondantes, ce qui facilite la visualisation de quels noms de domaine sont résolus en quelles adresses IP.

  4. Pour afficher uniquement les sous-domaines trouvés lors de l'énumération :

    grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1

    Ce pipeline trouve d'abord toutes les entrées d'hôte, puis utilise cut pour extraire uniquement les noms de domaine entre les balises XML. Les sous-domaines peuvent révéler des services supplémentaires ou des systèmes potentiellement vulnérables.

  5. Examinez les serveurs de noms qui sont essentiels à l'infrastructure DNS du domaine :

    grep -A1 "<nameserver>" dnsenum_example.com.xml

    Le flag -A1 affiche chaque entrée de serveur de noms plus une ligne après, vous donnant à la fois la balise et le nom réel du serveur.

  6. Vérifiez les serveurs de messagerie qui gèrent la livraison des emails pour le domaine :

    grep -A1 "<mx>" dnsenum_example.com.xml

    Les enregistrements MX montrent la priorité et le nom d'hôte des serveurs de messagerie. Ces serveurs sont souvent ciblés dans les évaluations de sécurité car ils gèrent des communications sensibles.

Sauvegarder les données d'énumération

Dans cette étape, vous allez correctement sauvegarder et organiser les résultats de votre énumération DNS pour un usage ultérieur et la rédaction de rapports. Une bonne documentation est essentielle dans les évaluations de cybersécurité car elle permet de conserver des enregistrements, de suivre les découvertes et de partager les résultats avec les membres de l'équipe.

  1. Tout d'abord, assurez-vous que vous êtes dans le répertoire correct où se trouvent les fichiers de sortie de dnsenum. Cela est important car toutes les commandes suivantes travailleront avec les fichiers de ce répertoire :

    cd ~/project/dnsenum
  2. Créez un répertoire avec une indication de date pour vos résultats. L'utilisation de dates dans les noms de répertoires facilite l'organisation de plusieurs scans de manière chronologique. Le flag -p crée les répertoires parents s'ils n'existent pas :

    mkdir -p results/$(date +%Y-%m-%d)
  3. Copiez tous les fichiers pertinents dans le répertoire des résultats. Ici, nous déplaçons spécifiquement le fichier de sortie XML de dnsenum vers notre emplacement de stockage organisé :

    cp dnsenum_example.com.xml results/$(date +%Y-%m-%d)/
  4. Créez un rapport de synthèse lisible par l'homme. Ce script extrait les informations clés du fichier XML et les formate en un simple rapport texte. Les commandes grep filtrent des données spécifiques tandis que les commandes cut extraient seulement les parties pertinentes entre les balises XML :

    {
      echo "DNS Enumeration Report - $(date)"
      echo "=============================="
      echo -e "\nSubdomains Found:"
      grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1
      echo -e "\nName Servers:"
      grep -A1 "<nameserver>" dnsenum_example.com.xml | grep "<host>" | cut -d'>' -f2 | cut -d'<' -f1
    } > results/$(date +%Y-%m-%d)/report.txt
  5. Vérifiez vos fichiers sauvegardés pour confirmer que tout a été copié correctement. La commande ls -l affiche des informations détaillées sur les fichiers, y compris les autorisations et les horodatages :

    ls -l results/$(date +%Y-%m-%d)/
  6. Compressez les résultats pour faciliter le partage. La commande tar regroupe les fichiers, tandis que la compression gzip (l'option z) réduit la taille du fichier pour le transfert :

    tar -czvf example.com_enum_results.tar.gz results/$(date +%Y-%m-%d)/

Résumé

Dans ce laboratoire, vous avez appris à effectuer une énumération DNS à l'aide de l'outil dnsenum à des fins de cybersécurité. Le processus a inclus l'installation de l'outil, la vérification de la connectivité du domaine et la réalisation de recherches DNS de base, tout en mettant l'accent sur les considérations éthiques.

Vous avez pratiqué des étapes essentielles telles que le clonage d'un dépôt, la navigation dans les répertoires et la vérification de l'installation via le menu d'aide. Le laboratoire a démontré la bonne configuration de l'outil et les techniques de validation de la cible en utilisant example.com comme domaine de pratique sûr.