Recherche de sous-domaines

As a newcomer to the cybersecurity industry, I'm on an exciting journey of continuous learning and exploration. Join me as I navigate, sharing insights and lessons learned along the way
La recherche de sous-domaines permet d’identifier les sous-domaines rattachés à un domaine principal qui pourraient être vulnérables, et donc des points d’entrée pour des services mal configurés. Le fait de découvrir les sous-domaines permet donc recueillir des informations sur les technologies et configurations utilisées.
Crt.sh
Crt.sh est un outil en ligne qui permet de rechercher et de consulter des certificats SSL/TLS pour divers domaines. Il peut aussi bien être utilisé pour trouver des sous-domaines. En recherchant un domaine principal, on peut voir les certificats associés, mais aussi ceux émis pour ses sous-domaines. Les recherches peuvent donc se poursuivre avec ces sous-domaines avec d’autres outils.
Virus Total
VirusTotal est un outil en ligne qui permet d’analyser des fichiers, des URLs afin de détecter de potentiels virus. Il effectue une analyse complète en utilisant plusieurs moteurs antivirus et outils de détections d’URLs. Il peut aussi être utilisé pour rechercher des sous-domaines et d’autres informations.
Les sous-domaines associés à la recherche seront listés dans l’onglet Relations. La photo ci-dessous montre une liste de sous domaines associés à Amazon.ca.

Amass
Amass est un outil développé par l'OWASP (Open Web Application Security Project) qui est aussi utilisé pour l’identification de sous-domaines et des adresses IP associées en utilisant des sources publiques commes des APIs, des certificats SSL, des DNS etc.
La documentation officielle se retrouve sur GitHub.
Pour installer Amass, utilisez la commande suivante:
go install -v github.com/owasp-amass/amass/v4/...@master
Options
amass enum: ce mode est utilisé pour l’énumération des sous-domaines en utilisant des sources publiques et des techniques de reconnaissance active.amass intel: ce mode est utilisé pour découvrir des domaines et d'autres actifs qui peuvent être explorés plus en détail lors du processus d'énumérationamass enum -d website.com -active -brute -aw /PATH -bl “word“l’option
-dspécifie le domaine dont on veut énumérer les sous-domainesl’option
-activepermet de découvrir des sous-domaines actifsl’option
-awpermet de spécifier un fichier de liste de mots qui sera utilisé pour les altérations des noms des sous-domaines. Cela permet de modifier dynamiquement les sous-domaines en ajoutant des termes dans les noms des sous-domaines non visibles dans les résultats de DNS standards.l’option
-blpermet de spécifier des domaines à exclure de la recherche
L’image ci-dessous montre la commande amass utilisée, qui a découvert plusieurs informations dont des enregistrements MX, A, AAAA et plusieurs autres sous-domaines. On y retrouve aussi des informations ASN de CloudFlare, qui gère probablement les adresses IP de ces sous-domaines là.

Chaos projectdiscovery
Chaos est un projet de ProjectDiscovery qui fournit des informations sur les sous-domaines. Il dispose d’une base données avec un grand nombre de sous-domaines pour les domaines publics, mis à jour régulièrement.

Il suffit donc de télécharger le fichier .zip et on obtient une liste de sous-domaines associés au terme ou au domaine dans la recherche.
Chaos ProjectDiscovery est un projet open-source et peut être aussi utilisé via GitHub. L’utilisation de cet outil avec l’API en ligne de commande est beaucoup plus flexible et puissante en terme de recherches. En utilisant l’outil en ligne de commande, on obtient une liste plus complète, contrairement à la version web où l’utilisation peut ne retourner aucun résultat pour certains domaines
Pour l’installer, utilisez la commande suivante:
go install -v github.com/projectdiscovery/chaos-client/cmd/chaos@latest
Options
chaos -h: cette option liste toutes les options de Chaos ProjectDiscoveryexport PDCP_API_KEY=[API_ KEY]cette option permet de spécifier la clé API qui peut être obtenue simplement en s’inscrivant sur le site
la clé API doit être spécifiée obligatoirement pour l’utilisation en ligne de commande
chaos -d [site.com] -count -o list.txtl’option
-dspécifie le domaine à analyserl’option
-countaffiche le nombre de sous-domaines sans les listerl’option
-ospécifie un fichier (ici list.txt) pour stocker la sortie
chaos -dL [list_domains.txt] -json | grep [STRING] > list.txtl’option
-dLspécifie un fichier contenant une liste de domaines à analyserl’option
-jsonaffiche la sortie en format JSONl’option
grepfiltre les résultats de la recherche selon le string défini et les enregistre dans le fichier list.txt

