RedesZone
Cómo ver los subdominios ocultos de cualquier web sin instalar nada
Saber todos los subdominios de un determinado dominio es el primer paso para realizar un pentesting a una determinada empresa, hay diferentes técnicas para poder hacer una enumeración de todos los subdominios disponibles, pero una de las mejores herramientas (y más rápidas), es mirar los registros de CT (Certificate Transparency). Los registros CT son un sistema que permite registrar y supervisar todos los certificados TLS disponibles en un subdominio, es algo público y auditable, y está disponible en todas las Autoridades de Certificación. De esta forma, cualquier subdominio que haya tenido un certificado TLS, podrá aparecer en estos registros CT. Si quieres saber la forma más sencilla de mirar todos los subdominios, os vamos a explicar en detalle una herramienta totalmente gratuita.
Índice
Cómo detecta crt.name todos los subdominios
Funcionamiento
Guía práctica: Interpretación y siguientes pasos tras la enumeración
+
Clasificación de los subdominios
Verificación de estado
Detectar señales de exposición de servicios internos
Legalidad y ética
Cómo ocultar tus subdominios con certificados Wildcard
Hoy en día la gran mayoría de dominios y subdominios hacen uso de certificados TLS, ya sea proporcionados por el popular Let’s Encrypt que es totalmente gratuito, o bien por otras CA, pero en todos los casos se proporcionan los registros CT a los populares navegadores de Chrome y Apple a medida que se van registrando.
Cómo detecta crt.name todos los subdominios
La herramienta que os damos a conocer hoy es crt.name, una herramienta totalmente gratuita que nos permitirá ver el índice completo de subdominios que han obtenido un certificado TLS. Esta herramienta lee todos los registros CT utilizables de los navegadores de Chrome y Apple, tanto los CT estáticos (como los de Let’s Encrypt), como también los antiguos RFC 6962 (Google, Sectigo o DigiCert). De esta forma, analizará cada certificado en memoria, y extraerá los nombres de host SAN (Subject Alternative Name) que contienen los subdominios, y descartará el resto de metadatos.
Un aspecto muy importante, es que solamente estarán las entradas nuevas, los subdominios más antiguos podrían no estar disponibles porque provienen de registros CT obsoletos, para poder verlos deberás usar Internet Archive, Common Crawl, archivos de zona ICANN CZDS y otras fuentes. El índice de subdominios que nos proporciona esta herramienta nos proporcionará el listado completo de subdominios encontrados, e incluso podemos ver la fecha en la cual estuvo disponible por primera vez en su propio índice, no la fecha de la emisión del certificado, para dominios muy antiguos, los resultados pueden ser incompletos. Su funcionamiento interno y el parámetro «&dates=1» no forman parte del estándar CT definido en las RFC 6962 y RFC 9162.
Los estándares RFC 6962 y 9162 definen cómo funcionan los logs CT, pero no definen ningún parámetro de búsqueda que sí es capaz de realizar esta herramienta. El estándar último es el RFC 9162 que podríamos llamarlo «CT versión 2», mientras que el anterior se considera obsoleto pero sigue siendo usado por Chrome. Todos los registros CT definidos en estas RFC son de bajo nivel: reciben los certificados, los almacenan y permiten su consulta.
Funcionamiento
Lo primero que debemos hacer es meternos en la web de crt.name, ponemos el dominio principal que queremos buscar, por ejemplo, «redeszone.net», y pinchamos en «Search». En pocos segundos nos proporcionará todos los subdominios encontrados:
Interfaz web de crt.name que permite realizar búsquedas en el índice global de subdominios y visualizar registros en tiempo real. Foto: Captura propia de RedesZone
De manera predeterminada, el enlace que veremos en la barra de navegación será similar a «https://crt.name/v1/search?apex=redeszone.net«, podemos ver todos los subdominios, sin embargo, no vamos a poder ver la fecha asociada. Para hacer esto, basta con añadir «&dates=1» a la URL anterior, se quedaría de la siguiente forma:
https://crt.name/v1/search?apex=redeszone.net&dates=1
Así podemos ver también las fechas:
Detalle técnico de los subdominios asociados a redeszone.net donde se muestran las fechas de validez del certificado o registro para cada host. Foto: Captura propia de RedesZone
Un aspecto importante, es que estas fechas solamente aparecerán de los nuevos registros CT que tenemos disponibles y cuando fue indexado por primera vez en su base de datos, no es la fecha de creación del subdominio o la emisión del primer certificado. Por ejemplo, el dominio de redeszone.net realmente lleva existiendo desde 2010, además, el subdominio www.redeszone.net existe desde los inicios, por lo que la fecha no es la correcta. Deberás tomar esta información con precaución, porque no podría ser del todo fiable. Para una investigación más exhaustiva, se deben contrastar estos datos con otras fuentes disponibles.
Guía práctica: Interpretación y siguientes pasos tras la enumeración
Después de enumerar los subdominios de un determinado dominio, comienzan otros pasos claves como verificar cuáles pueden ser de pruebas, verificar el estado de los mismos, si exponen servicios internos.
Clasificación de los subdominios
Esta sería la primera fase, debemos identificar patrones de nombres que sugieran que hay entornos de desarrollo como «dev, staging y test», también podemos identificar subdominios de administración como «admin, panel, cpanel», e incluso podemos descubrir servicios internos como «vpn, intranet o mail» entre otros muchos. Al agrupar y clasificar todos los subdominios por tipo, podemos posteriormente ver los registros DNS asociados (A, AAAA, MX, TXT y CNAME) para seguir extrayendo información sobre la empresa en cuestión.
Es muy importante diferenciar entre los subdominios que vienen de los registros CT, de otros que pueden provenir de fuentes históricas, los cuales podrían no estar disponibles hoy en día. Además, deberías prestar mucha atención a los subdominios «críticos» como «vpn, intranet» o similares, ya que podrían ser la puerta hacia la red interna de la organización.
Verificación de estado
Es muy importante verificar en qué estado se encuentran esos subdominios, es posible que hayan dejado ya de existir, para ello es recomendable realizar una resolución de DNS (registros A, AAAA y CNAME), esto lo podemos hacer con herramientas como «dig» o «nslookup», también podrías usar herramientas online relacionadas con ver los registros DNS y verificar si los subdominios resuelven una determinada dirección IP. Posteriormente, haciendo un «curl» podríamos revelar el servidor web y el código de estado que nos proporciona.