Páginas

Mostrando entradas con la etiqueta DNS. Mostrar todas las entradas
Mostrando entradas con la etiqueta DNS. Mostrar todas las entradas

21 mayo, 2020

Recopilación de herramientas para la enumeración y descubrimiento pasivo de subdominios

En un proceso de pentesting de auditoría de caja negra (black box) en un principio no tenemos ningún conocimiento de la infraestructura de servidores y comunicaciones de la organización que vamos a auditar. Nos encontramos en una fase de recopilación de información y escaneo de los activos de la compañía públicos en Internet.

Lo habitual es usar footprinting con recursos web, técnicas de recopilación y análisis OSINT (Open Source Intelligence) intentando obtener la mayor cantidad de información posible y que nos pueda ser de utilidad para avanzar a una fase de enumeración de los sistemas "vivos".

Es importante conocer los subdominios públicos de un dominio principal para así realizar análisis de posibles vulnerabilidades en estos sistemas y encontrar un vector ataque que nos permita cruzar la seguridad perimetral hacia la red interna de la organización, ejecución de código arbitrario, exfiltración de datos, etc.

Probando multitud de herramientas para este fin, he decidido hacer un recopilación comentando aquellas que me parecieron más interesantes para obtener el descubrimiento y enumeración de los subdominios de un dominio principal.

Podemos usar herramientas de recursos web, accesible y rápidas o instalar herramientas en local que dependiendo cual nos mostrará un poco más de detalle, control y harán reconocimientos pasivos y/o activos si así lo definimos.

Las consultas que se realizan a los dominios no es ilegal ya que se trata de información pública en Internet y accesible por todos, siempre y cuando solo busquemos y visualizamos los resultados sin llegar a interactuar maliciosamente y de manera directa.
  • Reconocimiento pasivo: las peticiones no dejará evidencias ni acciones en los logs ya que no se llegaría a interactuar con los objetivos escaneados. Por ejemplo realizar búsquedas usando Google Dorks.
  • Reconocimiento activo: las peticiones o acciones que dejen un rastro registrado en los logs de los objetivos escaneados. Por ejemplo realizar peticiones con diccionarios wordlists de los posibles subdominios.
Herramientas Online
Herramientas Locales

Herramientas Online

DNSDumpsterhttps://dnsdumpster.com/

A parte de los subdominios y sus IPs relacionadas nos devolerá un mapa geoip y los servidor DNS, registros MX y registros TXT. 

DNSDumpster
Figura 1: DNSDumpster.


Nos mostrará todos los subdominios e IPs asociadas, el tipo de servidor, tecnología, tipo de página, a mayores con la versión Pro de pago podremos realizar acciones como escaneo de vulnerabilidades con OpenVAS, URL fuzzer entre otras opciones. 

Pentest-tools
Figura 2: Pentest-tools.


Listará subdominios y en tipo de sistema operativo en el que están alojados, también nos dará la posibilidad de consultar un report de cada subdominio con su IP asociada, geoip, versiones del sitio web y más información. Podemos realizar búsquedas que hagan match con con el término de subdominio que estamos buscando.

Netcraft
Figura 3: Netcraft.


Buscará los simplemente los subdominios asociados a un dominio principal.

IPv4info
Figura 4: IPv4info.


Lista los subdominios y el tipo de registro DNS del que se trata.

RapidDNS
Figura 5: RapidDNS.

Google Hacking (Google Dorks)

Una manera interesante de poder encontrar subdominios es directamente realizando una búsqueda usando Google Dorks (operadores de búsqueda avanzada). Con el operador "site:" indicamos el dominio a buscar y con "-site:" omitimos los resultados que tengan relación con el subdominio "www."

De esta forma se listarán todos los subdominios excepto los que hagan match con www.
site:web.com -site:www.web.com
Google Hacking - Dork
Figura 6: Google Hacking - Dork para buscar subdominios.

Herramientas Locales

Subfinder - https://github.com/projectdiscovery/subfinder

Herramienta en Go. Lista subdominios con un reconocimiento pasivo y actualmente con 26 fuentes donde busca la información.

