
Lepus es una herramienta para enumerar subdominios, verificar la posibilidad de toma de control de subdominios y realizar escaneos de puertos. ¡Y vaya que es rápida!
lepus.py yahoo.com
Los modos de enumeración son las diferentes formas que Lepus utiliza para identificar subdominios de un dominio dado. Estos modos son:
Además:
El modo Colectores recopila subdominios de los siguientes servicios:
| Servicio | API Requerida |
|---|---|
| Censys | Sí |
| CertSpotter | No |
| CRT | No |
| DNSTrails | Sí |
| FOFA | Sí |
| Google Transparency | No |
| HackerTarget | No |
| PassiveTotal | Sí |
| Project Discovery Chaos | Sí |
| Project Crobat | No |
| Project Sonar | No |
| Riddler | Sí |
| Shodan | Sí |
| Spyse | Sí |
| ThreatCrowd | No |
| ThreatMiner | No |
| VirusTotal | Sí |
| Wayback Machine | No |
| ZoomEye | Sí |
Puedes añadir tus claves de API en el archivo config.ini.
El módulo de Colectores se ejecutará por defecto en Lepus. Si no deseas usar los colectores durante una ejecución de Lepus (para no agotar los límites de tus claves de API), puedes usar el argumento -nc o --no-collectors.
El modo diccionario se puede usar cuando quieras proporcionar a Lepus una lista de subdominios. Puedes usar el argumento -w o --wordlist seguido del archivo. Una lista personalizada viene con Lepus ubicada en lists/subdomains.txt. Un ejemplo de ejecución sería:
lepus.py -w lists/subdomains.txt yahoo.com
El modo Permutaciones realiza cambios en la lista de subdominios que han sido identificados. Para cada subdominio, se realizarán una serie de permutaciones basadas en el archivo lists/words.txt. También puedes proporcionar una lista de palabras personalizada para las permutaciones con el argumento -pw o --permutation-wordlist, seguido del nombre del archivo. Un ejemplo de ejecución sería:
lepus.py --permutate yahoo.com
o
lepus.py --permutate -pw customsubdomains.txt yahoo.com
El modo DNS Inverso recopilará todas las direcciones IP que se resolvieron y realizará un DNS inverso en cada una para detectar más subdominios. Por ejemplo, si www.example.com resuelve a 1.2.3.4, Lepus realizará un DNS inverso para 1.2.3.4 y recopilará cualquier otro subdominio perteneciente a example.com, por ejemplo, www2, internal o oldsite.
Para ejecutar el módulo de DNS Inverso usa el argumento --reverse. Además, se puede usar --ripe (o -ripe) para indicar al módulo que consulte la base de datos de RIPE usando el dominio de segundo nivel para posibles rangos de red. Además, Lepus soporta el argumento --ranges (o -r). Puedes usarlo para realizar resoluciones DNS inversas contra CIDR que pertenezcan al dominio objetivo.
Por defecto, este módulo tomará en cuenta todas las IPs previamente identificadas, luego los rangos definidos y luego los rangos identificados a través de la base de datos de RIPE. En caso de que solo quieras ejecutar el módulo contra rangos específicos o identificados por RIPE, y no contra todas las IPs ya identificadas, puedes usar el argumento --only-ranges (-or).
Un ejemplo de ejecución sería:
lepus.py --reverse yahoo.com
o
lepus.py --reverse -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
o solo contra los rangos definidos o identificados por RIPE
lepus.py --reverse -or -ripe -r 172.216.0.0/16,183.177.80.0/23 yahoo.com
Sugerencia: Lepus identificará ASNs y Redes durante la enumeración, por lo que también puedes usar estos rangos para identificar más subdominios en una ejecución posterior.
Con este módulo, Lepus utilizará cadenas de Markov para entrenarse y luego generar subdominios basados en los ya conocidos. Cuanto mayor sea la superficie general, mejor podrá la herramienta entrenarse y, posteriormente, mejores serán los resultados.
El módulo se puede activar con el argumento --markovify. Los parámetros también incluyen el tamaño del estado de Markov, la longitud máxima de la adición candidata generada y la cantidad de candidatos generados. Los valores predefinidos son 3, 5 y 5 respectivamente. Esos argumentos se pueden cambiar con -ms (--markov-state), -ml (--markov-length) y -mq (--markov-quantity) según tus necesidades. Ten en cuenta que cuanto mayores sean estos valores, más tiempo necesitará Lepus para generar los candidatos.
Cabe señalar que diferentes ejecuciones de este módulo pueden generar candidatos diferentes, así que siéntete libre de ejecutarlo varias veces consecutivas. Ten en cuenta que cuanto más altos sean los valores de -ms, -ml y -mq, más tiempo se necesitará para la generación de candidatos.
lepus.py --markovify yahoo.com
o
lepus.py --markovify -ms 5 -ml 10 -mq 10
Lepus tiene una lista de firmas para identificar si un dominio puede ser tomado. Puedes usarlo proporcionando el argumento --takeover. Este módulo también soporta notificaciones de Slack, una vez que se haya identificado una posible toma de control, añadiendo un token de Slack en el archivo config.ini. Las comprobaciones se realizan contra los siguientes servicios:
El módulo de escaneo de puertos verificará los puertos abiertos contra un objetivo y los registrará en los resultados. Puedes usar el argumento --portscan, que por defecto escaneará los puertos 80, 443, 8000, 8080, 8443. También puedes usar puertos personalizados o elegir un conjunto predefinido de puertos.