
Lepus est un outil pour énumérer les sous-domaines, vérifier les prises de contrôle de sous-domaines et effectuer des scans de ports – et il est rapide, c'est le cas de le dire !
lepus.py yahoo.com
Les modes d'énumération sont les différentes façons dont lepus utilise pour identifier les sous-domaines pour un domaine donné. Ces modes sont :
De plus :
Le mode Collecteurs collecte les sous-domaines à partir des services suivants :
| Service | API Requise |
|---|---|
| Censys | Oui |
| CertSpotter | Non |
| CRT | Non |
| DNSTrails | Oui |
| FOFA | Oui |
| Google Transparency | Non |
| HackerTarget | Non |
| PassiveTotal | Oui |
| Project Discovery Chaos | Oui |
| Project Crobat | Non |
| Project Sonar | Non |
| Riddler | Oui |
| Shodan | Oui |
| Spyse | Oui |
| ThreatCrowd | Non |
| ThreatMiner | Non |
| VirusTotal | Oui |
| Wayback Machine | Non |
| ZoomEye | Oui |
Vous pouvez ajouter vos clés API dans le fichier config.ini.
Le module Collecteurs s'exécutera par défaut sur lepus. Si vous ne souhaitez pas utiliser les collecteurs lors d'une exécution de lepus (pour ne pas épuiser vos limites de clés API), vous pouvez utiliser l'argument -nc ou --no-collectors.
Le mode dictionnaire peut être utilisé lorsque vous souhaitez fournir à lepus une liste de sous-domaines. Vous pouvez utiliser l'argument -w ou --wordlist suivi du fichier. Une liste personnalisée est fournie avec lepus, située dans lists/subdomains.txt. Un exemple d'exécution serait :
lepus.py -w lists/subdomains.txt yahoo.com
Le mode Permutations effectue des modifications sur la liste des sous-domaines identifiés. Pour chaque sous-domaine, un certain nombre de permutations aura lieu en fonction du fichier lists/words.txt. Vous pouvez également fournir une wordlist personnalisée pour les permutations avec l'argument -pw ou --permutation-wordlist, suivi du nom du fichier. Un exemple d'exécution serait :
lepus.py --permutate yahoo.com
ou
lepus.py --permutate -pw customsubdomains.txt yahoo.com
Le mode ReverseDNS rassemblera toutes les adresses IP résolues et effectuera un DNS inversé sur chacune d'elles afin de détecter plus de sous-domaines. Par exemple, si www.example.com résout en 1.2.3.4, lepus effectuera un DNS inversé pour 1.2.3.4 et rassemblera tous les autres sous-domaines appartenant à example.com, par exemple www2, internal ou oldsite.
Pour exécuter le module ReverseDNS, utilisez l'argument --reverse. De plus, --ripe (ou -ripe) peut être utilisé pour demander au module d'interroger la base de données RIPE en utilisant le domaine de second niveau pour les plages réseau potentielles. De plus, lepus prend en charge l'argument --ranges (ou -r). Vous pouvez l'utiliser pour effectuer des résolutions DNS inversées contre les CIDR appartenant au domaine cible.
Par défaut, ce module prendra en compte toutes les IP précédemment identifiées, puis les plages définies, puis les plages identifiées via la base de données RIPE. Si vous souhaitez exécuter le module uniquement contre des plages spécifiques ou identifiées par RIPE, et non contre toutes les IP déjà identifiées, vous pouvez utiliser l'argument --only-ranges (-or).
Un exemple d'exécution serait :
lepus.py --reverse yahoo.com
ou
lepus.py --reverse -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
ou uniquement contre les plages définies ou identifiées par RIPE
lepus.py --reverse -or -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
Astuce : lepus identifiera les ASN et les Réseaux pendant l'énumération, vous pouvez donc également utiliser ces plages pour identifier plus de sous-domaines avec une exécution ultérieure.
Avec ce module, Lepus utilisera les chaînes de Markov afin de s'entraîner, puis de générer des sous-domaines basés sur ceux déjà connus. Plus la surface générale est grande, mieux l'outil pourra s'entraîner et, par conséquent, meilleurs seront les résultats.
Le module peut être activé avec l'argument --markovify. Les paramètres incluent également la taille de l'état de Markov, la longueur maximale de l'ajout de candidat généré et la quantité de candidats générés. Les valeurs prédéfinies sont respectivement 3, 5 et 5. Ces arguments peuvent être modifiés avec -ms (--markov-state), -ml (--markov-length) et -mq (--markov-quantity) selon vos besoins. Gardez à l'esprit que plus ces valeurs sont grandes, plus Lepus aura besoin de temps pour générer les candidats.
Il est à noter que différentes exécutions de ce module peuvent générer des candidats différents, n'hésitez donc pas à l'exécuter plusieurs fois consécutivement. Gardez à l'esprit que plus les valeurs -ms, -ml et -mq sont élevées, plus le temps nécessaire à la génération de candidats sera long.
lepus.py --markovify yahoo.com
ou
lepus.py --markovify -ms 5 -ml 10 -mq 10
Lepus dispose d'une liste de signatures pour identifier si un domaine peut être pris en contrôle. Vous pouvez l'utiliser en fournissant l'argument --takeover. Ce module prend également en charge les notifications Slack, une fois qu'une prise de contrôle potentielle a été identifiée, en ajoutant un token Slack dans le fichier config.ini. Les vérifications sont effectuées contre les services suivants :