Descarga: https://github.com/projectdiscovery/subfinder/releases
tar -xzvf subfinder-linux-amd64.tar
mv subfinder-linux-amd64 /usr/bin/subfinder

subfinder -v -d web.com
Dispone de una implementación en Docker: 
https://github.com/projectdiscovery/subfinder#running-in-a-docker-container

Subfinder
Figura 11: Subfinder.

Sudomy - https://github.com/Screetsec/Sudomy

Utiliza la biblioteca cURL para obtener el HTTP Response Body de sitios de terceros para ejecutar la expresión regular y así obtener los subdominios, puede establecerse en un modo de reconocimiento pasivo o activo.

Puede implementarse en Docker. Instalación y dependencias: 
https://github.com/Screetsec/Sudomy#installation

Sudomy
Figura 13: Sudomy.

Amass - https://github.com/OWASP/Amass

Parte del proyecto OWASP a puede realizar diversas tareas usando recursos OSINT y un reconocimiento activo, entre ellas la búsqueda de subdominios por adivinación basada en similitud de FQDN, transferencias de zona, barrido inverso de DNS y fuerza bruta.

Se puede instalar de manera independiente o usando Docker: 
apt install amass

amass enum --passive -d web.com
Amass
Figura 10: Amass.


Herramienta en python. Realiza diversas búsquedas en buscadores y sitios web para obtener la información.

Instalación de pip (pip es el instalador del paquete para Python).
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Instalación: 
git clone https://github.com/aboul3la/Sublist3r.git
cd sublist3r
pip install -r requirements.txt

python sublist3r.py -h
python sublist3r.py -v -d web.com -o subdomweb.txt
Sublist3r
Figura 7: Sublist3r.


Herramienta en python. Nos mostrará IP, estado, tipo de registro, subdominio y tipo de servicio web.
git clone https://github.com/guelfoweb/knock.git
cd knock/knockpy

python knockpy.py web.com
Knockpy
Figura 8: Knockpy.


Herramienta en python. Busca transferencias de zona, registros TXT, MX, registros DMARC y finalmente realiza un escaneo de registros tipo A mediante wordlists.
git clone https://github.com/rbsec/dnscan.git
cd dnscan

python3 dnscan.py -d web.com
dnscan
Figura 9: dnscan.

Findomain - https://github.com/Edu4rdSHL/findomain

Dispone de planes de pago con diversas funcionales, entre ellas la búsqueda continua y activa de subdominios y la notificación de un nuevo dominio. En su versión free simplemente lista los subdominios actuales.
wget https://github.com/Edu4rdSHL/findomain/releases/latest/download/findomain-linux
chmod +x findomain-linux

./findomain-linux -t web.com
Findomain
Figura 12: Findomain.


Herramienta en python. A través de diversos motores de búsqueda y sitios web dado un dominio intenta encontrar emails, perfiles en Linkedin, Twitter, Github, virtual hosts, etc. A mayores también muestra subdominios y su IP asociada. 

Está integrado en Kali linux. Instalación independiente: 

theHarvester
Figura 14: theHarvester.

Saludos!

02 abril, 2020

sshuttle: Múltiples túneles SSH y "VPN" (Proxy transparente)

sshuttle. Se trata de un cliente SSH desarrollado en pyhton que actúa como un proxy transparente funcionando como una "VPN". No se trata de una VPN como definición, sshuttle crea de forma automática distintas reglas usando pfctl (pf - Packet Filter) o en su defecto iptables para un múltiple reenvío de puertos a través de una conexión tunelizada vía SSH.

Ya comentara las diferencias entre los distintos tipos de túneles SSH. Esta aplicación nos abstrae de los detalles de realizar manualmente cada reenvío -port forwarding- a cada IP/Puerto hacia la red remota a la que queremos acceder.

La funcionalidad es como si realmente estuviéramos utilizando una VPN pero canalizada por una única conexión SSH a través de un host de la red remota que hará de equipo puente realizando múltiples túneles de reenvío. Su principal desarrollador Brian May, la define como "la VPN para el hombre pobre".

