Una de las cosas que debo hacer de vez en cuando es buscar subdominios de un sitio, por ejemplo.

Comenzando con example.com

  • sub1. ejemplo.com
  • otro.example.com
  • otro.example.com

Estoy buscando formas adicionales de realizar un reconocimiento en estos objetivos y quiero obtener una lista de todos los subdominios de un dominio.

Actualmente estoy haciendo una serie de cosas que incluyen

  • usar maltego para rastrear información
  • usar motores de búsqueda para buscar subdominios
  • rastrear enlaces de sitios
  • examinar registros DNS
  • Examinando certificados SSL configurados incorrectamente
  • Adivinando cosas como «vpn.example.com»

Creo que hay más que los los que he encontrado hasta ahora, pero ahora no tengo ideas.

Comentarios

  • Hay otro punto st en stackoverflow que ‘ es bastante bueno: [Lista de subdominios] [1] [1]: stackoverflow.com/questions/ 131989 / …
  • Entonces solo hay una manera: hazlo como maltego: haz conjeturas fundamentadas …
  • Lo probaría con knock ( code.google.com/p/knock ) pero cuidado: existe el riesgo de ser incluido en la lista negra.
  • Hay ‘ una secuencia de comandos de Python llamada subdomainer.py que debería poder ayudarlo … Haga una búsqueda en Google
  • Para su información, se puede encontrar en el sitio web edge-security.com , pero el enlace anterior se publicó en la página wiki de SecurityTube está muerto (aunque tiene un ejemplo de uso que, por supuesto, está definido en usage() de todos modos). A juzgar por el código fuente, lo que hace es recopilar datos de tres motores de búsqueda principales (yahoo, msn, google) y para mí, un sitio web desconocido pgp.rediris.es que parece ser un scrapper de correo electrónico. / li>

Respuesta

Como pentester, la posibilidad de encontrar los subdominios de un sitio surge con frecuencia. Así que escribí una herramienta, SubBrute que hace esto bastante bien si lo digo yo mismo. En resumen, esto es mejor que otras herramientas (fierce2) porque es mucho más rápido, más preciso y más fácil de trabajar con . Esta herramienta viene con una lista de subdominios reales obtenidos a partir de arañar la web. Esta lista de subdominios es más de 16 veces el tamaño de fierce2 y subbrute tardará unos 15 minutos en agotar esta lista en una conexión doméstica. El resultado es una lista limpia separada por líneas nuevas, que es fácil de usar como entrada para otras herramientas como nmap o un escáner de vulnerabilidades de aplicaciones web.

Comentarios

  • Genial, ‘ lo comprobaré. ¿Alguna idea de lo bien que se compara con ‘ knock ‘?
  • @ D3C4FF knock is crap.
  • Toda la gloria sea para Rook. Usé la herramienta en una prueba en vivo hoy y funcionó a las mil maravillas. Solo se perdió uno de cada dos docenas de subdominios que se llamaba mywebreading
  • @ D3C4FF, diablos, sí, ‘ me alegro el truco;)
  • @Rook solo una idea rápida sobre subbrute, agregue la opción para resolver (e imprimir) la dirección IP de los nombres de host encontrados también. Hice ese cambio y ayudó con algunas pruebas en las que ciertos rangos estaban fuera del alcance a pesar de que eran subdominios. ¡Gracias de nuevo!

Responder

1. Transferencia de zona

Algunos servidores de nombres permiten transferencias de zona DNS a cualquier persona en Internet, generalmente de forma no intencionada. En esta pregunta, se explica con más detalle: Ataque de transferencia de zona DNS .

Herramientas para transferencias de zona

El la segunda respuesta a esa pregunta menciona cómo probarla tanto para Windows como para Linux:

Windows:

nslookup > server <DNS you are querying> > set type=any > ls -d <target> 

Unix (nslookup está obsoleto en Unix):

dig -t axfr @<DNS you are querying> <target> 

(Edité el de Unix, porque -axfr no parece funcionar. Necesitaba especificar -t axfr.)

2. Caminata de zona DNSSEC

DNSSEC firma registros DNS, por lo que puede estar seguro de que recibe la respuesta correcta (bueno, dadas algunas raíces de confianza e intermediarios). Pero, ¿cómo se prueba que algo no existe? al buscar nonexistentsub.example.com, ¿cómo demuestra el servidor de nombres de example.com la inexistencia de un subdominio? No tiene la clave de firma (la firma se realiza cuando los administradores actualizan la zona).

En su respuesta a ¿Cómo funciona DNSSec? ¿Existen limitaciones o problemas conocidos?, / u / tylerl explica:

Obviamente, esa respuesta necesita debe ser firmado, pero generalmente el servidor DNS no tiene acceso a su clave de firma y no puede firmar la respuesta sobre la marcha; todas las firmas se crean » offline » antes de tiempo. Esto evita que su clave quede expuesta si su servidor DNS se ve comprometido.