Subfinder
Subfinder est outil d’énumération de sous-domaines écrit en langage Go, développé par ProjectDiscovery. Il est utilisé pour effectuer une énumération passive des sous-domaines d’un domaine cible, c’est-à-dire, qu'il utilise des sources en ligne publiques pour identifier les sous-domaines sans interagir directement avec les serveurs cibles. Il utilise des sources comme Censys, Chaos, Recon.dev, Shodan, Spyse, Virustotal etc.
La documentation officielle se retrouve sur GitHub.
Pour installer Subfinder, utilisez la commande suivante:
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
Options
subfinder -h: l’option-hpermet de lister toutes les options de subfindersubfinder -ls: l'option-lspermet de lister toutes les sources de données possiblessubfinder -d [site.com] -all -json -cs -o [list.txt]l’option
-dspécifie le domaine à analyserl’option
-allpermet d’utiliser toutes les sources pour l’énumération.l’option
-jsonaffiche la sortie en format JSONl’option
-cspermet d’afficher la source dans le résultat de la commandel’option
-oenregistre les résultats dans un fichier
Ici, on analyse le domaine hackerone.com en affichant les sources de chaque sous-domaine avec l’option -cs, et en excluant les sources du serveur google 8.8.8.8 avec l’option -es.

subfinder -dL [list_domains.txt] -s/-es [SOURCES] -rl [INT]l’option
-dLspécifie un fichier contenant une liste de domaines à analyserl’option
-sspécifie les sources à utiliser lors de la recherchel’option
-esexclut les sources lors de la recherchel’option
-rldétermine le nombre de requêtes https par secondes. Cela limite et évite la surcharge
subfinder -d hackerone.com --active -oIl’option
--activeou-nWvérifie les sous-domaines en temps réel. Elle vérifie si les sous-domaines sont actifs et répondent aux requêtes, sinon, ils ne sont pas listées.l’option
-oIou-ippermet d’inclure les adresses IP des sous-domaines dans le résultat. Cette option ne s’utilise qu’en combinaison avec l’option--activeou-nW

Assetfinder
Assetfinder est aussi un outil développé en langage Go, utilisé pour énumérer des sous-domaines associé à un domaine principal. Il utilise des sources comme, certspotter, hackertarget, facebook, virustotal etc.
La documentation officielle se retrouve sur GitHub.
Pour installer Assetfinder, utilisez la commande suivante:
go install github.com/tomnomnom/assetfinder
Options
assetfinder -h: l’option-hpermet de lister toutes les options de assetfinderassetfinder -subs-only [SITE.COM] > list.txt- l’option
-subs-onlylimite la sortie aux sous-domaines du domaine cible. Cette option est la seule disponible pour assetfinder.
- l’option

Sublist3r
Sublist3r est un outil d’énumération de sous domaines en utilisant des moteurs de recherche et d'autres sources en ligne. Il intègre l’outil Subbrute, un outil de brute force pour l'énumération de sous-domaines, afin d'augmenter la capacité de trouver plus de sous-domaines. Subbrute utilise une liste de mots améliorée pour tester de manière systématique des sous-domaines potentiels.
La documentation officielle se retrouve sur GitHub.
Pour installer Sublist3r, utilisez la commande suivante:
git clone https://github.com/aboul3la/Sublist3r.git
cd Sublist3r
pip install -r requirements.txt
Options
python sublist3r.py -h: l’option-hpermet de lister toutes les options de sublist3rpython sublist3r.py -b -d [site.com] -p 80,21 -o result.txtl’option
-dpermet de spécifier le domaine ciblel’option
-bactive le mode brute force; ceci permet de découvrir les sous-domainesl’option
-pspécifie les ports à tester pour vérifier si un sous-domaine est actif sur ces ports.l’option
-oenregistre les résultats dans un fichier
python sublist3r.py -e google,virustotal -v -d [site.com]l’option
-epermet de spécifier le moteur de recherche à utiliserl’option
-vactive le mode verbeux, ce qui permet d'afficher plus de détails pendant l'exécution du script et les sous-domaines en temps réel.
La commande ci-dessous exécutée, enumère les sous-domaines de google.com et active le mode verbeux, ce qui permet d’afficher les sous-domaines en temps réel.
La commande recherche les sous-domaines sur plusieurs sources dont Baidu, Yahoo,Google,Bing, SSL Certificates etc.