Soporta tunelización de DNS redireccionando todo el tráfico DNS local a través de la conexión SSH al host remoto, como si estuviéramos utilizando las direcciones DNS de la red remota. Por lo que toda la navegación es como si la hiciésemos a través de la red remota a la que nos conectamos, algo similar a un -dynamic port forwarding- o Proxy SOCKS

Si nos conectamos en un red wifi abierta o pública y queremos estar más seguros navegando y/o acceder a recursos internos de nuestra red doméstica sin necesidad de implementar o alquilar servicio VPN externo de terceros, esta aplicación es una muy buena solución.

Es compatible con Linux y MacOS (Windows con cygwin instalado).

Instalar sshuttle

git clone https://github.com/sshuttle/sshuttle.git
cd sshuttle
sudo ./setup.py install
En mi caso dispongo de una  RaspberryPi con el servicio SSH expuesto a Internet en un puerto no estándar.

Uso de sshuttle

sshuttle [-l [ip:]port] [-r [user@]sshserver[:port]] <subnets...>
sshuttle -v --dns -r USUARIO@IP:PUERTO 192.168.0.0/24
La opción --dns indica el tunelizado de tráfico DNS. 

En el caso de MacOS usa reglas de filtrado de redirección con pf (pfctl). Ejemplo de autenticación con clave pública.
MacOS:~ adrian$ sshuttle -v --dns -r USER@IP/DNS:PORT 10.0.0.0/24
Starting sshuttle proxy.
firewall manager: Starting firewall with Python version 2.7.16
firewall manager: ready method name pf.
IPv6 enabled: True
UDP enabled: False
DNS enabled: True
User enabled: False
TCP redirector listening on ('::1', 12300, 0, 0).
TCP redirector listening on ('127.0.0.1', 12300).
DNS listening on ('::1', 12299, 0, 0).
DNS listening on ('127.0.0.1', 12299).
Starting client with Python version 2.7.16
c : connecting to server...
Starting server with Python version 3.6.9
 s: latency control setting = True
 s: auto-nets:False
c : Connected.
firewall manager: setting up.
>> pfctl -s Interfaces -i lo -v
>> pfctl -s all
>> pfctl -a sshuttle6-12300 -f /dev/stdin
>> pfctl -E
>> pfctl -s Interfaces -i lo -v
>> pfctl -s all
>> pfctl -a sshuttle-12300 -f /dev/stdin
>> pfctl -E
c : DNS request from ('10.0.0.16', 51556) to None: 31 bytes

En el caso de Ubuntu usa reglas de filtrado de redirección con iptables. Ejemplo de autenticación con password.
adrian@ubuntu:~$ sshuttle -v --dns -r USER@DNS/IP:PORT 10.0.0.0/24
Starting sshuttle proxy.
firewall manager: Starting firewall with Python version 3.6.9
firewall manager: ready method name nat.
IPv6 enabled: False
UDP enabled: False
DNS enabled: True
TCP redirector listening on ('127.0.0.1', 12300).
DNS listening on ('127.0.0.1', 12300).
Starting client with Python version 3.6.9
c : connecting to server...
USER@DNS/IP's password:
Starting server with Python version 2.7.17
 s: latency control setting = True
 s: available routes:
c : Connected.
 s:   2/10.0.0.0/24
 s:   2/172.17.0.0/16
 s:   2/172.18.0.0/16
firewall manager: setting up.
>> iptables -t nat -N sshuttle-12300
>> iptables -t nat -F sshuttle-12300
>> iptables -t nat -I OUTPUT 1 -j sshuttle-12300
>> iptables -t nat -I PREROUTING 1 -j sshuttle-12300
>> iptables -t nat -A sshuttle-12300 -j RETURN --dest 127.0.0.1/32 -p tcp
>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 10.0.0.0/24 -p tcp --to-ports 12300 -m ttl ! --ttl 42
>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 127.0.0.53/32 -p udp --dport 53 --to-ports 12300 -m ttl ! --ttl 42
En el caso de Windows se complica el uso de esta herramienta.

Se propone instalar una máquina virtual Linux en modo puente que haga la conexión con sshuttle y desde la máquina anfitrión Windows enrutar todo el tráfico hacia la máquina Linux.