Entonces, en su lugar, alfabetiza sus subdominios y dice » para cada nombre entre mail.example. com y pop.example.com, no existen otros subdominios » y firme esa afirmación. Luego, cuando alguien pregunte por nachos.example.com, puede simplemente darles esa respuesta (que ya ha sido firmada) y el cliente lo sabrá porque nachos.example.com se ubica alfabéticamente entre mail.example.com y pop.example.com, entonces la » este dominio no existe » se considera que la respuesta está correctamente firmada y en realidad proviene de usted.

El lugar donde esto se vuelve problemático es que al tener un conjunto de estas respuestas negativas que establecen explícitamente que » no existen respuestas entre X e Y, puede identificar fácilmente exactamente qué dominios existen para toda la zona. Usted sabe que » X » existe, y sabe que » Y » existe, y sabes que no hay nada más entre ellos. Solo haz un poco más de pinchazos al azar y rápidamente podrás compilar una lista de todos los registros que existen.

El registro que especifica » hasta pop.example.com no hay nada » se llama NSEC (siguiente registro SECure).

Se diseñó una solución alternativa para esto: NSEC3. Utiliza el hash de los nombres, por lo que mail se convierte en b83a88... y pop se convierte en b21afc.... Imagine que esos son los dos únicos subdominios, luego la respuesta firmada dirá » no existe ningún registro entre b21afc... y b83a88... «. Una vez más, funciona alfabéticamente y puede obtenerlos todos, pero esta vez tendrá que descifrar cada hash antes de saber cuáles son los subdominios.

En mi experiencia, la mayoría tiene la extensión NSEC3 habilitada.

Herramientas para caminar por zonas

NSEC3Walker hace tanto la enumeración como el craqueo. No puedo dar fe de lo eficiente que es el craqueo, pero definitivamente solo se basa en CPU. Dado que NSEC3 usa SHA1 (al menos originalmente), probablemente haya mejores programas de craqueo.

dnsrecon también parece poder hacerlo: dnsrecon -z -d example.com. No sé si hay un sitio web oficial con información, pero en Debian Stretch, Buster y Bullseye Puedo apt install dnsrecon.

3. Búsquedas inversas en una subred

Al adivinar algunas, a menudo encontrará respuestas en un rango similar. Si sabe que www. existe y mail. existe, y ambos se resuelven en 192.168.3.x, podría ser más. Intente realizar una búsqueda inversa para todas las direcciones en el rango 192.168.3.0-255 (el /24), y probablemente encontrará más subdominios. También puede intentar realizar una consulta de WHOIS sobre la dirección IP para encontrar los límites del rango (si tienen su propio bloque).

Herramientas para búsquedas inversas

dnsrecon puede hacer esto:

dnsrecon -t rvl -r 192.168.1.0/24 

Donde -t rvl significa » escribe búsqueda inversa » y -r pasa un rango de IP en notación CIDR. No lo sé si hay un sitio web oficial con información, pero en Debian Stretch, Buster y Bullseye puedo apt install dnsrecon.

4. Registros de servicio DNS

Se pueden establecer registros SRV (servicio) para el descubrimiento de servicios, por ejemplo _sip._tcp.example.com podría apuntar a sipserver.example.com en el puerto 5060. Dado que los nombres de servicio (» sip » en el ejemplo) son típicamente los estándar registrados con IANA, podemos iterar a través de ellos.

Herramientas para consultar registros srv

dnsrecon puede hacer esto:

dnsrecon -t srv -d example.com 

Tomará un subconjunto de los nombres de servicios existentes, seleccionados por un desconocido método, como se menciona en su página de manual (man dnsrecon).

5. Otros métodos

Ya mencionaste algunos de esos.No entraré en detalles, porque se explican por sí mismos y dependen de una aplicación que se ejecuta en el destino (como FTP), dependen de un tercero o simplemente no hay mucho que decir sobre ellos. .

  • Los resultados de la búsqueda pueden revelar subdominios. Nuevamente, dnsrecon puede hacer esto con la opción -t goo (usa Google específicamente).

  • Verificar otros TLD para el mismo nombre puede revelar algunas otras variantes o direcciones IP. P.ej. si example.com existe, example.org también podría existir. dnsrecon también puede hacer esto con dnsrecon -t tld -d example.com.

  • Rastrear un sitio web o encontrar referencias en otro lugar podría dar pistas. (Se necesita ayuda: ¿qué herramienta usar?)

  • Mirar los certificados TLS a menudo arroja resultados. Asegúrese de verificar los puertos para HTTPS, SMTP (S), FTP (S), etc. y use STARTTLS.

  • Hay herramientas de terceros que pueden enumerar subdominios en un dominio. Sus métodos son menos claros, pero rastrear Internet y los registros históricos (¿tal vez alguna vez fue posible una transferencia de dominio?) Suelen ser parte de ello. (Necesita ayuda: ¿alguna recomendación? Solo recuerdo haber visto que existe).

