DNS
Last updated
Last updated
El Sistema de Nombres de Dominio (DNS, por sus siglas en inglés) es una parte integral de Internet. A través de nombres de dominio como academy.hackthebox.com o www.hackthebox.com, podemos acceder a servidores web que el proveedor de hosting ha asignado a una o más direcciones IP específicas. El DNS es un sistema para resolver nombres de computadoras en direcciones IP y no tiene una base de datos central. Simplificadamente, podemos imaginarlo como una biblioteca con muchos directorios telefónicos diferentes. La información está distribuida entre miles de servidores de nombres. Los servidores DNS distribuidos globalmente traducen los nombres de dominio en direcciones IP y controlan qué servidor un usuario puede alcanzar a través de un dominio particular. Existen varios tipos de servidores DNS utilizados a nivel mundial:
Servidor raíz DNS
Servidor de nombres autoritativo
Servidor de nombres no autoritativo
Servidor de caché
Servidor de reenvío
Resolver
Tipos de servidores DNS y su descripción:
Tipo de Servidor | Descripción |
---|---|
El DNS generalmente no está cifrado. Esto significa que dispositivos en la red local (WLAN) y proveedores de Internet pueden interceptar y espiar consultas DNS, lo cual representa un riesgo de privacidad. Por esta razón, existen soluciones para cifrar el tráfico DNS. Por defecto, los profesionales de seguridad de TI aplican DNS sobre TLS (DoT) o DNS sobre HTTPS (DoH). Además, el protocolo de red DNSCrypt también cifra el tráfico entre la computadora y el servidor de nombres.
El DNS no solo vincula nombres de computadoras con direcciones IP, sino que también almacena y proporciona información adicional sobre los servicios asociados a un dominio. Por ejemplo, una consulta DNS también puede utilizarse para determinar qué computadora sirve como servidor de correo electrónico para el dominio en cuestión o cuáles son los servidores de nombres del dominio.
Diferentes tipos de registros DNS se utilizan para las consultas DNS, cada uno con distintas tareas. Además, existen entradas separadas para diferentes funciones, ya que podemos configurar servidores de correo y otros servidores para un dominio.
El registro SOA se encuentra en el archivo de zona de un dominio y especifica quién es responsable de la operación del dominio y cómo se maneja la información DNS para dicho dominio.
Ejemplo:
Respuesta:
En este ejemplo, la dirección de correo electrónico del administrador es awsdns-hostmaster@amazon.com
(el punto .
se reemplaza por una arroba @
).
Existen muchos tipos diferentes de configuraciones DNS, pero discutiremos solo las más importantes desde un punto de vista administrativo. Todos los servidores DNS funcionan con tres tipos de archivos de configuración:
Archivos de configuración local de DNS
Archivos de zona
Archivos de resolución de nombres inversos
En distribuciones basadas en Linux, el servidor DNS Bind9 es muy utilizado. Su archivo de configuración local (named.conf) está dividido en dos secciones: la sección de opciones para configuraciones generales y las entradas de zonas para los dominios individuales. Los archivos de configuración locales suelen ser:
named.conf.local
named.conf.options
named.conf.log
En este archivo, definimos las diferentes zonas. Estas zonas están divididas en archivos individuales, generalmente para un solo dominio. Un archivo de zona es un archivo de texto que describe una zona DNS en formato BIND.
Para que la dirección IP sea resuelta desde el nombre de dominio completo (FQDN), el servidor DNS debe tener un archivo de búsqueda inversa. Este archivo asigna el nombre del equipo (FQDN) al último octeto de la dirección IP, que corresponde al host respectivo, utilizando un registro PTR.
El registro PTR es responsable de la traducción inversa de direcciones IP en nombres.
Existen diversas maneras en las que un servidor DNS puede ser atacado. Por ejemplo, una lista de vulnerabilidades dirigidas al servidor BIND9 puede encontrarse en CVEdetails. Además, SecurityTrails ofrece una breve lista de los ataques más comunes a los servidores DNS.
Algunas de las configuraciones que se muestran a continuación pueden llevar a estas vulnerabilidades, entre otras. El servicio DNS puede volverse muy complejo, y es fácil que se cometan errores que obliguen al administrador a implementar soluciones temporales hasta encontrar una solución definitiva. Esto a menudo lleva a que se priorice la funcionalidad sobre la seguridad, lo que ocasiona configuraciones incorrectas y vulnerabilidades.
Estas configuraciones deben manejarse con cuidado, ya que configuraciones incorrectas pueden abrir puertas a posibles ataques o fugas de información en el sistema DNS.
El footprinting en servidores DNS se realiza como resultado de las solicitudes que enviamos. En primer lugar, se puede consultar al servidor DNS qué otros servidores de nombres son conocidos. Para ello, utilizamos 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 podemos utilizarlos y consultar los registros. Sin embargo, es posible que otros servidores DNS estén configurados de manera diferente y, además, podrían ser permanentes para otras zonas.
A veces, también es posible consultar la versión de un servidor DNS utilizando una consulta de clase CHAOS
y tipo TXT
. Sin embargo, esta entrada debe existir en el servidor DNS. Para ello, podríamos usar el siguiente comando:
Podemos usar 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 divulgar. Es importante tener en cuenta que no se mostrarán todas las entradas de las zonas.
La transferencia de zona se refiere al proceso de copiar zonas a otro servidor DNS, lo cual ocurre generalmente a través del puerto TCP 53. Este procedimiento se conoce como Transferencia de Zona Asincrónica Completa (AXFR). Dado que una falla en el DNS puede 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 asegurar que todos los servidores tengan los mismos datos. La sincronización entre los servidores se realiza mediante la transferencia de zona.
El servidor que contiene los datos originales de una zona se denomina servidor de nombres primario. Para aumentar la fiabilidad o distribuir la carga, se instalan servidores adicionales llamados servidores de nombres secundarios. Algunas Top-Level Domains (TLDs) requieren que los archivos de zona estén accesibles en al menos dos servidores.
Los registros DNS generalmente se crean, modifican o eliminan en el servidor primario. Un servidor DNS que sirve como fuente para sincronizar un archivo de zona se llama master. Un servidor que obtiene los datos de una zona desde un master se llama slave. El slave consulta el registro SOA del master en intervalos regulares y compara los números de serie. Si el número de serie del SOA del master es mayor, los conjuntos de datos ya no coinciden.
Si el administrador configuró la opción allow-transfer
incorrectamente, cualquier persona podría consultar el archivo de zona completo. Además, se pueden consultar otras zonas que podrían mostrar direcciones IP internas y nombres de host.
Los registros A individuales con los nombres de host también se pueden descubrir mediante un ataque de fuerza bruta. Para esto, necesitamos una lista de nombres de host posibles, que podemos usar para enviar las solicitudes en orden. Estas listas están disponibles, por ejemplo, en SecLists.
Una opción sería ejecutar un bucle for
en Bash que liste estas entradas y envíe la consulta correspondiente al servidor DNS deseado.
Aquí está un ejemplo básico de cómo podría realizarse un ataque de fuerza bruta usando un script en Bash:
Este script recorrerá una lista de nombres de host y realizará una consulta dig
para cada uno. Los resultados pueden revelar nombres de host válidos y direcciones IP asociadas, ayudando en la recopilación de información sobre la infraestructura de la red objetivo.
Es importante tener en cuenta que las consultas de DNS y las transferencias de zona pueden revelar información valiosa sobre la infraestructura de una red. Los administradores deben asegurarse de que las configuraciones de su servidor DNS estén optimizadas para evitar la divulgación no deseada de datos. Esto incluye restringir las transferencias de zona, asegurar las configuraciones de acceso y mantener el software de DNS actualizado.
Si se observan configuraciones incorrectas o vulnerabilidades, es crucial corregirlas para proteger la red y prevenir posibles ataques.
La fuerza bruta de subdominios es una técnica utilizada para descubrir subdominios de un dominio objetivo. Utiliza listas de nombres de subdominio comunes para enviar consultas al servidor DNS y ver si existen registros asociados. A continuación se presentan ejemplos de cómo realizar este proceso manualmente y utilizando herramientas especializadas.
El siguiente comando usa un archivo de lista de subdominios (subdomains-top1million-110000.txt
) para enviar consultas a un servidor DNS específico y guarda los resultados en un archivo llamado subdomains.txt
:
Una herramienta popular para la enumeración de DNS es dnsenum
. A continuación se muestra un ejemplo de cómo usar dnsenum
para realizar una fuerza bruta de subdominios:
Estas técnicas y herramientas permiten descubrir subdominios que podrían ser valiosos para realizar un análisis más detallado o para propósitos de pentesting. Asegúrate de tener permiso antes de realizar cualquier prueba de este tipo en redes y dominios que no sean de tu propiedad.
Opción | Descripción |
---|---|