Aller au contenu principal

Lab 5.2: Énumération DNS Avancée

Objectifs d'Apprentissage​

À la fin de ce laboratoire, vous serez capable de:

  • Comprendre le rôle du DNS dans la sécurité réseau
  • Effectuer des requêtes DNS de différents types (A, MX, NS, TXT, etc.)
  • Découvrir des sous-domaines cachés
  • Tenter des transferts de zone DNS
  • Identifier des fuites d'informations via DNS
  • Utiliser des outils d'énumération DNS automatisés
  • Analyser la configuration DNS pour identifier des vulnérabilités
  • Appliquer des mesures de sécurisation DNS

Durée Estimée​

35 minutes

Prérequis​

  • VM Windows et/ou Kali Linux
  • Accès Internet (pour ce lab, nous utiliserons des domaines de test légaux)
  • Compréhension du système DNS (cours théorique)
  • Lab 5.1 (Nmap) complété

Contexte Professionnel​

L'énumération DNS est une étape critique en reconnaissance passive. Elle permet de:

  • Découvrir l'infrastructure d'une organisation
  • Identifier des serveurs et services non intentionnellement exposés
  • Trouver des sous-domaines de développement/test
  • Collecter des adresses email pour phishing ciblé
  • Cartographier l'architecture réseau
  • Identifier des configurations incorrectes

Utilisé par:

  • Pentesters lors de reconnaissance
  • Bug bounty hunters pour trouver des actifs
  • Administrateurs pour audit de leur propre infrastructure
  • Attaquants pour identifier des cibles

AVERTISSEMENT ÉTHIQUE ET LÉGAL​

L'énumération DNS excessive ou ciblée peut être considérée comme reconnaissance malveillante.

AUTORISÉ:

  • Sur vos propres domaines
  • Sur des domaines de test publics (example.com, testphp.vulnweb.com)
  • Dans le cadre de bug bounty avec autorisation
  • Pour audit de sécurité avec contrat

INTERDIT:

  • Énumération massive de domaines sans permission
  • Scanner des infrastructures gouvernementales ou militaires
  • Utiliser pour cibler des attaques
  • Brute force agressif causant déni de service

NOTE: Nous utiliserons uniquement des domaines de test légaux dans ce lab.


Partie 1: Requêtes DNS de Base​

Étape 1.1: Commande nslookup​

Requête DNS simple:

nslookup example.com

Résultat:

Server:  dns.google
Address: 8.8.8.8

Non-authoritative answer:
Name: example.com
Address: 93.184.216.34

Informations obtenues:

  • Serveur DNS utilisé
  • Adresse IP du domaine

Requête de type spécifique:

nslookup -type=MX example.com

Types courants:

  • A - Adresse IPv4
  • AAAA - Adresse IPv6
  • MX - Mail servers
  • NS - Name servers
  • TXT - Text records (SPF, DKIM, etc.)
  • CNAME - Canonical name (alias)
  • SOA - Start of Authority

Étape 1.2: Commande dig (Linux)​

Plus puissant que nslookup:

dig example.com

Requête de type spécifique:

dig example.com MX
dig example.com NS
dig example.com TXT
dig example.com ANY

Option ANY: Tous les types de records (parfois limité par serveurs DNS)

Serveur DNS spécifique:

dig @8.8.8.8 example.com
dig @1.1.1.1 example.com

Questions:

  1. Quels sont les serveurs de mail (MX) de example.com?
  2. Quels sont les name servers (NS)?

Étape 1.3: Records TXT et Fuites d'Informations​

Les records TXT contiennent souvent des informations sensibles:

dig example.com TXT

Informations trouvées typiquement:

example.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all"
example.com. 3600 IN TXT "google-site-verification=xxxxxx"

Peut révéler:

  • Services utilisés (Google Workspace, Microsoft 365)
  • Configurations de sécurité (SPF, DKIM, DMARC)
  • Vérifications de domaine
  • Parfois: informations internes non intentionnelles

