Try   HackMD

Phase de Reconnaissance | subdomain enumeration

L'énumération des sous-domaines est une technique cruciale dans le domaine de la cybersécurité, permettant de découvrir l'infrastructure web complète d'une organisation. Ce guide présente les outils les plus efficaces pour cette tâche, leurs caractéristiques, et comment les utiliser de manière responsable.

Qu’est-ce qu’un sous-domaine ?

Un sous-domaine est un domaine de deuxième niveau qui fait partie d’un domaine plus vaste. Par exemple, www.google.com serait un sous-domaine de google.com. Dans ce cas, « www » serait le sous-domaine, « ceeyu » serait le domaine racine et « com » serait le domaine de premier niveau (TLD).

Les sous-domaines peuvent être utilisés à diverses fins, par exemple pour héberger un blog, un site de commerce électronique ou même un site Web entièrement différent du domaine racine. Les sous-domaines sont souvent utilisés pour séparer différents services ou fonctionnalités au sein d’une organisation.

Qu’est-ce que l’énumération des sous-domaines ?

L’énumération des sous-domaines est le processus d’identification de tous les sous-domaines pour un domaine donné. Cela peut être utile à diverses fins, telles que l’identification de cibles potentielles pour une attaque ou simplement à des fins organisationnelles.

Il existe plusieurs raisons pour lesquelles vous souhaiterez peut-être énumérer tous les sous-domaines d’un domaine donné :

  1. Identifier les cibles potentielles d’une attaque : En énumérant tous les sous-domaines, vous pourrez peut-être trouver des sous-domaines moins bien protégés que le domaine racine, ce qui les rend plus vulnérables aux attaques.

  2. Obtenir des informations sur l’organisation : L’énumération des sous-domaines peut donner un aperçu de la structure d’une organisation, des services qu’elle offre, etc.

  3. Rechercher des entrées DNS mal configurées : Les organisations peuvent avoir des entrées DNS mal configurées qui révèlent des informations sensibles, telles que des adresses IP internes.

Comment effectuer l'énumération des sous-domaines ?

L’énumération commence par une liste de noms de domaine et tente de trouver des noms d’hôte qui se résolvent en adresses IP. Cela peut être fait en interrogeant les serveurs DNS publics ou en consultant des enregistrements publics tels que la base de données WHOIS.

Il existe deux approches pour effectuer l’énumération des sous-domaine, c'est-à-dire active ou passive.


A. Énumération passive des sous-domaines

L’énumération passive des sous-domaines est effectuée à l’aide de données accessibles au public, telles que les résultats des moteurs de recherche, l’interrogation des enregistrements DNS sur les serveurs DNS, etc. Certaines des techniques d’énumération DNS passive sont :

Transparence des certificats

Certificate Transparency (CT) est une initiative de Google pour améliorer la sécurité des certificats SSL/TLS en les rendant accessibles au public. Tout certificat SSL/TLS émis par une autorité de certification participant à CT sera consigné dans un ou plusieurs journaux de transparence des certificats (CTL) publics. Pour trouver des sous-domaines à l’aide de CT, vous pouvez utiliser des explorateurs de journaux CT accessibles au public, tels que crt.sh ou CT Log Explorer. Entrez simplement le nom de domaine que vous souhaitez énumérer pour obtenir une liste de sous-domaines enregistrés.

Google Dorking

Google dorking est une technique permettant de trouver des informations non destinées à être accessibles au public. Pour l’énumération de sous-domaines, recherchez site:example.com dans Google (en remplaçant example.com par le domaine que vous souhaitez énumérer). Cela renverra une liste de tous les sites Web hébergés sur le domaine example.com.

Agrégateurs DNS

Les agrégateurs DNS permettent de vérifier plusieurs serveurs DNS à la fois pour voir s’ils sont correctement configurés. Un agrégateur DNS populaire est VirusTotal. Entrez simplement un domaine pour obtenir une liste de tous les sous-domaines.

Énumération ASN

L’énumération ASN (Autonomous System Number) vous permet d’identifier toutes les organisations qui utilisent une adresse IP donnée. Cela peut être fait en interrogeant le numéro de système autonome (AS) d’une organisation à partir de bases de données publiques telles que RIPE ou ARIN. Une fois identifiées, les serveurs de noms des organisations peuvent être interrogés pour trouver des sous-domaines.

Subject Alternate Name (SAN)

Un SAN (Subject Alternate Name) est une extension d’un certificat SSL/TLS permettant d’associer plusieurs noms de domaine à un seul certificat. Chaque SAN représente généralement un sous-domaine différent. Pour trouver le SAN d’un certificat donné, utilisez un outil tel que Certificate Inspector de SSLMate ou les outils de développement de Google Chrome.


B. Énumération active des sous-domaines

L’énumération active des sous-domaines est effectuée en interagissant avec le domaine cible via des requêtes Web, des requêtes DNS, etc. Ces données sont généralement collectées manuellement et nécessitent un certain niveau d’interaction avec le domaine cible.

Énumération par force brute

