Dome es un script Python rápido y fiable que realiza un escaneo activo y/o pasivo para obtener subdominios y buscar puertos abiertos. Esta herramienta está recomendada para los bug bounty hunters y pentester en su fase de reconocimiento.
Si quieres utilizar más motores OSINT, rellena el archivo config.api
con los tokens de API necesarios
Modo pasivo
Utiliza técnicas OSINT para obtener subdominios del objetivo. Este modo no realizará ninguna conexión con el objetivo por lo que es indetectable. El uso básico de este modo es:
python dome.py -m passive -d domain
Modo activo
Realiza ataques de fuerza bruta para obtener subdominios vivos. Hay 2 tipos de fuerza bruta:
- Fuerza bruta pura: Comprueba los subdominios desde a.dominio.com hasta zzz.dominio.com (26 + 26^2 + 26^3 = 18278 subdominios) esta fuerza bruta se puede desactivar con
-nb, --no-bruteforce
- Basado en una lista de palabras: Utiliza una lista de palabras personalizada proporcionada por el usuario mediante la flag
-w, --wordlist
. Si no se especifica ninguna lista de palabras, este modo no se ejecutará
Este modo también realizará el ataque en modo pasivo, pero en este caso, se comprueba la conexión para asegurarse de que el subdominio sigue vivo. Para desactivar el escaneo pasivo en el modo de escaneo activo, utiliza la flag --no-passive
.
El uso básico de este modo es:
python dome.py -m active -d domain -w wordlist.txt
Añade la opción -p
o una opción de puerto incorporada (véase el menú de uso) para realizar el escaneo de puertos.
python dome.py -m active -d domain -w wordlist.txt -p 80,443,8080
Instalación
Puedes ejecutar Dome con Python 2 o 3. Se recomienda Python3
Instala las dependencias y ejecuta el programa:
git clone https://github.com/v4d1/Dome.git
cd Dome
pip install -r requirements.txt
python dome.py --help
Características principales
- Fácil de usar. Sólo tiene que instalar el requirements.txt y ejecutar
- Escaneo activo y pasivo (leer arriba)
- Más rápido que otras herramientas de enumeración de subdominios
- 7 resolvedores/servidores de nombres diferentes, incluyendo google, cloudfare (el más rápido), Quad9 y cisco DNS ( usa –resolvers filename.txt para usar una lista personalizada de resolvedores, uno por línea)
- Hasta 21 fuentes OSINT diferentes
- Los subdominios obtenidos a través de OSINT se prueban para saber si están vivos (sólo en modo activo)
- Soporte para webs que requieren token de API
- Detecta cuando la clave API deja de funcionar (Otras herramientas sólo arrojan un error y dejan de funcionar)
- Detección de Wildcard y bypass
- Escaneo de puertos personalizado y parámetros incorporados para los puertos Top100, Top1000 y Top Web
- Salida coloreada y no coloreada para facilitar la lectura
- Soporte para Windows y Python 2/3 (se recomienda Python 3)
- Altamente personalizable a través de argumentos
- Escanea más de un dominio simultáneamente
- Posibilidad de usar hilos para escaneos más rápidos por fuerza bruta
- Exportación de la salida en diferentes formatos como txt, json, html
Capturas de pantalla
Modo pasivo:
Modo activo + escaneo de puertos:
Motores de búsqueda OSINT
Dome utiliza estas páginas web para obtener subdominios
Sin API:
- AlienVault
- HackerTarget
- RapidDNS
- ThreatMiner
- urlscan.io
- threatcrowd.org
- web.archive.org
- crt.sh
- bufferover.run
- CertSpotter
- Anubis-DB
- Hunt.io
- Sónar
- SiteDossier
- DNSrepo
Con API:
- VirusTotal
- Shodan
- Spyse
- SecurityTrails
- PassiveTotal
- BinaryEdge
Uso
Argumentos | Descripción | Ejemplo |
---|---|---|
-m, –mode | Modo de escaneo. Opciones válidas: active o pasive | active |
-d, –domain | Nombre de los dominios para enumerar los subdominios (separados por comas) | hackerone.com,facebook.com |
-w, –wordlist | Lista de palabras que contiene el prefijo del subdominio a forzar | subdomains-5000.txt |
-i, –ip | Cuando se encuentra un subdominio, muestra su ip | |
–no-passive | No utilizar técnicas OSINT para obtener subdominios válidos | |
-nb, –no-bruteforce | No hacer fuerza bruta pura hasta 3 letras | |
-p, –ports | Escanear los subdominios encontrados contra puertos tcp específicos | 80,443,8080 |
–top-100-ports | Escanea los 100 puertos principales del subdominio (No es compatible con la opción -p) | |
–top-1000-ports | Escanea los 1000 puertos principales del subdominio (No es compatible con la opción -p) | |
–top-web-ports | Escanear los principales puertos web del subdominio (No es compatible con la opción -p) | |
-s, –silent | Modo silencioso. No hay salida en terminal | |
–no-color | No imprimir en color | |
-t, –threads | Número de hilos a utilizar (por defecto: 25) | 20 |
-o, –output | Guardar los resultados en archivos txt, json y html | |
–max-response-size | Longitud máxima de la respuesta HTTP (Por defecto: 5000000 (5MB)) | 1000000 |
–r, –resolvers | Archivo de texto con los resolvedores DNS a utilizar. Uno por línea | resolvers.txt |
-h, –help | Comando de ayuda | |
–version | Mostrar la versión de dome y salir | |
-v, –verbose | Mostrar más información durante la ejecución |
Ejemplos
Realiza un escaneo activo y pasivo, muestra la dirección ip de cada subdominio y realiza un escaneo de puertos utilizando top-web-ports. Los datos también se escribirán en la carpeta /results
:
python dome.py -m active -d domain -w wordlist.txt -i --top-web-ports -o
Realiza un escaneo pasivo en modo silencioso y escribe el resultado en archivos.
python dome.py -m passive -d domain --silent --output
Realizar un escaneo activo sin escaneo pasivo y de puertos
python dome.py -m active -d domain -w wordlist.txt --no-passive
Sólo fuerza bruta con lista de palabras
python dome.py -m active -d domain -w wordlist.txt --no-bruteforce
Escanea activo y pasivo y realiza un escaneo de puertos SOLO en los puertos 22,80 y 3306
python dome.py -m active -d domain -w wordlist.txt -p 22,80,3306
Dome (este enlace se abre en una nueva ventana) por v4d1 (este enlace se abre en una nueva ventana)
Dome – Subdomain Enumeration Tool. Fast and reliable python script that makes active and/or passive scan to obtain subdomains and search for open ports.