Questions: 3. Quels services l'organisation utilise-t-elle (basé sur TXT records)? 4. Y a-t-il des informations sensibles dans les TXT records?


Partie 2: Transfert de Zone DNS​

Étape 2.1: Comprendre les Transferts de Zone​

Zone Transfer (AXFR):

  • Mécanisme légitime pour répliquer DNS entre serveurs
  • Devrait être restreint aux serveurs secondaires autorisés
  • Si mal configuré: Permet de dumper TOUTE la zone DNS!

Résultat d'un transfert réussi:

  • Liste COMPLÈTE de tous les sous-domaines
  • Toutes les adresses IP
  • Toute la configuration DNS

C'est comme obtenir l'annuaire complet de l'organisation!

Étape 2.2: Tenter un Transfert de Zone​

Avec dig:

dig axfr @ns1.example.com example.com

Résultat si vulnérable:

example.com.        3600  IN  SOA   ns1.example.com. admin.example.com. ...
example.com. 3600 IN NS ns1.example.com.
example.com. 3600 IN NS ns2.example.com.
www.example.com. 3600 IN A 93.184.216.34
mail.example.com. 3600 IN A 93.184.216.35
ftp.example.com. 3600 IN A 93.184.216.36
admin.example.com. 3600 IN A 192.168.1.50
dev.example.com. 3600 IN A 192.168.1.100
test.example.com. 3600 IN A 10.0.0.50
...

JACKPOT! Tous les sous-domaines révélés, incluant internes!

Résultat si protégé:

; Transfer failed.

Avec nslookup (Windows):

nslookup
server ns1.example.com
ls -d example.com

Étape 2.3: Identifier les Name Servers​

Avant de tenter transfert, identifier les NS:

dig example.com NS

Résultat:

example.com.  3600  IN  NS  ns1.example.com.
example.com. 3600 IN NS ns2.example.com.

Tenter transfert sur chacun:

dig axfr @ns1.example.com example.com
dig axfr @ns2.example.com example.com

Parfois un serveur est mal configuré mais pas l'autre!

Questions: 5. Le transfert de zone a-t-il réussi? 6. Combien de sous-domaines avez-vous découverts?


Partie 3: Découverte de Sous-Domaines​

Étape 3.1: Brute Force de Sous-Domaines​

Wordlist de sous-domaines courants:

Créez subdomains.txt:

www
mail
ftp
admin
webmail
portal
vpn
remote
dev
test
staging
api

Script bash simple:

#!/bin/bash

DOMAIN=$1
WORDLIST="subdomains.txt"

while read subdomain; do
result=$(host "$subdomain.$DOMAIN" 2>/dev/null)
if [[ $result != *"not found"* ]]; then
echo "[+] Found: $subdomain.$DOMAIN"
echo "$result"
fi
done < $WORDLIST

Utilisation:

chmod +x subdomain_enum.sh
./subdomain_enum.sh example.com

Étape 3.2: Outils Automatisés​

dnsenum (préinstallé sur Kali):

dnsenum example.com

Fonctionnalités:

  • Tentative de transfert de zone
  • Brute force de sous-domaines
  • Résolution inverse (PTR records)
  • Google scraping pour sous-domaines

Résultat exemple:

dnsenum VERSION:1.2.6

----- example.com -----

Host's addresses:
__________________

example.com. 93.184.216.34

Name Servers:
______________

ns1.example.com. 199.43.135.53
ns2.example.com. 199.43.133.53

Brute forcing with subdomains.txt:
___________________________________

www.example.com. 93.184.216.34
mail.example.com. 93.184.216.35
ftp.example.com. 93.184.216.36

subfinder (outil moderne):

# Installation
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

# Utilisation
subfinder -d example.com

Utilise des sources multiples:

  • APIs de recherche
  • Certificats SSL (crt.sh)
  • Archives web
  • Search engines

