El comando HOST es una sencilla utilidad de interfaz de línea de comandos para realizar la enumeración DNS.

En la investigación de seguridad y el hacking ético, la enumeración DNS es la primera fase en la recopilación de información de un objetivo. Es el proceso de consulta de todos los registros DNS potenciales de un servidor de nombres de dominio, como detalles del servidor de nombres, direcciones IP, detalles del intercambiador de correo, TTL y más.

Los atacantes pueden utilizar esta información enumerada por DNS para examinar los registros internos de la red.

Existen numerosas herramientas de reconocimiento de DNS y de enumeración en línea disponibles en Internet. Sin embargo, la enumeración DNS puede realizarse fácilmente con una única utilidad de línea de comandos. Se trata de «HOST».

En este artículo, veremos algunos ejemplos útiles de comandos host para consultar detalles DNS.

¡Empecemos!

Instalación

El comando «HOST» a veces puede no estar disponible por defecto en una máquina recién instalada. Como resultado, tendrá que instalarlo manualmente en el sistema. El proceso de instalación es bastante sencillo.

Todos los comandos relacionados con DNS como nslookup, dig y host están contenidos en la librería «bind-utils». Para ello, sólo tiene que teclear el siguiente comando en el terminal.

sudo apt-get install dnsutils -y

Este comando HOST funciona tanto en MAC como en Linux.

Uso

Sintaxis general: El comando general «host» imprime la sintaxis general del comando y los argumentos que se pueden utilizar con él, así como una breve descripción de cada argumento.

Ejemplo de salida:

┌──(geekflare㉿kali)-[~]
└─$ host    
Uso: host [-aCdilrTvVw] [-c class] [-N ndots] [-t type] [-W time]
            [-R número] [-m bandera] [-p puerto] hostname [servidor]
       -a es equivalente a -v -t ANY
       -A es como -a pero omite RRSIG, NSEC, NSEC3
       -c especifica la clase de consulta para los datos no IN
       -C compara los registros SOA en los servidores de nombres autoritativos
       -d es equivalente a -v
       -l enumera todos los hosts de un dominio, utilizando AXFR
       -m establece la bandera de depuración de memoria (trace|record|usage)
       -N cambia el número de puntos permitidos antes de realizar la búsqueda raíz
       -p especifica el puerto en el servidor a consultar
       -r desactiva el procesamiento recursivo
       -R especifica el número de reintentos para paquetes UDP
       -s una respuesta SERVFAIL debe detener la consulta
       -t especifica el tipo de consulta
       -T habilita el modo TCP/IP
       -U activa el modo UDP
       -v activa la salida detallada
       -V imprime el número de versión y sale
       -w especifica esperar eternamente una respuesta
       -W especifica cuánto tiempo esperar una respuesta
       -4 utilizar sólo transporte de consulta IPv4
       -6 utilizar sólo transporte de consulta IPv6

Para encontrar la dirección IP del dominio

Para encontrar la dirección IP de un dominio en particular, simplemente pase el nombre del dominio de destino como argumento después del comando host.

host Dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host geekflare.com/es
geekflare.com/es has address 104.27.118.115
geekflare.com/es tiene la dirección 104.27.119.115
geekflare.com/es tiene la dirección IPv6 2606:4700:20::681b:7673
geekflare.com/es tiene la dirección IPv6 2606:4700:20::681b:7773
el correo de geekflare.com/es es gestionado por 1 aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 5 alt1.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 5 alt2.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 10 alt3.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 10 alt4.aspmx.l.google.com.

Para una búsqueda exhaustiva utilizando el modo verboso, utilice la opción de bandera -a o -v.

Ejemplo de salida:

┌──(geekflare㉿kali)-[~]
└─$ host -a geekflare.com/es 
Probando "geekflare.com/es"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24690
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; SECCIÓN DE PREGUNTAS:
;geekflare.com/es.                 EN CUALQUIER

;; SECCIÓN DE RESPUESTAS:
geekflare.com/es.          3789 EN HINFO "RFC8482" ""
geekflare.com/es.          3789 IN RRSIG HINFO 13 2 3789 20220307065004 20220305045004 34505 geekflare.com/es. HW0Lfr5HazPMaACSBHmFqs94usKUljX kONW/8Q2jwQ1QoAO9DEMjwDX rIQKODGtGnEizj2SzBF98mC2uQr7hQ==

Recibido 161 bytes desde 192.168.1.1#53 en 64 ms

Esta opción (-a) se utiliza para encontrar todos los registros de dominio y la información de las zonas. También puede observar la dirección del servidor DNS local utilizada para la búsqueda.

Para realizar una Búsqueda Inversa

Este comando realiza una búsqueda inversa en la dirección IP y muestra el nombre de host o de dominio.

Como ejemplo, la sintaxis sería la siguiente:

host target-ip-address

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host dnsleaktest.com               
dnsleaktest.com tiene la dirección 23.239.16.110
                                                                                                              
┌──(geekflare㉿kali)-[~]
└─$ host 23.239.16.110  
110.16.239.23.in-addr.arpa puntero de nombre de dominio li685-110.members.linode.com.

Si copia-pega la dirección del puntero ( li685-110.members.linode.com.) en el navegador web, será redirigido al sitio web.

Para encontrar servidores de nombres de dominio

Utilice la opción -t para obtener los servidores de nombres de dominio. Se utiliza para especificar el tipo de consulta.

