¡Hola hackers! El artículo de hoy es un poco distinto a lo que venimos publicando anteriormente pero tengo un motivo. Este fin de semana lo he estado dedicando a picar código para hacer una herramienta que tiene buena pinta y que consiste en enumerar subdominios de un hosts utilizando diferentes técnicas como escaneos activos, pasivos, fuerza bruta, basado en diccionario, etc.

Al empezar a programar me di cuenta de que no tenía ni la más remota idea de como saber si un subdominio existe o no utilizando Python. Y es por ello que os traigo este artículo, en el cual vamos a poder hacer un programa que obtenga subdominios válidos en menos de 10 líneas de código

Lo primero que hay que saber es cómo determinar si un subdominio existe o no, para ello vamos a utilizar la función gethostbyname de la librería socket. Esta función nos devolverá la IP de un dominio si este existe.

Si el dominio es válido, imprime la dirección IP. Por el contrario, si el dominio no existe, el programa genera una excepción. Para evitar que el programa deje de funcionar, necesitamos meter el codigo en un try except. Aprovechamos para poner un par de prints que nos muestran el resultado por pantalla.

En la imagen de la izquierda, vemos como el programa detecta que el dominio securihub.com existe y lo muestra por pantalla.

En la imagen de la derecha, hemos introducido un dominio inexistente y por lo tanto, no se imprime nada.

Una vez tenemos el código que detecta si el dominio existe, ya solo necesitamos leer un fichero de texto que contenga los subdominios que se quieran probar y realizar este proceso repetidas veces con un bucle for.

El código para leer el fichero es el siguiente:

wordlist = open("subdomains.txt", 'r')
entries = wordlist.readlines()

y, tras añadir el bucle for y modificar el output del print, ya tendríamos nuestro mini programa de 9 líneas de código listo!

Para realizar la prueba, hemos utilizado el dominio securihub.com y el fichero subdomains.txt que es un pequeño wordlist con las siguientes palabras:


pre
pro
www
ns1
webmail
smtp
access
admin
ftp
cpanel
autoconfig
ssh
assets
autodiscover


A continuación os mostramos los subdominios que hemos encontrado:

Y esto sería todo, un artículo corto para un programa más corto aún. Esperamos que hayáis aprendido a cómo determinar si un dominio existe o no a través de la función gethostbyname y estad atentos a la herramienta que estamos a punto de publicar!

Por último, recordaros que tenemos un grupo en Telegram en el que podemos compartir información o dudas con otras personas. Os dejo el enlace: