Curso 1 — DNS Under the Microscope
Laboratorio Bloque 2 — Observando una transacción DNS
En este laboratorio utilizaremos dig y Wireshark para generar, capturar y analizar tráfico DNS real.
1. Objetivo del laboratorio
Al finalizar este laboratorio, el participante deberá ser capaz de:
- Generar consultas DNS controladas con dig.
- Capturar tráfico DNS utilizando Wireshark.
- Identificar una consulta DNS y su respuesta correspondiente.
- Identificar la dirección IP del cliente y del resolver.
- Localizar QNAME y QTYPE.
- Identificar el Transaction ID.
- Interpretar el RCODE.
- Examinar la sección Answer.
- Identificar el TTL de una respuesta.
- Observar el tiempo transcurrido entre Query y Response.
2. Requisitos previos
Antes de iniciar, verifica que tu equipo tenga los siguientes elementos:
- Conexión a Internet.
- Wireshark instalado.
- Permisos para realizar capturas de red.
- La herramienta dig instalada y disponible desde Terminal.
3. Validar que dig está disponible
Abre una ventana de Terminal y ejecuta:
dig example.com
Si dig está instalado correctamente, deberás obtener una respuesta DNS con información similar a:
- QUESTION SECTION
- ANSWER SECTION
- SERVER
- Query time
4. Preparar Wireshark
Abre Wireshark y selecciona la interfaz de red que estás utilizando.
- Wi-Fi
- Ethernet
Inicia la captura.
5. Filtrar tráfico DNS
En la barra de filtros de Wireshark escribe:
dns
Presiona Enter.
A partir de este momento Wireshark mostrará únicamente tráfico identificado como DNS.
6. Generar una consulta tipo A
Regresa a Terminal y ejecuta:
dig example.com A
Regresa inmediatamente a Wireshark y localiza la consulta.
7. Identificar WHO — ¿Quién participa?
Selecciona el paquete correspondiente a la consulta DNS y localiza:
- IP Source
- IP Destination
Anota ambos valores:
Cliente DNS: ______________________
Resolver DNS: _____________________
8. Identificar WHAT — QNAME y QTYPE
Expande la sección:
Domain Name System
Después identifica:
- QNAME
- QTYPE
Para esta consulta deberías observar:
QNAME: example.com
QTYPE: A
9. Identificar WHERE — Resolver y puerto
Revisa nuevamente la información IP y de transporte.
Identifica:
- Dirección IP del resolver.
- Puerto de origen.
- Puerto de destino.
En una consulta DNS tradicional deberás observar el puerto:
53
10. Identificar Query y Response
Para mostrar únicamente consultas DNS utiliza:
dns.flags.response == 0
Para mostrar únicamente respuestas DNS utiliza:
dns.flags.response == 1
Observa cómo la dirección IP de origen y destino se invierte entre la consulta y la respuesta.
11. Transaction ID
Selecciona la consulta DNS y localiza:
Transaction ID
Después verifica el mismo valor en la respuesta correspondiente.
Transaction ID Query: __________________
Transaction ID Response: __________________
Ambos valores deben coincidir.
12. RESULT — RCODE
Selecciona la respuesta DNS y localiza:
Reply code
También puedes utilizar el siguiente filtro para trabajar con el Response Code:
dns.flags.rcode
Para una consulta exitosa normalmente observarás:
NOERROR
13. Analizar la sección Answer
Dentro de la respuesta DNS, localiza:
Answers
Identifica la dirección IPv4 devuelta.
Respuesta A: __________________
14. Identificar TTL
Dentro del registro de respuesta localiza:
Time to live
También puedes utilizar el siguiente campo en filtros de Wireshark:
dns.resp.ttl
Anota el TTL observado.
TTL: __________________ segundos
15. TIME — Tiempo de respuesta
Observa cuánto tiempo transcurrió entre la consulta y la respuesta.
Tiempo de respuesta: __________________
16. Generar una consulta AAAA
Ejecuta:
dig example.com AAAA
Regresa a Wireshark y localiza la nueva transacción.
Compara esta consulta con la consulta tipo A anterior.
17. Consultar un resolver específico
dig también permite decidir qué servidor DNS utilizar.
Utiliza la sintaxis:
dig @DNS-SERVER example.com A
Sustituye DNS-SERVER por la dirección IP del resolver que
quieras utilizar durante el laboratorio.
Observa especialmente:
- IP de destino de la consulta.
- IP de origen de la respuesta.
18. Configurar columnas útiles en Wireshark
Para facilitar el análisis de múltiples consultas DNS, podemos agregar columnas específicas a Wireshark.
| Nombre de columna | Campo Wireshark |
|---|---|
| QNAME | dns.qry.name |
| RNAME | dns.resp.name |
| RSP TTL | dns.resp.ttl |
19. Filtros útiles para análisis DNS
Durante el laboratorio puedes utilizar los siguientes filtros.
Mostrar todo el tráfico DNS:
dns
Mostrar únicamente consultas:
dns.flags.response == 0
Mostrar únicamente respuestas:
dns.flags.response == 1
Filtrar por nombre consultado:
dns.qry.name
Examinar el tipo de consulta:
dns.qry.type
Examinar Response Code:
dns.flags.rcode
Examinar TTL:
dns.resp.ttl
20. Tabla de observaciones
Completa la siguiente tabla utilizando los datos observados durante el laboratorio:
| Elemento | Consulta A | Consulta AAAA |
|---|---|---|
| IP del cliente | ||
| IP del resolver | ||
| QNAME | ||
| QTYPE | ||
| Transaction ID | ||
| RCODE | ||
| Answer | ||
| TTL | ||
| Tiempo de respuesta |
21. Preguntas de análisis
- ¿Qué dirección IP está utilizando tu equipo como resolver DNS?
- ¿Qué diferencia observaste entre una consulta A y una AAAA?
- ¿Cómo puedes relacionar una Query con su Response?
- ¿Qué información proporciona el RCODE?
- ¿Qué función tiene el TTL?
- ¿El tiempo de respuesta fue similar en todas las consultas?
- ¿Qué cambia cuando utilizas un resolver específico con dig?
22. Resultado esperado
Al finalizar el laboratorio deberás poder seleccionar cualquier transacción DNS básica dentro de Wireshark y responder:
- WHO: ¿quién realizó la consulta y quién respondió?
- WHAT: ¿qué nombre y qué tipo de registro se consultó?
- WHERE: ¿qué resolver recibió la consulta?
- RESPONSE: ¿cuál es la respuesta correspondiente?
- RESULT: ¿qué RCODE, Answer y TTL se obtuvieron?
- TIME: ¿cuánto tardó la respuesta?
Conclusión
El objetivo de este ejercicio no es memorizar campos de Wireshark. El objetivo es desarrollar una metodología repetible para analizar DNS.