Info: https://sshuttle.readthedocs.io/en/stable/windows.html

Saludos!

27 diciembre, 2018

Transferir roles FSMO Windows Server y hacer purgado de los servicios de Active Directory del dominio

Los roles de maestros de operaciones FSMO (Flexible Single Master Operations) es una característica de Active Directory. Se trata de un conjunto de tareas de un controlador de dominio usadas principalmente para la replicación entre controladores de dominio.

Existen 5 roles FSMO en un Active Directory:
  • Schema Master (Maestro de Esquema). Uno por Bosque.
  • Domain Naming Master (Maestro de Nomenclatura de Dominios). Uno por Bosque.
  • RID Master - Relative Identifier Master (Maestro Identificador Relativo). Uno por Dominio.
  • Infrastructure Master (Maestro de Infraestructura). Uno por Dominio.
  • PDC Emulator - Primary Domain Controller Emulator (Maestro Controlador Principal de Dominio). Uno por Dominio.
Figura 1: 5 Roles FSMO en Active Directory.

Comprobar el estado de los controladores de dominio

dcdiag (Domain Controller Diagnostic Tool) es una herramienta con la que podemos analizar el estado de los controladores de dominio de un bosque, ejecutando una serie de verificaciones se podrá diagnosticar su funcionamiento.

En el siguiente caso vemos el resultado del análisis en un bosque en el que existen dos controladores de dominio, uno de ellos está activo (SrvDominio Windows Server 2016) y el otro inactivo (apagado, Windows Server 2008 R2).
C:\>dcdiag
... ...

   Probando servidor: Nombre-predeterminado-primer-sitio\SRVDOMINIO
      Iniciando prueba: Advertising
         Advertencia: SRVDOMINIO no se está anunciando como un servidor horario.
         ......................... SRVDOMINIO no superó la prueba Advertising
      Iniciando prueba: FrsEvent
         Existen eventos de advertencia o de error en las últimas 24 horas después de compartir SYSVOL. Los problemas
         de replicación de SYSVOL incorrecta pueden ocasionar problemas de la directiva de grupo.
         ......................... SRVDOMINIO superó la prueba FrsEvent
      Iniciando prueba: DFSREvent
         ......................... SRVDOMINIO superó la prueba DFSREvent
      Iniciando prueba: SysVolCheck
         ......................... SRVDOMINIO superó la prueba SysVolCheck
      Iniciando prueba: KccEvent
         ......................... SRVDOMINIO superó la prueba KccEvent
      Iniciando prueba: KnowsOfRoleHolders
         [ADCONTROL1] Error en DsBindWithSpnEx(): 1722,
         El servidor RPC no está disponible..
         Advertencia: ADCONTROL1 es Schema Owner, pero no responde al enlace RPC de DS.
         Error en la búsqueda de atributos con capacidad de búsqueda LDAP en el servidor ADCONTROL1. Valor devuelto =
         81
         Advertencia: ADCONTROL1 es Schema Owner, pero no responde al enlace LDAP.
         Advertencia: ADCONTROL1 es Domain Owner, pero no responde al enlace RPC de DS.
         Advertencia: ADCONTROL1 es Domain Owner, pero no responde al enlace LDAP.
         Advertencia: ADCONTROL1 es PDC Owner, pero no responde al enlace RPC de DS.
         Advertencia: ADCONTROL1 es PDC Owner, pero no responde al enlace LDAP.
         Advertencia: ADCONTROL1 es Rid Owner, pero no responde al enlace RPC de DS.
         Advertencia: ADCONTROL1 es Rid Owner, pero no responde al enlace LDAP.
         Advertencia: ADCONTROL1 es Infrastructure Update Owner, pero no responde al enlace RPC de DS.
         Advertencia: ADCONTROL1 es Infrastructure Update Owner, pero no responde al enlace LDAP.
         ......................... SRVDOMINIO no superó la prueba KnowsOfRoleHolders

... ...


Transferir roles FSMO entre Domain Controller

Listar los roles FSMO

Consolas de Microsoft

