💻DNS
Domain Name System( DNS) es una parte integral de Internet.
Por ejemplo, a través de nombres de dominio, como academy.hackthebox.com
o hackthebox.com
, podemos llegar a los servidores web a los que el proveedor de hosting tiene asignadas una o más direcciones IP específicas. DNS es un sistema para resolver nombres de computadoras en direcciones IP y no tiene una base de datos central.
Simplificado, podemos imaginarlo como una biblioteca con muchas guías telefónicas diferentes. La información se distribuye entre miles de servidores de nombres. Los servidores DNS distribuidos globalmente traducen los nombres de dominio en direcciones IP y controlan así a qué servidor puede acceder un usuario a través de un dominio en particular. Existen varios tipos de servidores DNS que se utilizan en todo el mundo:
El DNS prácticamente no está cifrado. De este modo, los dispositivos conectados a la WLAN local y a los proveedores de Internet pueden piratear y espiar las consultas DNS. Dado que esto supone un riesgo para la privacidad, ahora existen algunas soluciones para el cifrado DNS. De forma predeterminada, los profesionales de seguridad de TI aplican DNS over TLS
( DoT
) o DNS over HTTPS
( DoH
) aquí. Además, el protocolo de red DNSCrypt
también cifra el tráfico entre la computadora y el servidor de nombres.
Sin embargo, el DNS no sólo vincula nombres de computadoras y direcciones IP. También almacena y genera información adicional sobre los servicios asociados con un dominio. Por lo tanto, mediante una consulta DNS también se puede determinar, por ejemplo, qué ordenador sirve como servidor de correo electrónico para el dominio en cuestión o cómo se llaman los servidores de nombres del dominio.
Conceptos clave de DNS
En Domain Name System
( DNS
), una zona
es una parte distinta del espacio de nombres de dominio que administra una entidad o administrador específico. Piense en ello como un contenedor virtual para un conjunto de nombres de dominio. Por ejemplo, example.com
todos sus subdominios (como mail.example.com
o blog.example.com
) normalmente pertenecerían a la misma zona DNS.
El archivo de zona, un archivo de texto que reside en un servidor DNS, define los registros de recursos (que se analizan a continuación) dentro de esta zona, proporcionando información crucial para traducir nombres de dominio en direcciones IP.
Para ilustrar, aquí hay un ejemplo simplificado de cómo example.com
se vería un archivo de zona:
Este archivo define los servidores de nombres autorizados (registros NS
), el servidor de correo (registro MX
) y las direcciones IP (registros A
) para varios hosts dentro del dominio example.com
.
Los servidores DNS almacenan varios registros de recursos, cada uno de los cuales tiene un propósito específico en el proceso de resolución de nombres de dominio. Exploremos algunos de los conceptos de DNS más comunes:
Concepto DNS | Descripción | Ejemplo |
| Una etiqueta legible por humanos para un sitio web u otro recurso de Internet. |
|
| Un identificador numérico único asignado a cada dispositivo conectado a Internet. |
|
| Un servidor que traduce nombres de dominio en direcciones IP. | El servidor DNS de su ISP o Public Resolvers como Google DNS ( |
| Los servidores de nivel superior en la jerarquía DNS. | Hay 13 servidores raíz en todo el mundo, denominados AM: |
| Servidores responsables de dominios de nivel superior específicos (por ejemplo, .com, .org). | |
| El servidor que contiene la dirección IP real de un dominio. | A menudo lo gestionan proveedores de alojamiento o registradores de dominios. |
| Diferentes tipos de información almacenada en DNS. | A, AAAA, CNAME, MX, NS, TXT, etc. |
Ahora que hemos explorado los conceptos fundamentales de DNS, profundicemos en los componentes básicos de la información de DNS: los distintos tipos de registros. Estos registros almacenan diferentes tipos de datos asociados con los nombres de dominio, cada uno de los cuales tiene un propósito específico:
Tipo de registro | Nombre completo | Descripción | Ejemplo de archivo de zona |
| Registro de dirección | Asigna un nombre de host a su dirección IPv4. |
|
| Registro de direcciones IPv6 | Asigna un nombre de host a su dirección IPv6. |
|
| Registro de nombre canónico | Crea un alias para un nombre de host, apuntándolo a otro nombre de host. |
|
| Registro de intercambio de correo | Especifica los servidores de correo responsables de manejar el correo electrónico del dominio. |
|
| Registro del servidor de nombres | Delega una zona DNS a un servidor de nombres autorizado específico. |
|
| Registro de texto | Almacena información de texto arbitraria, que a menudo se utiliza para la verificación de dominios o políticas de seguridad. |
|
| Inicio del Registro de Autoridad | Especifica información administrativa sobre una zona DNS, incluido el servidor de nombres principal, el correo electrónico de la persona responsable y otros parámetros. |
|
| Registro de servicio | Define el nombre de host y el número de puerto para servicios específicos. |
|
| Registro de puntero | Se utiliza para búsquedas de DNS inversas, asignando una dirección IP a un nombre de host. |
|
" IN
" en los ejemplos significa "Internet". Es un campo de clase en los registros DNS que especifica la familia de protocolos. En la mayoría de los casos, verá " IN
" usado, ya que indica el conjunto de protocolos de Internet (IP) utilizado para la mayoría de los nombres de dominio. Existen otros valores de clase (por ejemplo, CH
para Chaosnet, HS
para Hesiod) pero rara vez se utilizan en configuraciones DNS modernas.
En esencia, " IN
" es simplemente una convención que indica que el registro se aplica a los protocolos de Internet estándar que utilizamos hoy en día. Si bien puede parecer un detalle adicional, comprender su significado proporciona una comprensión más profunda de la estructura de los registros DNS.
El registro SOA
se encuentra en el archivo de zona de un dominio y especifica quién es responsable del funcionamiento del dominio y cómo se administra la información DNS del dominio.
El punto (.) se reemplaza por una arroba (@) en la dirección de correo electrónico. En este ejemplo, la dirección de correo electrónico del administrador es awsdns-hostmaster@amazon.com
.
Cheatsheet
Comando | Descripción |
| Solicitud NS al servidor de nombres específico. |
| CUALQUIER solicitud al servidor de nombres específico. |
| Solicitud AXFR al servidor de nombres específico. |
| Fuerza bruta de subdominio. |
Configuración predeterminada
Existen muchos tipos diferentes de configuración para DNS. Por lo tanto, sólo discutiremos los más importantes para ilustrar mejor el principio funcional desde un punto de vista administrativo. Todos los servidores DNS funcionan con tres tipos diferentes de archivos de configuración:
Archivos de configuración DNS locales
Archivos de zona
Archivos de resolución de nombres inversos
El servidor DNS Bind9 se utiliza con mucha frecuencia en distribuciones basadas en Linux. Su archivo de configuración local ( named.conf
) está dividido aproximadamente en dos secciones: en primer lugar, la sección de opciones para la configuración general y, en segundo lugar, las entradas de zona para los dominios individuales. Los archivos de configuración locales suelen ser:
named.conf.local
named.conf.options
named.conf.log
Contiene el RFC asociado donde podemos personalizar el servidor según nuestras necesidades y nuestra estructura de dominio con las zonas individuales para diferentes dominios. El archivo de configuración named.conf
se divide en varias opciones que controlan el comportamiento del servidor de nombres. Se hace una distinción entre global options
y zone options
.
Las opciones globales son generales y afectan a todas las zonas. Una opción de zona sólo afecta a la zona a la que está asignada. Las opciones que no aparecen en nombrado.conf tienen valores predeterminados. Si una opción es global y específica de una zona, entonces la opción de zona tiene prioridad.
Configuración DNS local
En este archivo podemos definir las diferentes zonas. Estas zonas se dividen en archivos individuales, que en la mayoría de los casos están destinados principalmente a un solo dominio. Las excepciones son los ISP y los servidores DNS públicos. Además, muchas opciones diferentes amplían o reducen la funcionalidad. Podemos buscarlos en la documentación de Bind9.
El archivo de zona
es un archivo de texto que describe una zona DNS con el formato de archivo BIND. En otras palabras, es un punto de delegación en el árbol DNS. El formato de archivo BIND es el formato de archivo de zona preferido en la industria y ahora está bien establecido en el software de servidor DNS. Un archivo de zona describe una zona completamente. Debe haber precisamente un registro SOA
y al menos un registro NS
. El registro de recursos SOA normalmente se encuentra al principio de un archivo de zona. El objetivo principal de estas reglas globales es mejorar la legibilidad de los archivos de zona. Un error de sintaxis normalmente hace que todo el archivo de zona se considere inutilizable. El servidor de nombres se comporta de manera similar como si esta zona no existiera. Responde a consultas de DNS con un mensaje de error SERVFAIL
.
En resumen, aquí todos forward records
se introducen según el formato BIND. Esto permite que el servidor DNS identifique a qué dominio, nombre de host y función pertenecen las direcciones IP. En términos simples, esta es la guía telefónica donde el servidor DNS busca las direcciones de los dominios que está buscando.
Archivos de zona
Para que la dirección IP se resuelva desde Fully Qualified Domain Name
( FQDN
), el servidor DNS debe tener un archivo de búsqueda inversa. En este archivo, el nombre de la computadora (FQDN) se asigna al último octeto de una dirección IP, que corresponde al host respectivo, mediante un registro PTR
. Los registros PTR se encargan de la traducción inversa de direcciones IP a nombres, como ya hemos visto en la tabla anterior.
Archivos de zona de resolución de nombre inverso
Configuraciones peligrosas
Hay muchas formas en que se puede atacar un servidor DNS. Por ejemplo, puede encontrar una lista de vulnerabilidades dirigidas al servidor BIND9 en CVEdetails . Además, SecurityTrails proporciona una breve lista de los ataques más populares a servidores DNS.
Algunas de las configuraciones que podemos ver a continuación conducen a estas vulnerabilidades, entre otras. Porque el DNS puede volverse muy complicado y es muy fácil que se cuelen errores en este servicio, obligando a un administrador a trabajar alrededor del problema hasta encontrar una solución exacta. Esto a menudo conduce a que se liberen elementos para que partes de la infraestructura funcionen según lo planeado y deseado. En tales casos, la funcionalidad tiene mayor prioridad que la seguridad, lo que genera errores de configuración y vulnerabilidades.
Opción | Descripción |
| Define qué hosts pueden enviar solicitudes al servidor DNS. |
| Define qué hosts pueden enviar solicitudes recursivas al servidor DNS. |
| Define qué hosts pueden recibir transferencias de zona desde el servidor DNS. |
| Recoge datos estadísticos de zonas. |
Enumeración del servicio
La enumeración en los servidores DNS se realiza como resultado de las solicitudes que enviamos. Así, en primer lugar, se puede consultar al servidor DNS qué otros servidores de nombres se conocen. Hacemos esto usando el registro NS y la especificación del servidor DNS que queremos consultar usando el carácter @
. Esto se debe a que si existen otros servidores DNS, también podremos utilizarlos y consultar los registros. Sin embargo, otros servidores DNS pueden configurarse de manera diferente y, además, pueden ser permanentes para otras zonas.
DIG - Consulta NS
A veces también es posible consultar la versión de un servidor DNS usando una consulta de clase CHAOS y escribiendo TXT. Sin embargo, esta entrada debe existir en el servidor DNS. Para esto podríamos usar el siguiente comando:
DIG - Consulta de versión
Podemos utilizar la opción ANY
para ver todos los registros disponibles. Esto hará que el servidor nos muestre todas las entradas disponibles que está dispuesto a revelar. Es importante tener en cuenta que no se mostrarán todas las entradas de las zonas.
DIG - Cualquier consulta
Transferencia de zona
Zone transfer
se refiere a la transferencia de zonas a otro servidor en DNS, que generalmente ocurre a través del puerto TCP 53. Este procedimiento se abrevia Asynchronous Full Transfer Zone
( AXFR
). Dado que un fallo de DNS suele tener graves consecuencias para una empresa, el archivo de zona casi siempre se mantiene idéntico en varios servidores de nombres. Cuando se realizan cambios, se debe garantizar que todos los servidores tengan los mismos datos. La sincronización entre los servidores involucrados se realiza mediante transferencia de zona. Utilizando una clave secreta rndc-key
, que hemos visto inicialmente en la configuración por defecto, los servidores se aseguran de comunicarse con su propio maestro o esclavo. La transferencia de zona implica la mera transferencia de archivos o registros y la detección de discrepancias en los conjuntos de datos de los servidores involucrados.
Los datos originales de una zona se encuentran en un servidor DNS, que se denomina primary
servidor de nombres para esta zona. Sin embargo, para aumentar la fiabilidad, realizar una distribución sencilla de la carga o proteger el primario de ataques, en la práctica se instalan en la práctica en casi todos los casos uno o varios servidores adicionales, que se denominan secondary
servidores de nombres para esta zona. Para algunos Top-Level Domains
( TLDs
), es obligatorio hacer que los archivos de zona sean Second Level Domains
accesibles en al menos dos servidores.
Las entradas DNS generalmente solo se crean, modifican o eliminan en el principal. Esto se puede hacer editando manualmente el archivo de zona relevante o automáticamente mediante una actualización dinámica desde una base de datos. Un servidor DNS que sirve como fuente directa para sincronizar un archivo de zona se llama maestro. Un servidor DNS que obtiene datos de zona de un maestro se llama esclavo. Un primario es siempre un maestro, mientras que un secundario puede ser tanto esclavo como maestro.
El esclavo obtiene el registro SOA
de la zona relevante del maestro en ciertos intervalos, el llamado tiempo de actualización, generalmente una hora, y compara los números de serie. Si el número de serie del registro SOA del maestro es mayor que el del esclavo, los conjuntos de datos ya no coinciden.
DIG - Transferencia de zona AXFR
Si el administrador usara una subred para la opción allow-transfer
con fines de prueba o como solución alternativa o la configurara en any
, todos consultarían el archivo de zona completo en el servidor DNS. Además, se pueden consultar otras zonas, que pueden incluso mostrar direcciones IP internas y nombres de host.
DIG - Transferencia de zona AXFR - Interna
Los registros individuales A
con los nombres de host también se pueden descubrir mediante un ataque de fuerza bruta. Para hacer esto, necesitamos una lista de posibles nombres de host, que usamos para enviar las solicitudes en orden. Estas listas las proporciona, por ejemplo, SecLists .
Una opción sería ejecutar un for-loop
en bash que enumere estas entradas y envíe la consulta correspondiente al servidor DNS deseado.
Fuerza bruta de subdominio
Se pueden utilizar muchas herramientas diferentes para esto y la mayoría funcionan de la misma manera. Una de estas herramientas es, por ejemplo, DNSenum .
DNSenum
Última actualización