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 IPv4AAAA- Adresse IPv6MX- Mail serversNS- Name serversTXT- 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:
- Quels sont les serveurs de mail (MX) de example.com?
- 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- Standardaxfr- Zone transferbing- Bing searchzonewalk- 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:
- Créer
old-service.azurewebsites.net - Contrôler
admin.example.com - 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:
-
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
-
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
-
Fichiers de résultats:
- Liste de sous-domaines (subdomains.txt)
- Résultats complets dnsenum
- Export amass
-
Analyse de sécurité (2 pages):
- Risques identifiés
- Impact potentiel
- Recommandations de sécurisation DNS
Critères d'Évaluation
| Critère | Points |
|---|---|
| Maîtrise des requêtes DNS (nslookup, dig) | 20% |
| Utilisation d'outils d'énumération | 25% |
| Découverte de sous-domaines | 20% |
| Analyse de configuration et vulnérabilités | 20% |
| Qualité du rapport et recommandations | 15% |
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:
- DNS révèle beaucoup d'informations sur l'infrastructure
- Transferts de zone mal configurés = divulgation complète
- Sous-domaines de dev/test souvent moins sécurisés
- Records TXT peuvent contenir informations sensibles
- É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