Podemos ver los roles FSMO de forma gráfica a través de las propias consolas de gestión de Microsoft. 

En la consola de "Usuarios y equipos de Active Directory" (dsa.msc) podemos ver los siguientes roles de maestros de operaciones: 

  • Administrador de grupos RID, PDC y Maestro de infraestructura.

Figura 2: Maestro de operaciones dsa.msc (RID, PDC e Infrastructure).

En la consola de "Sitios y confianzas de Active Directory" (domain.msc) podemos ver los siguientes roles de maestros de operaciones: 

  • Maestro de nomenclatura de dominio

Figura 3: Sitios y confianzas de Active Directory domain.msc (Maestro de nomenclatura de dominio).

Para poder gestionar la siguiente consola debemos registrar antes una dll en el sistema. 

regsvr32 schmmgmt.dll

Una vez registrada, abrimos una mmc.exe y agregamos el complemento de la consola de "Esquema de Active Directory" donde podemos ver los siguientes roles de maestros de operaciones:

  • Maestro de esquema.

Figura 4: Esquema de Active Directory (Maestro de esquema).

Obtener Roles FSMO

Opción 1: netdom

Existe otra forma de ver más rápidamente y gestionarlo de forma más cómoda como es utilizar netdom una utilidad de línea de comandos para la administración de Active Directory y Relaciones de confianza.

netdom query fsmo
netdom query fsmo
Figura 5: netdom query fsmo

ntdsutil es una utilidad de línea de comandos para la administración de ADDS (Active Directory Domain Services).

Opción 2: PowerShell - Get-ADDomainController y Get-ADForest

Obtener un listado de todos los controladores de dominio de todos los dominios disponibles, comprobar si están habilitados, Hostname e IP (indicar -Domain para indicar un dominio específico).
Get-ADDomainController -Filter * | Select-Object HostName, IPv4Address, Enabled
Obtener un listado de los roles FSMO asociados a los controladores de dominio.
Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator | Format-List
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster | Format-List

 

FSMO: ¿Transfer o Seize?

Transferir ROLES de un servidor activo a uno nuevo (de ADCONTROL1 a SRVDOMINIO)
C:\>ntdsutil
ntdsutil: roles
fsmo maintenance: connections
server connections: connect to server SrvDominio
Enlazando a SrvDominio ...
Conectado a SrvDominio usando credenciales de usuario conectado localmente.
server connections: q
fsmo maintenance: transfer naming master
fsmo maintenance: transfer infrastructure master
fsmo maintenance: transfer PDC
fsmo maintenance: transfer RID master
fsmo maintenance: transfer schema master
fsmo maintenance: q
ntdsutil: q

Transferir ROLES de un servidor inactivo (apagado) a uno activo (de ADCONTROL1 a SRVDOMINIO)
C:\>ntdsutil
ntdsutil: roles
fsmo maintenance: connections
server connections: connect to server SrvDominio
Enlazando a SrvDominio ...
Conectado a SrvDominio usando credenciales de usuario conectado localmente.
server connections: q
fsmo maintenance: seize naming master
fsmo maintenance: seize infrastructure master
fsmo maintenance: seize PDC
fsmo maintenance: seize RID master
fsmo maintenance: seize schema master
fsmo maintenance: q
ntdsutil: q

Una vez transferidos los roles FSMO volvemos a comprobar su estado y que se transfirieron correctamente.

netdom query fsmo
Figura 6: netdom query fsmo

Purgado de servicios de Active Directory en el caso de que un DC ya no vaya estar operativo en el dominio

Si se trata de un servidor que ya no estará operativo en el bosque habrá que limpiar o "purgar" el resto de servicios que puedan estar asociados al DC viejo.

1. Limpiar registros DNS

Eliminar todos los registros que apunten al DC viejo en toda la jerarquía del Administrador de DNS.

eliminar registros dns dc viejo fsmo
Figura 7: Eliminar registros DNS del DC viejo.

2. Limpiar Sitios y Servicios de Active Directory

Eliminar el servidor DC viejo de "Sitios y Servicios de Active Directory".