OneForAll
OneForAll est un outil d’énumération de sous-domaines utilisé pour lister les sous-domaines d’un domaine principal. Cet outil utilse plusieurs techniques comme la résolution de DNS, le brute-forcing des sous-domaines et collecte aussi des données à partir de sources publiques que d’autres outils n’interrogent pas généralement. OneForAll règle le problème de puissance ou encore d’efficacité qu’on peut voir avec d’autres outils.
La documentation officielle se retrouve sur GitHub.
Pour installer OneForAll, utilisez les commandes suivantes:
Vérifiez d’abord les versions de Python et pip3 . La version de Python3 doit être supérieure à 3.6.0 et la version de pip3, supérieure à 19.2.2.
python -V
pip3 -V
Clonez le dépôt du projet.
git clone https://github.com/shmilylty/OneForAll.git
Créez un environnement virtuel pour séparer l’installation de votre environnement python.
virtualenv -p python3 .venv
source .venv/bin/activate
Installez les dépendances
cd OneForAll
python3 -m pip install -U pip setuptools wheel
pip3 install -r requirements.txt
Options
python3 oneforall.py -h: cette option permet de lister toutes les options de OneForAllpython oneforall.py --target [site.com] --brute FALSE --dns FALSE --valid TRUE runl’option
--targetpermet de spécifier l’URL ou le domaine à analyserl’option
--brutepermet d’activer/désactiver le module de bruteforce pour rechercher les sous-domaines. Par défaut, l’option est activéel’option
--dnspermet d’activer/désactiver la résolution DNS lors de l’analyse des sous-domaines. Cette option est aussi activée par défaut.l’option
--validpermet de spécifier que seuls les sous-domaines actifs et valides seront pris en compte. L’outil va donc interroger chaque sous-domaine afin de vérifier leur validité.
python oneforall.py --targets list_urls.txt --takeover TRUE --path /PATH/TO/FILE runl’option
--targetspermet de spécifier une liste de domaines contenue dans un fichierl’option
--takeoverpermet de vérifier si un sous-domaine trouvé est vulnérable à une prise de contrôle de sous-domaine (subdomain takeover). Cette option est cruciale dans l’identification des sous-domaines mal configurés. Elle est par défaut désactivée.l’option
--pathspécifie le chemin du fichier où seront stockés les résultats de la collecte de sous-domaines. Lorsqu’un fichier n’est pas spécifié, OneForAll générera automatiquement un fichier de résultats.Comme le montre l’image ci-dessous, l'outil génère automatiquement un fichier
.csvqui répertorie les résultats, dans le dossier/results
Interprétation des résultats

Les résultats de la commande OneForAll sur https://hackerone.com montrent les modules exécutés ainsi que le nombre de sous-domaines trouvés. Par exemple, avec les résultats de cette requête, on voit que le module CertInfo a trouvé 4 sous-domaines en 0,1 seconde, l'accès au site dnsgrep.cn a été refusé (statut403) et d’autres informations.

Les serveurs a.ns.hackerone.com et b.ns.hackerone.com ont aussi été trouvés, ce qui a permis de retourner les adresses IP 162.159.0.31 et 162.159.1.31.
Les sous-domaines trouvés seront répertoriés dans le dossier /results par défaut dans un fichier csv qui peut être compliqué à lire. Vous pouvez formater les colonnes à l’affichage avec les commandes column et less:
column -s, -t < hackerone.com.csv | less -#2 -N -S
L’option
-s,(-s suivi de la virgule) spécifie que la virgule ( , ) est le délimiteur qui sépare les colonnes dans le fichier csvL’option
-tindique à column de créer un tableau avec des colonnes alignées< hackerone.com.csvpermet une redirection du contenu du fichier hackerone.com.csv comme entrée pour la commande columnless -#2 -N -Spermet de paginer la sortie avecless, affiche les numéros de ligne avec-N, permet un défilement horizontal avec-S, et définit l'espacement des tabulations à 2 avec-#2. Vous pouvez quitter l’affichage avec la toucheq.
Le fichier avec les résultats avec un affiche standard se présente comme suit:

On passe donc de l’affichage de l’image au dessus à ceux en dessous avec la commande column -s, -t < hackerone.com.csv | less -#2 -N -S .


L’énumération de sous-domaines est une étape cruciale dans la collecte d’informations, permettant d’identifier des parties d’un domaine qui pourraient être mal configurées ou vulnérables. Avec des outils comme OneForAll, Subfinder pour une recherche passive, Assetfinder pour sa rapidité, et Sublist3r pour combiner recherche passive et brute force, on a donc des informations précieuses sur l'infrastructure d'un domaine
À noter, qu’il est important de rappeler que l'utilisation de ces outils doit toujours se faire dans un cadre légal.