Étape 3.3: Certificats SSL pour Sous-Domaines​

Les certificats SSL révèlent souvent des sous-domaines!

Recherche manuelle sur crt.sh:

curl -s "https://crt.sh/?q=%.example.com&output=json" | jq -r '.[].name_value' | sort -u

Résultat:

*.example.com
www.example.com
mail.example.com
api.example.com
staging.example.com

Sous-domaines découverts via certificats SSL!

Questions: 7. Combien de sous-domaines avez-vous trouvés avec dnsenum? 8. Certains sous-domaines semblent-ils être de développement/test?


Partie 4: Énumération Inverse (Reverse DNS)​

Étape 4.1: Résolution Inverse (PTR Records)​

À partir d'une IP, trouver le nom de domaine:

nslookup 93.184.216.34

OU

dig -x 93.184.216.34

Résultat:

34.216.184.93.in-addr.arpa name = example.com.

Étape 4.2: Scan de Plage IP pour PTR​

Script pour scanner une plage:

#!/bin/bash

NETWORK="93.184.216"

for i in {1..254}; do
IP="$NETWORK.$i"
PTR=$(dig -x $IP +short 2>/dev/null)
if [ ! -z "$PTR" ]; then
echo "$IP -> $PTR"
fi
done

Résultat: Liste de tous les domaines hébergés sur cette plage IP!

Utile pour:

  • Identifier tous les sites d'une même organisation
  • Découvrir des domaines non publicisés
  • Cartographier l'infrastructure

Questions: 9. Combien de domaines sont hébergés sur la même plage IP? 10. Pourquoi la résolution inverse est-elle utile en reconnaissance?


Partie 5: Analyse de Configuration DNS​

Étape 5.1: Identifier les Serveurs DNS Autoritaires​

dig example.com NS +trace

Résultat montre la hiérarchie complète:

.           Root servers
com. TLD servers
example.com. Authoritative servers

Voir la délégation complète depuis la racine!

Étape 5.2: Vérification SPF/DMARC​

SPF (Sender Policy Framework):

dig example.com TXT | grep spf

Analyse:

"v=spf1 include:_spf.google.com ~all"
  • ~all = SoftFail (accepte mais marque suspect)
  • -all = HardFail (rejette)
  • +all = Accepte tout (DANGEREUX!)

DMARC:

dig _dmarc.example.com TXT

Si mal configuré: Phishing plus facile!

Étape 5.3: Cache DNS Poisoning (Démonstration)​

Sur votre VM locale (pas sur Internet!):

Fichier hosts local:

notepad C:\Windows\System32\drivers\etc\hosts

Ajoutez:

192.168.100.50  facebook.com
192.168.100.50 google.com

Sauvegardez et testez:

ping facebook.com

Résultat: Ping vers 192.168.100.50 au lieu de la vraie IP!

Application: Phishing local, redirection de trafic

Questions: 11. Le fichier hosts contourne-t-il le DNS? 12. Comment un attaquant pourrait-il exploiter cela?


Partie 6: Outils d'Énumération Avancés​

Étape 6.1: fierce (DNS Scanner)​

fierce --domain example.com

Fonctionnalités:

  • Transfert de zone
  • Brute force de sous-domaines
  • Scan de plages IP proches
  • Résolution inverse

Étape 6.2: dnsrecon​

dnsrecon -d example.com -t std

Options de scan (-t):

  • std - Standard
  • axfr - Zone transfer
  • bing - Bing search
  • zonewalk - DNSSEC zone walking

Scan complet:

dnsrecon -d example.com -t std,axfr,bing,zonewalk -n ns1.example.com

Étape 6.3: amass (Le plus complet)​

amass enum -d example.com

Sources utilisées:

  • APIs multiples
  • Scraping web
  • Certificats SSL
  • Archives
  • DNS brute force

Output détaillé:

amass enum -d example.com -o subdomains.txt -v

Résultat typique: 50-500+ sous-domaines découverts!