eliminar registros sitios y servicios de active directory dc viejo fsmo
Figura 8: Eliminar registros de "Sistios y servicios de Active Directory".

3. Limpiar Active Directory

Eliminar los objetos de equipos de las OU (Organizational Unit) Computers y Domain Controllers.

eliminar cuentas y objetos de active directory dc viejo fsmo
Figura 9: Eliminar los DC de Active Directory.

4. Cambiar opciones del servicio DHCP

En el caso de tener el rol del servicio DHCP instalado, eliminar de los servidores DNS de las Opciones de ámbito la dirección IP del DC viejo.

eliminar opciones servidores dns del servidor dhcp dc viejo fsmo
Figura 10: Eliminar IP del DC del servicio DHCP.

5. Cambiar direcciones DNS a los equipos de la red interna

Cambiar las direcciones DNS al resto de máquinas de la red interna con ip estática definida Windows o Linux ya sean servidores o equipos clientes.

Saludos!

02 febrero, 2018

Blogger ya permite el cambio de HTTP a HTTPS para dominios personalizados

Hasta principios de este año Blogger solo permitía la implementación HTTPS y redirección HTTP a HTTPS en sus propios subdominios blogspot.com o blogspot.com.es.

Recientemente Blogger añadió una funcionalidad que nos permite hacer lo mismo pero para dominios personalizados, dominios personalizados adquiridos desde el propio panel de Blogger. Es decir, permitía comprar un dominio disponible a través de una empresa registradora de terceros (Registrar) pero con la gestión subyacente de Google-Blogger para la configuración de ese nombre de dominio (DNS).

Para poder activar HTTPS y la redirección de HTTP a HTTPS para un nombre de dominio personalizado. Podremos hacerlo dentro del dashboard de Blogger en: Configuración > Lo básico > y nos vamos al apartado HTTPS. Ahí seleccionamos que "Si" a la disponibilidad de HTTPS.

Transcurridos entre uno a dos días, tiempo necesario para la verificación del cambio de protocolo, se nos habilitará la opción de poder redirigir a HTTPS. Esta hará que siempre que se consulte nuestro nombre de dominio o cualquier enlace que aún esté en HTTP fuerce el cambio a HTTPS, redireccionando siempre a este protocolo.

Cambio de HTTP a HTTPS en dominios personalizados de blogger
Figura 1: Cambio de HTTP a HTTPS en dominios personalizados de blogger.

En mi caso, ya tengo las dos opciones habilitadas. El autoridad certificadora (CA) es Let's Encrypt que dispone de certificados gratuítos y es la que actualmente usa Google para ofrecer esta funcionalidad, que en principio es gratuita.

Let's Encrypt​ como CA en un dominio personlizado de blogger.
Figura 2: Let's Encrypt​ como CA en un dominio personlizado de blogger.

Podemos realizar un búsqueda WHOIS del nombre de dominio para conocer a la entidad registradora o "Registrar", que en este caso es "enom.com". Esta es una de las empresas de terceros asociadas con Google para conceder dominios personalizados a través de la plataforma de Blogger.

Para realizar búsqueda WHOIS podemos hacerla de varias formas:
  • Cualquier web que permita realizar búsquedas WHOIS (por ejemplo oficialmente la ICANN): https://whois.icann.org
  • Con la herramienta de comandos de Sysinternals WHOIS de Microsoft.
  • Instalando el paquete WHOIS en sistema Linux: "apt install whois".
Búsqueda WHOIS - Registrar del dominio personalizado de Blogger.
Figura 3: Búsqueda WHOIS - Registrar del dominio personalizado de Blogger.

Esto es un gran punto a favor de blogger ya que a partir de ahora todos aquellos dominios personalizados que estén funcionando bajo la plataforma de Blogger no se verán afectos a las futuras "restricciones" de los navegadores web cuando los usuarios naveguen en sitios sin cifrar. A parte de inspirar más confianza y "seguridad" a los visitantes de nuestro sitio web.

Saludos!

29 abril, 2012

DNS Cache Snooping con nslookup: Saber que páginas web visitan los usuarios de una organización