L’énumération par force brute consiste à essayer de se connecter à chaque sous-domaine à tour de rôle, soit manuellement soit avec des outils automatisés tels que Sublist3r et Knock. Cela peut se faire en utilisant des listes de mots contenant des noms de sous-domaines possibles.

Transfert de zone

Un transfert de zone DNS consiste à obtenir des informations sur tous les serveurs de noms et domaines pour un domaine donné. Cette méthode est souvent bloquée par des pare-feu modernes, mais elle peut être utilisée pour identifier tous les sous-domaines existants pour un domaine.

En-tête HTTP Content Security Policy (CSP)

L'en-tête HTTP CSP peut être utilisé pour restreindre les sources à partir desquelles un navigateur peut charger du contenu. En essayant de charger des ressources à partir de sous-domaines spécifiques et en observant les réponses, il est possible d'identifier les sous-domaines accessibles.

Outils d'énumération de sous-domaines

Sublist3r

Sublist3r est un outil Python conçu pour énumérer les sous-domaines de sites Web en utilisant OSINT. Il utilise de nombreux moteurs de recherche tels que Google, Yahoo, Bing, Baidu et Ask, ainsi que d'autres sources comme Netcraft, Virustotal, ThreatCrowd, DNSdumpster et ReverseDNS1.

Installation

git clone https://github.com/aboul3la/Sublist3r.git
cd Sublist3r
pip install -r requirements.txt

Utilisation

# Énumérer les sous-domaines d'un domaine spécifique
python sublist3r.py -d example.com

# Énumérer les sous-domaines et afficher uniquement ceux avec les ports 80 et 443 ouverts
python sublist3r.py -d example.com -p 80,443

# Énumérer les sous-domaines en temps réel
python sublist3r.py -v -d example.com

# Énumérer les sous-domaines avec le module de bruteforce activé
python sublist3r.py -b -d example.com

# Utiliser des moteurs spécifiques
python sublist3r.py -e google,yahoo,virustotal -d example.com

Subfinder

Subfinder est un outil rapide et précis pour la découverte de sous-domaines, utilisant diverses sources d'informations7.

Installation

GO111MODULE=on go get -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder

Utilisation

# Énumérer les sous-domaines
subfinder -d example.com

# Sauvegarder les résultats dans un fichier
subfinder -d example.com -o subdomains.txt

Findomain

Findomain est un outil rapide et efficace écrit en Rust pour la recherche de sous-domaines7.

Installation

# Télécharger la dernière version
curl -LO https://github.com/Findomain/Findomain/releases/latest/download/findomain-linux
chmod +x findomain-linux
sudo mv findomain-linux /usr/local/bin/findomain
Utilisation
bash
# Énumérer les sous-domains
findomain -t example.com

# Sauvegarder les résultats dans un fichier
findomain -t example.com -o

Assetfinder

Assetfinder est un outil de découverte de sous-domaines développé par tomnomnom, conçu pour être rapide et efficace7.

Installation

go install github.com/tomnomnom/assetfinder@latest

Utilisation

# Énumérer les sous-domaines
assetfinder --subs-only example.com

# Sauvegarder les résultats dans un fichier
assetfinder --subs-only example.com > subdomains.txt

Amass

Amass est un outil puissant pour l'énumération de sous-domaines, utilisant des techniques passives et actives2.
####Installation

GO111MODULE=on go get -v github.com/OWASP/Amass/v3/...

Utilisation

# Énumération passive
amass enum -passive -d example.com -o passive_subdomains.txt

# Énumération active avec bruteforce
amass enum -active -brute -d example.com -o active_subdomains.txt
Outil Description Commandes
Amass Énumération passive et active de sous-domaines amass enum -passive -d example.com -o passive_subdomains.txt
amass enum -active -brute -d example.com -o active_subdomains.txt
Subfinder Découverte rapide de sous-domaines subfinder -d example.com -o subdomains.txt
MassDNS Résolution rapide de sous-domaines cat subdomains.txt | massdns -r resolvers.txt -t A -o S -w massdns_output.txt

Outils d'Analyse et de Classification

Outil Description Commandes
DNSDumpster Visualisation des relations entre sous-domaines dnsdumpster -d example.com -o dnsdumpster_output.html
Aquatone Capture d'écran des sous-domaines cat subdomains.txt | aquatone -out aquatone_report

Outils de Recherche de Vulnérabilités

Outil Description Commandes
Subjack Détection des sous-domaines vulnérables subjack -w subdomains.txt -t 100 -timeout 30 -ssl -c fingerprints.json -v
CanIBePwned Vérification de prise de contrôle de sous-domaines canibepwned -d subdomains.txt
XSStrike Détection des vulnérabilités XSS xsstrike -u https://subdomain.example.com
Dalfox Analyse des paramètres URL pour XSS dalfox url https://subdomain.example.com
CORScanner Détection des erreurs de configuration CORS corscanner -u https://subdomain.example.com

Outils d'Exploitation Avancée

Outil Description Commandes
HostileSubBrute Exploitation des sous-domaines vulnérables hostilesubbrute -d example.com -w subdomains.txt -o takeover.txt
Burp Suite Exploitation des failles et maintien de la persistance Utilisation de Burp Collaborator et injection de scripts malveillants