Questions: 13. Quel outil a trouvé le plus de sous-domaines? 14. Certains sous-domaines semblent-ils non intentionnellement exposés?


Partie 7: Exploitation de Configurations DNS​

Étape 7.1: DNS Cache Snooping​

Vérifier si un serveur DNS a résolu certains domaines:

nmap --script dns-cache-snoop --script-args 'dns-cache-snoop.mode=timed,dns-cache-snoop.domains={google.com,facebook.com,internalsite.local}' <DNS_SERVER>

Si le serveur a déjà résolu ces domaines: Dans le cache!

Révèle: Quels sites l'organisation visite

Étape 7.2: DNS Zone Walking (DNSSEC)​

Si DNSSEC mal configuré:

dnsrecon -d example.com -t zonewalk

Permet d'énumérer TOUS les records même sans transfert de zone!

Étape 7.3: Subdomain Takeover​

Identifier sous-domaines pointant vers services inexistants:

dig admin.example.com

Si CNAME pointe vers:

admin.example.com CNAME old-service.azurewebsites.net

Et que old-service.azurewebsites.net n'existe plus:

Attaquant peut:

  1. Créer old-service.azurewebsites.net
  2. Contrôler admin.example.com
  3. Phishing, vol de sessions, etc.

Détection automatisée:

subzy run --target subdomains.txt

Questions: 15. Avez-vous trouvé des sous-domaines avec CNAME vers services tiers? 16. Comment vérifier si un sous-domaine est vulnérable à takeover?


Livrables​

À remettre:

  1. Rapport d'énumération DNS (Word/PDF, 3-4 pages):

    • Réponses aux 16 questions
    • Méthodologie d'énumération utilisée
    • Liste complète des sous-domaines découverts
    • Analyse de la configuration DNS
    • Vulnérabilités identifiées
  2. Captures d'écran (minimum 6):

    • Requêtes nslookup/dig de différents types
    • Tentative de transfert de zone
    • Résultats dnsenum
    • Output de subfinder ou amass
    • Analyse de records TXT
    • Identification de misconfiguration
  3. Fichiers de résultats:

    • Liste de sous-domaines (subdomains.txt)
    • Résultats complets dnsenum
    • Export amass
  4. Analyse de sécurité (2 pages):

    • Risques identifiés
    • Impact potentiel
    • Recommandations de sécurisation DNS

Critères d'Évaluation​

CritèrePoints
Maîtrise des requêtes DNS (nslookup, dig)20%
Utilisation d'outils d'énumération25%
Découverte de sous-domaines20%
Analyse de configuration et vulnérabilités20%
Qualité du rapport et recommandations15%

Commandes de Référence Rapide​

Windows (nslookup)​

nslookup example.com
nslookup -type=MX example.com
nslookup -type=NS example.com
nslookup -type=TXT example.com

Linux (dig)​

dig example.com
dig example.com MX
dig example.com ANY
dig @8.8.8.8 example.com
dig axfr @ns1.example.com example.com

Énumération​

dnsenum example.com
subfinder -d example.com
amass enum -d example.com
fierce --domain example.com
dnsrecon -d example.com -t std

Conclusion​

Ce lab vous a enseigné:

  • Requêtes DNS de tous types
  • Transferts de zone et leur exploitation
  • Découverte de sous-domaines avec multiples techniques
  • Outils d'énumération automatisés
  • Analyse de configuration DNS
  • Identification de vulnérabilités DNS

Leçons clés:

  1. DNS révèle beaucoup d'informations sur l'infrastructure
  2. Transferts de zone mal configurés = divulgation complète
  3. Sous-domaines de dev/test souvent moins sécurisés
  4. Records TXT peuvent contenir informations sensibles
  5. Énumération passive difficile à détecter

Prochaine étape: Lab 5.3 ARP Spoofing et Man-in-the-Middle!


Lab développé dans le cadre du cours Systèmes d'Exploitation - MODULE 5