Ejercicio práctico: ¿Cómo funciona una transferencia de zona?

El equipo de investigación de Nivel4 a través de un ejercicio práctico realizado te explica cómo funciona una transferencia de zona. En este caso se analizaron sitios de medios de comunicación. Es importante tener en cuenta que una transferencia de zona mal configurada puede llevar a fugas de información importantes. 

Por Ignacio Espinosa y Renato Garretón.

¿En qué sitios haremos la prueba?

La prueba de Transferencia de Zona DNS para los sitios de medios de comunicación listados en:

1) ¿Qué es una transferencia de zona?

Para entender bien, una transferencia de zona (RFC 5936) es un tipo de transacción DNS (sistema de nombres de dominio, el cual traduce y/o apunta cada dominio a la IP correspondiente) normalmente inducida a través de una consulta tipo “AXFR” para poder replicar bases de datos con registros entre servidores DNS.

La información contenida en cada transferencia de zona puede entregarnos la información de todos los dominios y/o servidores de cada base de datos de registros en el servidor DNS, lo cual puede llevar a fugas de información importantes, especialmente en la parte de reconocimiento de un ataque, es importante limitar o restringir la transferencia de zonas ya que este mecanismo permite a un atacante recolectar información importante.

¿Cómo funciona?

La idea detrás de todo esto es mantener consistencia entre dos o mas servidores DNS, o sea generar concordancia entre un registro DNS en un servidor “primario” y servidores “secundarios”, los cuales se actualizan consultando cambios al servidor “primario” para así actualizar sus registros propios, de esta manera cualquier cambio realizado en el servidor DNS principal se replica hacia el resto de los servidores.

Entonces, ¿Cómo opera esta replica de registros?

Cada transferencia AXFR, dependiendo de la cantidad de registro, puede tener un número importante de datos, por lo que actualizar los registros puede generar mucho tráfico. Es por esto que antes de enviar un “request” AXFR el -en este caso cliente (servidor secundario)- envía un “request” de SOA (start of authority), a lo cual el servidor responde con un “SOA record” el que contiene información sobre la zona consultada y es usado por el cliente para determinar si requiere enviar un posterior “request” AXFR para actualizar sus registros. Este “request” de SOA se realiza por el puerto 53, y puede ser una conexión tipo TCP o UDP.

Luego de esto el cliente inicia un requerimiento AXFR, el cual se realiza a través de una conexión TCP al mismo puerto.

Por lo tanto, al hacer una transferencia de zonas lo que hacemos es pedir un SOA y luego un requerimiento AXFR, ante lo cual el servidor nos responderá con una actualización y el detalle de IP y dominio de cada registro que mantenga en su base de datos. Por esta misma razón es importante el mantener los servidores DNS configurados correctamente, para que por ejemplo solo puedan recibir “requests” AXFR de ip determinadas, crear reglas en firewall y/o similares, etc.

Puedes leer más sobre cómo funciona una transferencia de zona acá. 

2) Obtener listado de dominios desde sitios.cl

Siguiendo con nuestro ejercicio práctico, se utilizaron los directorios de sitios.cl ( ) para enumerar los dominios que vamos a probar en la transferencia de zona. Para realizar la enumeración existen muchas opciones, pero como no queremos hacerlo de manera manual creamos un pequeño script que nos entrega la información que estamos buscando.

El script -en pocas palabras- lo que hace es obtener el HTML que queremos, se procesa para buscar los enlaces externos y se filtra para mostrar sólo los dominios sin incluir subdominios de sitios:

De lo que obtenemos el resultado:

Y así nos ahorramos mucho tiempo de sacar esa información de manera manual.

3) Iterar cada dominio para probar AXFR

Ahora, con el resultado anterior almacenado en axfr-dominios.txt, podemos revisar por cada uno si tiene transferencia de zona y qué resultado está entregando. Esto se puede hacer de manera manual por cada sitio realizando los siguientes pasos:

  1. Buscar los servidores NS del dominio:

2.Solicitar la transferencia de zona a cada servidor NS que nos entregue el comando anterior:

Cuando el SERVIDOR_NS esté configurado de manera correcta, nos entregará un resultado del estilo:

En cambio cuando el servidor esté mal configurado, entregará una respuesta del estilo:

De esta manera podemos descubrir qué subdominios tiene el dominio y aumenta la cantidad de vectores sobre los que podemos realizar análisis.

Para no hacer este proceso de manera tediosa y manual, podemos generar otro script (o modificar el anterior) para que por cada dominio que tenemos listado, obtenga los servidores NS y realice la consulta de transferencia de zona por nosotros.

4) Resultados

De los 187 dominios que obtuvimos inicialmente se realizaron 567 consultas de transferencia de zona, obteniendo sólo ocho respuestas. El resultado del script es el siguiente

5) Conclusión

Por ende, y a pesar de que la transferencia de zona es algo de lo que se viene hablando desde hace años, aún hay sitios que presentan deficiencias en la configuración de este, presentando un potencial riesgo. En este caso analizamos -sólo a método de investigación- sitios de medios de comunicación, pero este análisis se podría expandir al retail u otras áreas y probablemente encontremos sitios que aún están mal configurados.