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
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 condnsrecon -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.
- El repositorio de Fierce contiene algunos diccionarios: https://github.com/mschwager/fierce / tree / master / lists
- » Bitquark «realizó un análisis de los subdominios más utilizados que resultó en estas listas: https://github.com/bitquark/dnspop/tree/master/results . Sin embargo, las publicaciones del blog parecen tener algunos resultados extraños, así que no estoy seguro de la calidad de estas listas.
-
dnsrecon
viene con una lista, simplemente llamadanamelist.txt
.dpkg -L dnsrecon
revela dónde está instalado. Está ordenado alfabéticamente. - Subbrute tiene una lista corta y una larga: https://github.com/TheRook/subbrute
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)
Ingrese el dominio en el cuadro de búsqueda y ejecute la búsqueda. (Por ejemplo,
stackexchange.com
)En la tercera sección desde la parte superior (llamada «Estadísticas web para todo stackexchange. com «) haga clic en Subdominios
En la sección Subdominios, haga clic en Más
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/
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.
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 desconocidopgp.rediris.es
que parece ser un scrapper de correo electrónico. / li>