Bienvenidos a un nuevo post en ByteMind, en el caso de hoy vamos a tratar el arte de encontrar subdominios sobre un dominio dado, una tarea que de forma manual podría llevar una eternidad pero que mediante el uso de una serie de herramientas puede realizar esta ardua tarea en cuestión de segundos.
En un post anterior vimos como realizar enumeración sobre nombres de dominio, pero dejamos para un futuro el realizar esta tarea sobre subdominios, así que vamos ahora con ello.
Índice
Cómo funcionan los escáneres de subdominios
Para ver que tareas se realizan con estas herramientas vamos a tratar primero los métodos más populares para obtener este tipo de información.
Consultas en los motores de búsqueda
Las técnicas de piratería de Google se utilizan a menudo para encontrar los subdominios de cualquier nombre de dominio, lo que implica un comando tan simple como:
1 |
site:example.com -www |
El comando anterior puede devolver la lista de subdominios indexados en google. Si bien este tipo de consultas no son en tiempo real, ya que provienen de los últimos rastreos de logs Bot de Google, a menudo, es muy útil para encontrar todos aquellos subdominios que no están protegidos por configuraciones de robots.txt o aquellos que no utilizan metaetiquetas noindex.
Muchos de los motores de escáner de subdominios online y herramientas se basan en este tipo de consultas a motores de búsqueda como Google, Yahoo o Bing.
Enumeración por fuerza bruta
Algunas herramientas de enumeración de subdominios utilizan técnicas de fuerza bruta y fuerza bruta recursiva para la generación de lisas de subdominios, en la mayoría de ocasiones mediante la combinación con listas de palabras.
Aunque no es una de las formas más rápidas de realizar este tipo de búsquedas, sí que puede ser una de las más precisas.
En este caso se pueden utilizar herramientas (entre otras) como Amass, Fierce, SubBrute, etc.
Descubrimiento por medio de transferencia de zona DNS
Una transferencia de zona DNS es la forma de replicar completamente una zona DNS remota, y por lo tanto, es la más exacta que podemos utilizar.
Cabe destacar que esta técnica funciona sólo cuando la zona DNS no está protegida o limitada para las solicitudes AXFR. Aunque la gran mayoría de servidores DNS están parcheados ante este tipo de solicitudes, merece la pena intentar combinarlo con la exploración basada en fuerza bruta ya que hay ocasiones en las que se protege alguno de los Name Server pero no todos ellos, haciendo posible la explotación de este tipo de ataque.
Obtención de información pública por certificados SSL / TLS
Los certificados SSL / TLS son útiles para cifrar los datos enviados y recibidos entre navegdores y servidores, pero también para investigar la seguridad de estos.
El nombre alternativo del sujeto (SAN) de los certificados puede utilizarse para extraer nombres de dominio y subdominio. En este caso, combinando con secuencias de comandos de Python o Bash (entre otros) puede ayudar en la búsquda rápida y sencilla de subdominios.
Herramientas para la enumeración de subdominios
SubBrute
SubBrute es una de las herramientas de enumeración de subdominios por fuerza bruta más rápidas. Además tiene la capacidad de ocultar el origen del escaneo mediante el uso de resolutores abiertos como proxy para los límites de velocidad DNS.
Otra opción es que puede funcionar como un spider de DNS que rastrea de forma recursiva registros enumerados lo que lo convierte en un conjunto de herramientas completo frente a este tipo de ataques.
La sintaxis del comando es sencilla como se aprecia en el siguiente ejemplo:
1 |
$ ./subbrute.py google.com -o google.names |
Y podemos ver un ejemplo en funcionamiento a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$ ./subbrute.py google.com -o google.names google.com www.google.com aspmx.l.google.com _tcp.google.com alt3.aspmx.l.google.com alt4.aspmx.l.google.com alt1.aspmx.l.google.com alt2.aspmx.l.google.com _spf.google.com _netblocks.google.com _netblocks2.google.com _netblocks3.google.com _tls.google.com _domainkey.google.com _caldav._tcp.google.com _jabber-client._tcp.google.com xmpp.l.google.com alt2.xmpp.l.google.com alt3.xmpp.l.google.com alt4.xmpp.l.google.com alt1.xmpp.l.google.com _jabber._tcp.google.com alt2.xmpp-server.l.google.com alt4.xmpp-server.l.google.com alt3.xmpp-server.l.google.com --------- |
Al igual que la gran mayoría de tools dispone de una ayuda con el siguiente comando:
1 |
$ ./subbrute.py -h |
Pero además de esto nos permite la posibilidad de escanear un tipo concreto de registro DNS, por ejemplo TXT
1 |
$ ./subbrute.py -s google.names google.com --type TXT |
Y también dispone de la posibilidad de integrar el mismo en nuestros propios scripts en Python para automatizar tareas más complejas. La forma de implementarlo podemos verla en el siguiente ejemplo:
1 2 3 |
import subbrute for i in subbrute.run("google.com"): print i |
Sublist3r
Sublist3r es una herramienta basada en Python que se puede utilizar como escáner de subdominios masivo.
Realiza búsquedas sobres motores como Bing, Google, Yahoo, etc y otras fuentes de terceros como Netcraft o VirusTotal por lo que puede ser una de las herramientas más efectivas y rápidas cuando se desea realizar este tipo de enumeración.
Además, esta herramienta permite también utilizar diccionarios de palabras para realizar ataques de fuerza bruta en la búsqueda de subdominios.
Para su instalación los requisitos mínimos son los siguientes:
- Python 2.7.x
- Python 3.4.x
Para realizar la instalación se deberá de descargar el repositorio en github:
1 |
git clone https://github.com/aboul3la/Sublist3r.git |
Y la instalación de las librerías necesarias:
1 |
sudo pip install -r requirements.txt |
Una vez instalado se puede realizar un escaneo con el siguiente comando como ejemplo
1 |
python sublist3r.py -d example.com |
Veamos un ejemplo de esta tool en funcionamiento:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
$ sublist3r -d wikipedia.com ____ _ _ _ _ _____ / ___| _ _| |__ | (_)___| |_|___ / _ __ \___ \| | | | '_ \| | / __| __| |_ \| '__| ___) | |_| | |_) | | \__ \ |_ ___) | | |____/ \__,_|_.__/|_|_|___/\__|____/|_| # Coded By Ahmed Aboul-Ela - @aboul3la [-] Enumerating subdomains now for wikipedia.com [-] Searching now in Baidu.. [-] Searching now in Yahoo.. [-] Searching now in Google.. [-] Searching now in Bing.. [-] Searching now in Ask.. [-] Searching now in Netcraft.. [-] Searching now in DNSdumpster.. [-] Searching now in Virustotal.. [-] Searching now in ThreatCrowd.. [-] Searching now in SSL Certificates.. [-] Searching now in PassiveDNS.. [!] Searching now in Virustotal [-] Total Unique Subdomains Found: 75 www.wikipedia.com 0.wikipedia.com af.wikipedia.com ar.wikipedia.com bg.wikipedia.com ca.wikipedia.com ch.wikipedia.com commons.wikipedia.com cs.wikipedia.com cy.wikipedia.com cz.wikipedia.com ---- |
Y podemos ver su amplia ayuda con la opción -h
1 |
python sublist3r.py -h |
Además de ello también incluye una opción muy interesante para la búsqueda en ciertos puertos abiertos. Como vemos en el siguiente ejemplo, sólo realizará el escaneo contra aquellos host que tengan los puertos 80 y/o 443 abiertos al público
1 |
python sublist3r.py -d example.com -p 80,443 |
Knock
Knock es otra herramienta basada en Python que ayuda a los investigadores con el proceso de recopilación de información.
Su funcionamiento se basa en realizar una transferencia de zona DNS completa y, en caso de fallar, puede ejecutar una consulta en la base de datos de VirusTotal.
Es un programa muy simple pero que es de gran ayuda en este tipo de búsqueda.
Antes de proceder a la instalación es necesario instalar la librería de python dnspython
1 |
sudo apt-get install python-dnspython |
Y después descargar la tool desde su repositorio en github
1 |
git clone https://github.com/guelfoweb/knock.git |
Posteriormente, y antes de su instalación, se requiere configurar la API de VirusTotal en el fichero config.json si se desea utilizar esta funcionalidad, e instalar la herramienta con el comando
1 |
python setup.py install |
Completados estos pasos ya se puede ejecutar la misma como en el siguiente ejemplo
1 |
knockpy example.com |
Aunque veamos un ejemplo de su ejecución:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
sudo knockpy wikipedia.com _ __ _ | |/ / | | 4.1.1 | ' / _ __ ___ ___| | ___ __ _ _ | < | '_ \ / _ \ / __| |/ / '_ \| | | | | . \| | | | (_) | (__| <| |_) | |_| | |_|\_\_| |_|\___/ \___|_|\_\ .__/ \__, | | | __/ | |_| |___/ + checking for virustotal subdomains: YES [ "www.wikipedia.com", "ka.wikipedia.com", "ia.wikipedia.com", "mk.wikipedia.com", "smn.wikipedia.com", "gom.wikipedia.com", "km.wikipedia.com", "am.wikipedia.com", "meta.wikipedia.com", "sh.wikipedia.com", "om.wikipedia.com", "mni.wikipedia.com", "frr.wikipedia.com", "min.wikipedia.com", "mrj.wikipedia.com", "mt.wikipedia.com", ----- |
El mismo análisis también proporciona otros datos útiles como la dirección IP, el estado de la respuesta, nombre de dominio y host del servidor detectado de forma remota.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
+ checking for zonetransfer: NO + resolving target: YES - scanning for subdomain... Ip Address Status Type Domain Name Server ---------- ------ ---- ----------- ------ 91.198.174.194 301 alias 15.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias aa.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias ab.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias af.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias ak.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias am.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias an.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias ar.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias arz.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias as.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias ast.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 91.198.174.194 301 alias av.wikipedia.com nginx/1.14.2 91.198.174.194 301 host ncredir-lb.wikimedia.org nginx/1.14.2 ------- |
También es posible iniciar escaneos mediante listados de palabras personalizados con la opción -w:
1 |
knockpy example.com -w wordlist.txt |
Amass
Amass es una de las mejores herramientas cuando se trata de la enumeración de subdominios, escrito por Jeff Foley, es uno de los comandos basados en terminal más poderosos para la recopilación y acumulación de grandes cantidades de datos de subdominios.
Utiliza una variedad de técnicas de mapeo de subdominios que incluyen scrapping, fuerza bruta recursiva, barrido de DNS inverso y aprendizaje automático.
La instalación de Amass es sencilla utilizando los paquetes precompilados o mediante el uso de snap en Kali Linux y otras distribuciones simplemente escribiendo:
1 |
snap install amass |
Una vez instalado o descargados los paquetes precompilados en go podemos ejecutarlo como vemos en el siguiente ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
$ amass enum -d wikipedia.com Querying Sublist3rAPI for wikipedia.com subdomains Querying URLScan for wikipedia.com subdomains Querying ThreatCrowd for wikipedia.com subdomains Querying Spyse for wikipedia.com subdomains Querying ViewDNS for wikipedia.com subdomains Querying VirusTotal for wikipedia.com subdomains Querying Robtex for wikipedia.com subdomains Querying Riddler for wikipedia.com subdomains Querying SiteDossier for wikipedia.com subdomains Querying Yahoo for wikipedia.com subdomains Querying AlienVault for wikipedia.com subdomains Querying CommonCrawl for wikipedia.com subdomains Querying Ask for wikipedia.com subdomains Querying CertSpotter for wikipedia.com subdomains Querying BufferOver for wikipedia.com subdomains Querying Baidu for wikipedia.com subdomains Querying Censys for wikipedia.com subdomains Querying Bing for wikipedia.com subdomains Querying Crtsh for wikipedia.com subdomains Querying IPv4Info for wikipedia.com subdomains Querying Entrust for wikipedia.com subdomains Querying PTRArchive for wikipedia.com subdomains Querying Pastebin for wikipedia.com subdomains Querying Google for wikipedia.com subdomains Querying DNSDumpster for wikipedia.com subdomains Querying DNSTable for wikipedia.com subdomains Querying Dogpile for wikipedia.com subdomains Querying HackerOne for wikipedia.com subdomains Querying Exalead for wikipedia.com subdomains Querying Mnemonic for wikipedia.com subdomains Querying GoogleCT for wikipedia.com subdomains Querying HackerTarget for wikipedia.com subdomains Querying Netcraft for wikipedia.com subdomains wikipedia.com pl.wikipedia.com et.wikipedia.com th.wikipedia.com ka.wikipedia.com cs.wikipedia.com sw.wikipedia.com se.wikipedia.com wuu.wikipedia.com te.wikipedia.com jv.wikipedia.com it.wikipedia.com kr.wikipedia.com ta.wikipedia.com |
Hemos visto una simple prueba pero las múltiples opciones disponibles pueden verse desde la ayuda de la tool con la opción -h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
$ amass -h .+++:. : .+++. +W@@@@@@8 &+W@# o8W8: +W@@@@@@#. oW@@@W#+ &@#+ .o@##. .@@@o@W.o@@o :@@#&W8o .@#: .:oW+ .@#+++&#& +@& &@& #@8 +@W@&8@+ :@W. +@8 +@: .@8 8@ @@ 8@o 8@8 WW .@W W@+ .@W. o@#: WW &@o &@: o@+ o@+ #@. 8@o +W@#+. +W@8: #@ :@W &@+ &@+ @8 :@o o@o oW@@W+ oW@8 o@+ @@& &@+ &@+ #@ &@. .W@W .+#@& o@W. WW +@W@8. &@+ :& o@+ #@ :@W&@& &@: .. :@o :@W: o@# +Wo &@+ :W: +@W&o++o@W. &@& 8@#o+&@W. #@: o@+ :W@@WWWW@@8 + :&W@@@@& &W .o#@@W&. :W@WWW@@& +o&&&&+. +oooo. v3.4.4 OWASP Amass Project - @owaspamass In-depth Attack Surface Mapping and Asset Discovery Usage: amass intel|enum|viz|track|db [options] -h Show the program usage message -help Show the program usage message -version Print the version number of this Amass binary Subcommands: amass intel - Discover targets for enumerations amass enum - Perform enumerations and network mapping amass viz - Visualize enumeration results amass track - Track differences between enumerations amass db - Manipulate the Amass graph database The user's guide can be found here: https://github.com/OWASP/Amass/blob/master/doc/user_guide.md An example configuration file can be found here: https://github.com/OWASP/Amass/blob/master/examples/config.ini |
DNSRecon
DNSRecon es una herramienta también escrita en Python y es una de las más conocidas.
Funcina al realizar la verificación de todos los registros NS para transferencias de zona AXFR y puede ser muy útil en la enumeración DNS para casi cualquier tipo de registro.
Admite también la verificación de resolución de wildcards y el descubrimiento basado en fuerza bruta para registros de tipo A y AAAA con listas de palabras, además de poder consultar a los dorks de Google para la búsqueda de subdominios indexados por GoogleBot.
Para su instalación se deberá clonar el repositorio existente en github
1 |
git clone https://github.com/darkoperator/dnsrecon.git |
Y realizar la instalación de las dependencias de la aplicación
1 |
pip install -r requirements.txt |
Aunque para aquellos que utilicen Kali Linux esta herramienta ya viene instalada por defecto en el sistema.
Una vez instalado vemos un ejemplo de como se ejecutaría el mismo:
1 |
./dnsrecon.py -d example.com |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
$ dnsrecon -d google.com [*] Performing General Enumeration of Domain: google.com [-] DNSSEC is not configured for google.com [*] SOA ns1.google.com 216.239.32.10 [*] NS ns3.google.com 216.239.36.10 [*] NS ns3.google.com 2001:4860:4802:36::a [*] NS ns4.google.com 216.239.38.10 [*] NS ns4.google.com 2001:4860:4802:38::a [*] NS ns2.google.com 216.239.34.10 [*] NS ns2.google.com 2001:4860:4802:34::a [*] NS ns1.google.com 216.239.32.10 [*] NS ns1.google.com 2001:4860:4802:32::a [*] MX alt3.aspmx.l.google.com 142.250.4.26 [*] MX aspmx.l.google.com 74.125.133.26 [*] MX alt1.aspmx.l.google.com 142.251.9.26 [*] MX alt2.aspmx.l.google.com 209.85.233.27 [*] MX alt4.aspmx.l.google.com 108.177.97.27 [*] MX alt3.aspmx.l.google.com 2404:6800:4003:c06::1b [*] MX aspmx.l.google.com 2a00:1450:400c:c0c::1b [*] MX alt1.aspmx.l.google.com 2a00:1450:4025:c03::1b [*] MX alt2.aspmx.l.google.com 2a00:1450:4010:c03::1b [*] MX alt4.aspmx.l.google.com 2404:6800:4008:c00::1b [*] A google.com 142.250.184.174 [*] AAAA google.com 2a00:1450:4003:80c::200e [*] TXT google.com docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e [*] TXT google.com facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95 [*] TXT google.com v=spf1 include:_spf.google.com ~all [*] TXT google.com docusign=1b0a6754-49b1-4db5-8540-d2c12664b289 [*] TXT google.com apple-domain-verification=30afIBcvSuDV2PLX [*] TXT google.com globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8= [*] Enumerating SRV Records [+] SRV _ldap._tcp.google.com ldap.google.com 216.239.32.58 389 [+] SRV _ldap._tcp.google.com ldap.google.com 2001:4860:4802:32::3a 389 [+] SRV _jabber._tcp.google.com alt3.xmpp-server.l.google.com 209.85.233.125 5269 [+] SRV _jabber._tcp.google.com xmpp-server.l.google.com 108.177.15.125 5269 [+] SRV _jabber._tcp.google.com alt1.xmpp-server.l.google.com 172.217.218.125 5269 [+] SRV _jabber._tcp.google.com alt2.xmpp-server.l.google.com 142.251.9.125 5269 [+] SRV _jabber._tcp.google.com alt4.xmpp-server.l.google.com 172.253.118.125 5269 [+] SRV _xmpp-server._tcp.google.com alt1.xmpp-server.l.google.com 172.217.218.125 5269 [+] SRV _xmpp-server._tcp.google.com alt4.xmpp-server.l.google.com 172.253.118.125 5269 [+] SRV _xmpp-server._tcp.google.com alt2.xmpp-server.l.google.com 142.251.9.125 5269 [+] SRV _xmpp-server._tcp.google.com xmpp-server.l.google.com 108.177.15.125 5269 [+] SRV _xmpp-server._tcp.google.com alt3.xmpp-server.l.google.com 209.85.233.125 5269 [+] SRV _xmpp-client._tcp.google.com alt4.xmpp.l.google.com 172.253.118.125 5222 [+] SRV _xmpp-client._tcp.google.com alt4.xmpp.l.google.com 2404:6800:4003:c05::7d 5222 [+] SRV _xmpp-client._tcp.google.com alt1.xmpp.l.google.com 172.217.218.125 5222 [+] SRV _xmpp-client._tcp.google.com alt1.xmpp.l.google.com 2a00:1450:4013:c08::7d 5222 [+] SRV _xmpp-client._tcp.google.com alt2.xmpp.l.google.com 142.251.9.125 5222 [+] SRV _xmpp-client._tcp.google.com alt2.xmpp.l.google.com 2a00:1450:4025:c03::7d 5222 [+] SRV _xmpp-client._tcp.google.com xmpp.l.google.com 173.194.76.125 5222 [+] SRV _xmpp-client._tcp.google.com xmpp.l.google.com 2a00:1450:400c:c00::7d 5222 [+] SRV _xmpp-client._tcp.google.com alt3.xmpp.l.google.com 209.85.233.125 5222 [+] SRV _xmpp-client._tcp.google.com alt3.xmpp.l.google.com 2a00:1450:4010:c03::7d 5222 [+] SRV _jabber-client._tcp.google.com xmpp.l.google.com 173.194.76.125 5222 [+] SRV _jabber-client._tcp.google.com xmpp.l.google.com 2a00:1450:400c:c00::7d 5222 [+] SRV _jabber-client._tcp.google.com alt3.xmpp.l.google.com 209.85.233.125 5222 [+] SRV _jabber-client._tcp.google.com alt3.xmpp.l.google.com 2a00:1450:4010:c03::7d 5222 [+] SRV _jabber-client._tcp.google.com alt1.xmpp.l.google.com 172.217.218.125 5222 [+] SRV _jabber-client._tcp.google.com alt1.xmpp.l.google.com 2a00:1450:4013:c08::7d 5222 [+] SRV _jabber-client._tcp.google.com alt4.xmpp.l.google.com 172.253.118.125 5222 [+] SRV _jabber-client._tcp.google.com alt4.xmpp.l.google.com 2404:6800:4003:c05::7d 5222 [+] SRV _jabber-client._tcp.google.com alt2.xmpp.l.google.com 142.251.9.125 5222 [+] SRV _jabber-client._tcp.google.com alt2.xmpp.l.google.com 2a00:1450:4025:c03::7d 5222 [+] SRV _carddavs._tcp.google.com google.com 142.250.184.174 443 [+] SRV _carddavs._tcp.google.com google.com 2a00:1450:4003:80c::200e 443 [+] SRV _caldavs._tcp.google.com calendar.google.com 142.250.184.174 443 [+] SRV _caldavs._tcp.google.com calendar.google.com 2a00:1450:4003:80c::200e 443 [+] SRV _caldav._tcp.google.com calendar.google.com 142.250.184.174 80 [+] SRV _caldav._tcp.google.com calendar.google.com 2a00:1450:4003:80c::200e 80 [+] 38 Records Found |
Como vemos en el anterior escaneo, la herramienta pudo buscar todo tipo de registros e incluso trata de enumerar registros SRV.
Si bien, la opción -d puede ayudar con la búsqueda, también es posible specificar un diccionario propio con la opción -D
1 2 |
./dnsrecon.py -d example.com -D wordlist.txt [*] Performing General Enumeration of Domain: example.com |
AltDNS
AltDNS es una herramienta de enumeración de subdominios basada en el trabajo con alteraciones y permutaciones.
En esta herramienta se configura una lista de palabras (por defecto ya incluye un diccionario predeterminado) así como el uso de una lista de subdominios confirmados por lo que se puede ejecutar esta tool para generar resultados tanto alterados como mutados que pueden estar presentes en el nombre del dominio.
Incluye además un conjunto de más de 200 subdominios de los más utilizados que pueden ser utilizados para generar subdominios válidos.
Para su instalación se deberá descargar el código de su repositorio en github:
1 |
git clone https://github.com/infosec-au/altdns.git |
E instalar posteriormente los requisitos del mismo
1 |
pip install -r requirements.txt |
Aunque también es posible la instalación de la herramienta por medio de pip
1 |
pip install py-altdns |
Podemos ver un ejemplo de su ejecución en el siguiente comando:
1 2 3 4 |
$ altdns -i subdomains.txt -o data_output -w words.txt -r -s results_output.txt [*] 500/1160 completed, approx 0:01:03 left [*] 1000/1160 completed, approx 0:00:15 left [*] Completed in 0:01:50 |
Nota: subdomains.txt es la lista de subdominios real conocida, y words.txt es la lista de palabras de AltDNS.
Conclusión
Aunque el uso de herramientas para generar bases de datos en vivo siguen siendo útiles, existen formas más rápidas y eficientes de encontrar subdominios utilizando fuentes OSINT pasivas. Y estas, son actualmente, las más utilizadas (en la mayoría de casos) para realizar este tipo de escaneos y tareas de mapeo.
Espero les haya gustado y les sea de utilidad en su día a día y como siempre si tienen alguna duda o sugerencia o simplemente quieren exponer su opinión al respecto pueden hacerlo en la sección de comentarios.