Aquí estoy pasando el argumento -t para encontrar los servidores de nombres de un nombre de dominio específico.

El registro NS especifica los servidores de nombres autoritativos.

host -t ns dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host -t ns geekflare.com/es
geekflare.com/es servidor de nombres olga.ns.cloudflare.com.
geekflare.com/es servidor de nombres todd.ns.cloudflare.com.

Para consultar determinado servidor de nombres de dominio

Para consultar detalles sobre un servidor de nombres de dominio autoritativo específico, utilice el siguiente comando.

host dominio-destino [servidor-de-nombres]

Salida de ejemplo:

┌──(root💀kali)-[/home/geekflare]
└─# host geekflare.com/es olga.ns.cloudflare.com.                                                           1 ⨯
Usando servidor de dominio:
Nombre: olga.ns.cloudflare.com.
Dirección: 173.245.58.137#53
Alias: 

geekflare.com/es tiene la dirección 104.27.118.115
geekflare.com/es tiene la dirección 104.27.119.115
geekflare.com/es tiene la dirección IPv6 2606:4700:20::681b:7773
geekflare.com/es tiene la dirección IPv6 2606:4700:20::681b:7673
el correo de geekflare.com/es es gestionado por 1 aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 5 alt1.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 5 alt2.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 10 alt3.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 10 alt4.aspmx.l.google.com.

Para encontrar los registros MX de un dominio

Para obtener una lista de los registros MX ( Mail Exchanger ) de un dominio.

host -t MX dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host -t mx geekflare.com/es
el correo de geekflare.com/es es gestionado por 1 aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 5 alt1.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 5 alt2.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 10 alt3.aspmx.l.google.com.
el correo de geekflare.com/es es gestionado por 10 alt4.aspmx.l.google.com.

Este registro MX es responsable de dirigir un correo electrónico a un servidor de correo.

Para encontrar los registros TXT de un dominio

Para obtener una lista de los registros TXT ( información legible por humanos sobre un servidor de dominio ) de un dominio.

host -t txt dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host -t txt geekflare.com/es
geekflare.com/es descriptive text "google-site-verification=MRSwa454qay1S6pwwixzoiZl08kfJfkhiQIslhok3-A"
geekflare.com/es descriptive text "google-site-verification=7QXbgb492Y5NVyWzSAgAScfUV3XIAGTKKZfdpCvcaGM"
geekflare.com/es texto descriptivo "yandex-verification: 42f25bad396e79f5"
geekflare.com/es descriptive text "v=spf1 include:_spf.google.com include:mailgun.org include:zcsend.net ~all"
geekflare.com/es descriptive text "ahrefs-site-verification_8eefbd2fe43a8728b6fd14a393e2aff77b671e41615d2c1c6fc365ec33a4d6d0"
texto descriptivo de geekflare.com/es "ca3-7fbfaa573ba248ddb17a618e5b46ca01"

Para encontrar el registro SOA de un dominio

Para obtener una lista del registro SOA ( inicio de autoridad ) de un dominio

host -t soa dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host -t soa geekflare.com/es
geekflare.com/es tiene registro SOA olga.ns.cloudflare.com. dns.cloudflare.com. 2271966690 10000 2400 604800 3600

Utilice el siguiente comando para comparar los registros SOA de todos los servidores de nombres autoritativos para una zona determinada ( la parte específica del espacio de nombres DNS ).

host -C dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host -C geekflare.com/es 2 ⨯
El servidor de nombres 173.245.58.137:
        geekflare.com/es tiene registro SOA olga.ns.cloudflare.com. dns.cloudflare.com. 2271966690 10000 2400 604800 3600

Para encontrar registros CNAME de dominio

CNAME significa registro de nombre canónico. Este registro DNS se encarga de redirigir un dominio a otro, lo que significa que mapea el nombre de dominio original a un alias.

Para averiguar los registros DNS CNAME del dominio, utilice el siguiente comando.

host -t cname dominio-destino

Salida de ejemplo:

┌──(geekflare㉿kali)-[~]
└─$ host -t cname geekflare.com/es
geekflare.com/es no tiene registro CNAME

Si el nombre de dominio de destino tiene algún registro CNAME, se mostrará después de ejecutar el comando.

Para encontrar la información TTL del dominio

TTL significa Time to live (tiempo de vida). Forma parte del servidor de nombres de dominio. Lo establece automáticamente un servidor de nombres autoritativo para cada registro DNS.

En palabras sencillas, TTL se refiere al tiempo que un servidor DNS almacena en caché un registro antes de actualizar los datos. Utilice el siguiente comando para ver la información TTL de un nombre de dominio.

host -v -t a dominio-destino

Salida de ejemplo:

┌──(root💀kali)-[/home/geekflare]
└─# host -v -t a geekflare.com/es 1 ⨯
Probando "geekflare.com/es"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2479
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; SECCIÓN DE PREGUNTAS:
;geekflare.com/es.                 EN A

;; SECCIÓN DE RESPUESTAS:
geekflare.com/es.          30 EN A 104.27.119.115
geekflare.com/es.          30 EN UN 104.27.118.115

Recibido 63 bytes desde 192.168.1.1#53 en 60 ms

Conclusión

Espero que este artículo le haya sido útil para conocer algunos ejemplos de comandos host útiles para consultar detalles DNS.

Puede que también le interese conocer herramientas en línea gratuitas para comprobar los registros DNS de un nombre de dominio.