nslookup (Name System Lookup) podemos saber que organizaciones tienen configurado un name server (ns) y que páginas web visitan sus usuarios consultando de forma no recursiva la caché DNS del servidor de nombres.

Cuando un usuario desde su máquina quiere resolver un nombre de dominio mediante un petición DNS, éste pregunta al servidor DNS que tiene configurado. Si este tiene activada la caché, la busca y devuelve la la consulta a la máquina del usuario, si el servidor no la tiene disponible en sus caché DNS, que por defecto la almacena con un TTL (Time to live o Tiempo de vida) de unos 3.600 segundos (1 hora) aunque este tiempo es configurable en la administración del servidor DNS.

Si no la tiene en su caché la solicita por medio de un sistemas de consultas recursivas, que es la capacidad que tiene un sistema de nombre de dominios de reenviar la petición a otro servidor DNS si no disponen de la dirección solicitada en su caché DNS o en un pasado la tuvo pero ya caducó dicho dirección. Una vez resuelta la petición el servidor la almacena en su caché DNS y devuelve el resultado a la máquina que solicitó la petición.

Conociendo este funcionamiento, si alguien quiere saber si se ha resuelto un determinado dominio, simplemente tendremos que realizar las consultas anulando la resolución recursiva en el servidor DNS. De este modo, conseguiremos realizar las consultas solo a la caché del DNS. Si se ha pedido en un tiempo reciente, al indicado anteriormente por defecto en el TTL, se obtendrá la resolución, por lo contrario obtendremos una respuesta negativa de resolución.

Para hacer esta prueba, basta con que te conectes al servidor NS de una organización, selecciones el tipo de consulta como norecurse y empieces a probar nombres de dominio. En la siguiente imagen se puede ver como los clientes del DNS de Renfe se conectan a facebook pero no a mi blog.

[1] - Abrimos una shell y entramos en el modo del comando: nslookup
[2] - Ahora, establecemos un tipo de consulta para un name server (NS) escribiendo: set type=ns
[3] - A continuación ya podremos poner la website a solicitar la petición. Por ejemplo:
[4] - Seleccionamos el name server 1 (por ejemplo: ns1.correos.es), para realizar las consultas sobre este lo establecemos como servidor actual: server ns1.correos.es
[5] - Una vez seleccionado indicamos una consulta para que se nos muestre información de un host conectado a la red mediante: set type=a
[6] - Ahora lo más importante, indicamos que sobre la consulta obtengamos información NO recursiva con los argumentos: set norecurse
[7] - Y finalmente, realizamos los nombres de dominio a consultar, en mi caso escogí: www.facebook.com y mi blog (www.zonasystem.com). Si el nombre domino está en la caché DNS del servidor ns1 que seleccionamos, entonces veremos que nos responde obteniendo información de esa caché y que no realiza más preguntas a otros server DNS para resolver el nombre, por lo contrario, si pregunta a otros servidores DNS es que dicho nombre no estaba disponible en su caché actual.

En la siguiente screenshot se puede ver que www.marca.com a sido visitado recientemente (dependiendo el TTL de la caché DNS configurado para este servidor), sin embargo, www.zonasystem.com no a sido visitado recientemente, ya que como podemos observar pregunta a servidores g.gtld... para resolver el nombre de dominio.

Figura 1: Ejemplo de comprobación de la caché de los servidores ns de correos.es
Podremos obtener más información si consultamos la ayuda del comando nslookup y a su vez los argumentos tipo: set type=[opción].

Tipos de consultas de registros para los servidores DNS

A (Address): Se utiliza para traducir nombres de hosts del dominio a direcciones IP, es el valor predeterminado.
ANY (Cualquiera): Toda la información que exista.
CNAME (Canonical Name): Devuelve una lista de alias, si existen para el nombre verdadero (canonical).
NS (Name Server): Especifica el nombre para un dominio.
MX (Mail Exchange): Especifica el servidor encargado de recibir el correo electrónico para el dominio.
PTR (Pointer): Lo inverso del registro A, realiza la traducción de direcciones IP a nombres de host.
TXT (Text): Permite extraer información adicional a un dominio.

Saludos!

Entradas Populares