6. Adivinar.

La última opción es adivinar, ya sea mediante un diccionario (lo recomiendo) o mediante la fuerza bruta. Esto se hace más difícil con los comodines, aunque muchas herramientas intentarán detectarlo y resolverlo.

Herramientas para adivinar / forzar la fuerza bruta

Fierce fue creado para hacer esto: https://github.com/mschwager/fierce
Se instala por defecto en Kali Linux.

Como / u / rook mencionado en otra respuesta en este hilo , escribieron Subbrute para este propósito: https://github.com/TheRook/subbrute

dnsrecon puede hacer esto con dnsrecon -t brt -d example.com. Utilice -f a » Filtrar los registros de búsqueda de dominio de fuerza bruta que se resuelven en la dirección IP definida por comodines al guardar registros » (citando su página de manual). Puede pasar -D para un archivo de diccionario.

Apéndice: dict ionaries

Todavía estoy buscando buenos diccionarios (para adivinar / forzar), pero aquí hay algunos que conozco. ¡Ayúdame a completar esta lista! Cuanto más grandes, mejor, siempre que estén ordenados por probabilidad.

Responder

Jason Haddix escribió mi herramienta favorita de descubrimiento de subdominios / nombres de host que depende de una versión muy reciente de recon-ng – disponible aquí –

https://github.com/jhaddix/domain

subbrute es decente, fierce -dns <domain> funciona muy bien, dnsmap <domain> -r file.txt también es válido, y no veo ninguna razón para que no me guste knock -wc <domain> (aunque las otras características de knock pueden ser sospechar). Sin embargo, todas estas herramientas utilizan técnicas que muestran su edad. El truco para algunas de estas mejoras de ataque es crear un archivo personalizado con nombres de host que estén diseñados específicamente para el objetivo.

Sin embargo, la motosierra para el descubrimiento de DNS es dnsrecon. Lo hace todo.

También puede considerar una oferta comercial, como RiskIQ, que puede hacer mucho más que todas estas herramientas. Sus técnicas incluyen una gran cantidad de encuestas en las que la mayoría de ustedes no pensaría.

[ACTUALIZAR] Otro favorito (para nombres de host, no principalmente subdominios – ¿el OP está interesado en ambos?) Es – https://github.com/tomsteele/blacksheepwall

Respuesta

Lo intentaría con knock , pero cuidado: existe el riesgo de ser incluido en la lista negra.

Desafortunadamente, no hay forma de evitarlo. fuerza bruta si una transferencia de zona no funciona.

Comentarios

  • Esta herramienta es de baja calidad; SubBrute es mucho mejor.

Respuesta

Over on Stack Overflow , sugirió Paul Melici utilizando WolframAlpha .(Capturas de pantalla por mí mismo)

  1. Ingrese el dominio en el cuadro de búsqueda y ejecute la búsqueda. (Por ejemplo, stackexchange.com )

    Wolfram - Página de inicio

  2. En la tercera sección desde la parte superior (llamada «Estadísticas web para todo stackexchange. com «) haga clic en Subdominios

    Wolfram - Botón Subdominios

  3. En la sección Subdominios, haga clic en Más

    Wolfram - Botón Más subdominios

Allí podrá ver una lista de subdominios. Aunque sospecho que no muestra TODOS los subdominios.

Comentarios

  • esto se menciona en el primer comentario

Respuesta

Eche un vistazo a http://ha.ckers.org/fierce/ . Puede tomar un archivo de diccionario y fuerza bruta. También se incluye en Kali.

Respuesta

Inicialmente, suelo usar bases de datos dns pasivas para buscar subdominios para un sitio. El inconveniente de este método es que solo puede encontrar sitios que se enumeran en la base de datos. Pero el beneficio es que puede encontrar sitios que no figuran en ninguna lista de palabras.

Algunas bases de datos de referencia:

https://www.virustotal.com/en/domain/stackexchange.com/information/

http://www.nonexiste.net/?q=stackexchange.com

Respuesta

Fácil. Escriba la dirección del sitio a wolframalpha. Y haga clic en el botón «subdominos».

Un ejemplo; https://www.wolframalpha.com/input/?i=www.imdb.com

Haga clic en «Subdominios» para ver los subdominios del sitio.

Además, wolfram alpha tiene api si quieres alcanzarla y usarla. Espero que ayude …

Comentarios

  • Perdido: si puede ampliar esto, explicando lo que hace Wolfram, esta respuesta puede obtener votos positivos.
  • El enlace » subdominios » solo parece estar presente para algunos dominios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *