the_open_door
café
ESEN
← Volver al índice

DNS zone transfer (AXFR)

Arsenal completo de comandos en la cheatsheet

Un servidor DNS guarda los registros de un dominio (su zona): los A, CNAME, MX, NS, etc. Para mantener sincronizados los servidores secundarios con el primario existe la transferencia de zona (AXFR), que copia la zona completa. Si el primario no restringe quién puede solicitarla, cualquiera puede descargar todos los registros, incluidos subdominios internos que no aparecen en ningún enlace ni se descubren por fuerza bruta.

Para abusarlo primero hay que conocer el nombre de dominio asociado a la IP. Una consulta inversa suele bastar:

nslookup <ip> <ip>            # PTR -> p. ej. trick.htb
dig -x <ip> @<ip>             # equivalente con dig

Con el dominio, se pide la transferencia al propio servidor:

dig ns <domain> @<ip> +short        # localizar los servidores de nombres
dig axfr <domain> @<ip>             # transferencia con dig
host -l <domain> <ip>               # equivalente con host
host -t axfr <domain> <ip>
dnsrecon -d <domain> -n <ip> -t axfr
fierce --domain <domain> --dns-servers <ip>

Si está mal configurado, la respuesta lista toda la zona. Es habitual que filtre entornos internos (preprod-, dev-, staging-, paneles de administración) que son el verdadero vector de entrada: una aplicación de preproducción mal asegurada, un panel olvidado, etc.

Por qué importa. La enumeración de subdominios por fuerza bruta solo encuentra nombres que estén en el diccionario; un AXFR los entrega todos de golpe y sin ruido, incluidos los que jamás adivinarías. Es de las primeras cosas que probar cuando el puerto 53 está abierto.

Cómo detectarlo. La firma es una consulta de tipo AXFR al 53/TCP desde una IP que no es un secundario configurado: en BIND queda registrada como transfer of '<zona>' ... denied/approved, y casi ningún cliente legítimo (solo los secundarios) emite un AXFR. Con query logging o un IDS, una petición AXFR externa es de por sí el indicador; suele ir precedida de una consulta PTR inversa para averiguar el dominio.

Defensa. Restringir las transferencias a los servidores secundarios legítimos (allow-transfer { ... } en BIND), usar TSIG (claves compartidas) para autenticarlas, y no publicar registros internos en zonas accesibles desde fuera. Tras descubrir un subdominio interesante, el siguiente paso suele ser el fuzzing de virtual hosts para encontrar aún más.

Herramientasdigsubfinderdnsenumdnsreconfierceadidnsdump

Máquinas donde se aplica