4.6.4.3 Práctica de laboratorio: Usar Wireshark para examinar capturas de TCP y UDP

Última actualización: octubre 16, 2022

4.6.4.3 Práctica de laboratorio: Usar Wireshark para examinar capturas de TCP y UDP (versión para el instructor)

Nota para el instructor: Los elementos con color de fuente rojo o resaltados en gris indican texto que aparece solo en la copia del instructor.

Topología: Parte 1 (FTP)

La parte 1 destacará una captura de TCP de una sesión FTP. Esta topología consta de la VM CyberOps Workstation con acceso a Internet.

Topología de Mininet: Parte 2 (TFTP)

En la Parte 2 se resaltará una captura UDP de una sesión TFTP utilizando los hosts de Mininet.

Objetivos

Parte 1: Identificar campos de encabezado y operación TCP mediante una captura de sesión FTP de Wireshark.
Parte 2: Identificar campos de encabezado y operación UDP mediante una captura de sesión TFTP de Wireshark.

Aspectos básicos/situación

Dos de los protocolos de la capa de transporte de TCP/IP son TCP (definido en RFC 761) y UDP (definido en RFC 768). Los dos protocolos admiten la comunicación de protocolos de capa superior. Por ejemplo, TCP se utiliza para proporcionar soporte de capa de transporte para el protocolo de transferencia de hipertexto (HTTP) y FTP, entre otros. UDP proporciona soporte de capa de transporte para el sistema de nombres de dominio (DNS) y TFTP, entre otros.

En la Parte 1 de esta práctica de laboratorio utilizarán la herramienta de código abierto Wireshark para capturar y analizar campos de encabezado del protocolo TCP para las transferencias de archivos FTP entre el equipo host y un servidor FTP anónimo. Se utiliza la línea de comandos del terminal para establecer una conexión a un servidor FTP anónimo y descargar un archivo. En la Parte 2 de esta práctica de laboratorio, utilizarán Wireshark para capturar y analizar campos de encabezado UDP correspondientes a transferencias de archivos TFTP entre computadoras host de Mininet.

Nota para el instructor: El uso de un analizador de protocolos de paquetes como Wireshark se puede considerar una infracción de la política de seguridad del lugar de estudios. Se recomienda obtener autorización antes de usar Wireshark para esta práctica de laboratorio. Si el uso de un programa detector de paquetes resulta ser un problema, el instructor puede asignar la práctica de laboratorio como tarea para el hogar o hacer una demostración.

Recursos necesarios

  • VM CyberOps Workstation
  • Acceso a Internet

Parte 1: Identificar campos de encabezado y operación TCP mediante una captura de sesión FTP de Wireshark

En la parte 1, utilizará Wireshark para capturar una sesión FTP e inspeccionar los campos de encabezado de TCP.

Paso 1: Iniciar una captura de Wireshark

a. Abran la VM CyberOps Workstation e inicien sesión. Abran una ventana del terminal e inicien Wireshark. Introduzcan la contraseña cyberops y hagan clic en OK (Aceptar) cuando el sistema se los solicite.

[analyst@secOps ~]$ sudo wireshark-gtk

b. Inicien una captura de Wireshark correspondiente a la interfaz enp0s3.

c. Abran otra ventana del terminal para acceder al sitio ftp externo. Escriban ftp ftp.cdc.gov en el cursor. Conéctense al sitio FTP de los Centros para el Control y la Prevención de Enfermedades (CDC) con el usuario anonymous y sin contraseña.

[analyst@secOps ~]$ ftp ftp.cdc.gov
Connected to ftp.cdc.gov.
220 Microsoft FTP Service
Name (ftp.cdc.gov:analyst): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password: 
230 User logged in.
Remote system type is Windows_NT.
ftp>

Paso 2: Descargar el archivo Readme.

a. Localicen y descarguen el archivo Readme; para ello, introduzcan el comando ls para generar una lista de los archivos.

ftp> ls
200 PORT command successful.
125 Data connection already open; Transfer starting.
-rwxrwxrwx   1 owner    group             128 May  9  1995 .change.dir
-rwxrwxrwx   1 owner    group             107 May  9  1995 .message
drwxrwxrwx   1 owner    group               0 Feb  2 11:21 pub
-rwxrwxrwx   1 owner    group            1428 May 13  1999 Readme
-rwxrwxrwx   1 owner    group             383 May 13  1999 Siteinfo
-rwxrwxrwx   1 owner    group               0 May 17  2005 up.htm
drwxrwxrwx   1 owner    group               0 May 20  2010 w3c
-rwxrwxrwx   1 owner    group             202 Sep 22  1998 welcome.msg
226 Transfer complete.

Nota: Es posible que reciba el siguiente mensaje:

421 Service not available, remote server has closed connection
ftp: No control connection for command

Si esto sucede, significa que en ese momento el servidor FTP no funciona. Sin embargo, puede proceder con el resto de la práctica de laboratorio con el análisis de los paquetes que pudo capturar y con la búsqueda de paquetes que no haya capturado. También puede volver a la práctica de laboratorio más tarde para ver si el servidor FTP volvió a funcionar.

b. Introduzca el comando get Readme para descargar el archivo. Cuando finalice la descarga, introduzca el comando quit para salir.

ftp> get Readme
200 PORT command successful.
125 Data connection already open; Transfer starting.
WARNING! 36 bare linefeeds received in ASCII mode
File may not have transferred correctly.
226 Transfer complete.
1428 bytes received in 0.056 seconds (24.9 kbytes/s)

c. Una vez finalizada la transferencia, introduzcan quit para salir de ftp.

Paso 3: Detener la captura Wireshark

Paso 4: Ver la ventana principal de Wireshark

Wireshark capturó muchos paquetes durante la sesión FTP para ftp.cdc.gov. Si quiere limitar la cantidad de datos para el análisis, aplique el filtro tcp and ip.addr == 198.246.117.106 y haga clic en Aplicar.

Nota: La dirección IP, 198.246.117.106, era la dirección correspondiente a ftp.cdc.gov cuando se creó esta práctica de laboratorio. Sus direcciones IP pueden ser diferentes. Si es así, busquen el primer paquete TCP que inició el Protocolo de enlace de 3 vías con ftp.cdc.gov. La dirección IP de destino es la dirección IP que deben utilizar para el filtro.

Nota: Es posible que su interfaz de Wireshark difiera ligeramente de la imagen anterior.

Paso 5: Analizar los campos TCP

Una vez aplicado el filtro de TCP, en los primeros tres paquetes (sección superior) se muestra la secuencia de [SYN], [SYN, ACK] y [ACK], que es el protocolo de enlace TCP de tres vías.

TCP se utiliza en forma continua durante una sesión para controlar la entrega de datagramas, verificar la llegada de datagramas y administrar el tamaño de la ventana. Para cada intercambio de datos entre el cliente FTP y el servidor FTP, se inicia una nueva sesión TCP. Al término de la transferencia de datos, se cierra la sesión TCP. Cuando finaliza la sesión FTP, TCP realiza un cierre y un apagado ordenados.

En Wireshark, se encuentra disponible información detallada sobre TCP en el panel de detalles del paquete (sección media). Resalte el primer datagrama TCP de la computadora host y expanda porciones del datagrama TCP, como se muestra a continuación.

El datagrama TCP expandido se muestra de manera similar al panel de detalles de paquetes que se muestra a continuación.

La imagen anterior es un diagrama del datagrama TCP. Se proporciona una explicación de cada campo para referencia:

  • El número de puerto de origen TCP pertenece al host de la sesión TCP que abrió una conexión. Generalmente el valor es un valor aleatorio superior a 1.023.
  • El número de puerto de destino TCP se utiliza para identificar el protocolo de capa superior o la aplicación en el sitio remoto. Los valores en el intervalo de 0 a 1023 representan los “puertos bien conocidos” y están asociados a servicios y aplicaciones populares (como se describe en la RFC 1700), por ejemplo, Telnet, FTP y HTTP. La combinación de la dirección IP de origen, el puerto de origen, la dirección IP de destino y el puerto de destino identifica de manera exclusiva la sesión para el remitente y para el destinatario.

Nota: En la captura anterior de Wireshark, el puerto de destino es 21, que es el FTP. Los servidores FTP escuchan las conexiones de cliente FTP en el puerto 21.

  • Sequence number (Número de secuencia) especifica el número del último octeto en un segmento.
  • Acknowledgment number (Número de reconocimiento) especifica el siguiente octeto que espera el destinatario.
  • Code bits (bits de código) tiene un significado especial en la administración de sesiones y en el tratamiento de los segmentos. Entre los valores interesantes se encuentran:
    • ACK: reconocimiento de la recepción de un segmento.
    • SYN: sincronizar, solo se define cuando se negocia una sesión de TCP nueva durante el protocolo de enlace de tres vías de TCP.
    • FIN: finalizar, la solicitud para cerrar la sesión de TCP.
  • Window size (Tamaño de la ventana) es el valor de la ventana deslizante. Determina cuántos octetos pueden enviarse antes de esperar un reconocimiento.
  • Urgent pointer (Puntero urgente) solo se utiliza con un marcador urgente (URG) cuando el remitente necesita enviar datos urgentes al destinatario.
  • En Options (Opciones), hay una sola opción actualmente, y se define como el tamaño máximo del segmento TCP (valor opcional).

Utilice la captura Wireshark del inicio de la primera sesión TCP (bit SYN fijado en 1) para completar la información acerca del encabezado TCP. Es posible que algunos campos no se apliquen a este paquete.

De la VM al servidor CDC (solamente el bit SYN está definido en 1):

Dirección IP de origen 192.168.1.17*
Dirección IP de destino 198.246.117.106
Número de puerto de origen 49411*
Número de puerto de destino 21
Número de secuencia 0 (relativo)
Número de acuse de recibo No corresponde para esta captura
Longitud del encabezado 32 bytes
Tamaño de la ventana 8192

*Las respuestas de los estudiantes varían.

En la segunda captura filtrada de Wireshark, el servidor FTP de CDC confirma que recibió la solicitud de la VM. Observe los valores de los bits de SYN y ACK.

Complete la siguiente información sobre el mensaje de SYN-ACK.

Dirección IP de origen 198.246.117.106
Dirección IP de destino 192.168.1.17*
Número de puerto de origen 21
Número de puerto de destino 49411*
Número de secuencia 0 (relativo)
Número de reconocimiento 1 (relativo)
Longitud del encabezado 32 bytes
Tamaño de la ventana 8192

*Las respuestas de los estudiantes varían.

En la etapa final de la negociación para establecer las comunicaciones, la VM envía un mensaje de acuse de recibo al servidor. Observen que solo el bit ACK está definido en 1, y que el número de secuencia se incrementó a 1.

Complete la siguiente información sobre el mensaje de ACK.

Dirección IP de origen 192.168.1.17*
Dirección IP de destino 198.246.112.54
Número de puerto de origen 49411*
Número de puerto de destino 21
Número de secuencia 1 (relativo)
Número de acuse de recibo 1 (relativo)
Longitud del encabezado 20
Tamaño de la ventana 8192*

*Las respuestas de los estudiantes varían.

¿Cuántos otros datagramas TCP contenían un bit SYN?
Uno. El primer paquete enviado por el host al comienzo de una sesión TCP.

Una vez establecida una sesión TCP, puede haber tráfico FTP entre la PC y el servidor FTP. El cliente y el servidor FTP se comunican entre ellos, sin saber que TCP controla y administra la sesión. Cuando el servidor FTP envía el mensaje Response: 220 (Respuesta:220) al cliente FTP, la sesión TCP en el cliente FTP envía un reconocimiento a la sesión TCP en el servidor. Esta secuencia es visible en la siguiente captura de Wireshark.

Cuando termina la sesión FTP, el cliente FTP envía un comando para “salir”. El servidor FTP reconoce la terminación de FTP con un mensaje Response: 221 Goodbye (Adiós). En este momento, la sesión TCP del servidor FTP envía un datagrama TCP al cliente FTP que anuncia la terminación de la sesión TCP. La sesión TCP del cliente FTP reconoce la recepción del datagrama de terminación y luego envía su propia terminación de sesión TCP. Cuando quien originó la terminación TCP (servidor FTP) recibe una terminación duplicada, se envía un datagrama ACK para reconocer la terminación y se cierra la sesión TCP. Esta secuencia es visible en la captura y el diagrama siguientes.

Si se aplica un filtro ftp, puede examinarse la secuencia completa del tráfico FTP en Wireshark. Observe la secuencia de los eventos durante esta sesión FTP. Para recuperar el archivo Léame, se utilizó el nombre de usuario anonymous (anónimo). Una vez que se completó la transferencia de archivos, el usuario finalizó la sesión FTP.

Vuelva a aplicar el filtro TCP en Wireshark para examinar la terminación de la sesión TCP. Se transmiten cuatro paquetes para la terminación de la sesión TCP. Dado que la conexión TCP es de dúplex completo, cada dirección debe terminar independientemente. Examine las direcciones de origen y destino.

En este ejemplo, el servidor FTP no tiene más datos para enviar en la secuencia. Envía un segmento con el marcador FIN configurado en la trama 149. La PC envía un mensaje ACK para reconocer la recepción del mensaje FIN para terminar la sesión del servidor al cliente en la trama 150.

En la trama 151, la PC envía un mensaje FIN al servidor FTP para terminar la sesión TCP. El servidor FTP responde con un mensaje ACK para reconocer el mensaje FIN de la PC en la trama 152. Ahora finaliza la sesión de TCP entre el servidor FTP y la PC.

Parte 2: Identificar campos de encabezado y operación UDP mediante una captura de sesión TFTP de Wireshark

En la parte 2, utilizará Wireshark para capturar una sesión TFTP e inspeccionar los campos de encabezado de UDP.

Paso 1: Iniciar Mininet y el servicio tftpd.

a. Inicien Mininet. Introduzcan cyberops como la contraseña cuando se los solicite el sistema.

[analyst@secOps ~]$ sudo lab.support.files/scripts/cyberops_topo.py
[sudo] contraseña para analyst:

b. Inicien H1 y H2 en el cursor mininet>.

*** Starting CLI:
mininet> xterm H1 H2

c. En la ventana del terminal de H1, inicien el servidor tftpd con el script provisto.

[root@secOps analyst]# /home/analyst/lab.support.files/scripts/start_tftpd.sh
[root@secOps analyst]#

Paso 2: Crear un archivo para la transferencia tftp

a. Creen un archivo de texto en el cursor del terminal de H1, en la carpeta /srv/tftp/.

[root@secOps analyst]# echo "This file contains my tftp data." > /srv/tftp/my_tftp_data

b. Verifiquen que se haya creado el archivo con los datos que deseen en la carpeta.

[root@secOps analyst]# cat /srv/tftp/my_tftp_data
This file contains my tftp data.

c. Debido a la medida de seguridad correspondiente a este servidor tftp en particular, el nombre del archivo receptor ya tiene que existir. En H2, creen un archivo de nombre my_tftp_data.

[root@secOps analyst]# touch my_tftp_data

Paso 3: Capturar una sesión de TFTP en Wireshark

a. Inicien Wireshark en H1.

[root@secOps analyst]# wireshark-gtk &

b. En el menú Editar, elija Preferencias y haga clic en la flecha para expandir Protocolos. Desplácese hacia abajo y seleccione UDP. Haga clic en la casilla de verificación Validar checksum UDP si es posible, y luego en Aplicar. A continuación, haga clic en OK (Aceptar).

c. Inicien una captura de Wireshark en la interfaz H1-eth0.

d. Inicien una sesión de tftp de H2 al servidor tftp en H1 y obtengan el archivo my_tftp_data.

[root@secOps analyst]# tftp 10.0.0.11 -c get my_tftp_data

e. Detengan la captura de Wireshark. Definan el filtro en tftp y hagan clic en Apply (Aplicar). Utilicen los tres paquetes TFTP para completar la tabla y responder las preguntas del resto de esta práctica de laboratorio.

Nota para el instructor: Si los estudiantes indican los reconocimientos UDP, explique que el encabezado UDP no contiene un campo de reconocimiento. Es responsabilidad del protocolo de capa superior, en este caso TFTP, administrar la información de transferencia y recepción de datos. Esto se mostrará durante el examen del datagrama UDP.

El panel de detalles de paquetes de Wireshark muestra información detallada sobre UDP. Resalte el primer datagrama UDP del equipo host y mueva el puntero del mouse al panel de detalles de paquetes. Puede ser necesario ajustar el panel de detalles del paquete y expandir el registro UDP haciendo clic en la casilla de expansión de protocolo. El datagrama UDP expandido debe ser similar al siguiente diagrama.

En la siguiente ilustración, se muestra un diagrama de datagrama UDP. La información del encabezado está dispersa comparada con la del datagrama TCP. Al igual que TCP, cada datagrama UDP se identifica mediante el puerto de origen de UDP y el puerto de destino UDP.

Utilice la captura de Wireshark del primer datagrama UDP para completar la información acerca del encabezado UDP. El valor de checksum es un valor hexadecimal (base 16) indicado por el código anterior 0x:

Dirección IP de origen 10.0.0.12
Dirección IP de destino 10.0.0.11
Número de puerto de origen 47844
Número de puerto de destino 69
Longitud del mensaje UDP 32 bytes*
Checksum de UDP 0x2029 [correcto]*

*Las respuestas de los estudiantes varían.

¿Cómo verifica UDP la integridad del datagrama?
Se envía una checksum en el datagrama UDP y el valor de la checksum del datagrama se vuelve a calcular al recibirlo. Si el valor de checksum calculado es idéntico al valor de checksum enviado, se supone que el datagrama UDP está completo.

Examine la primera trama que devuelve el servidor tftpd. Complete la información acerca del encabezado UDP:

Dirección IP de origen 10.0.0.11
Dirección IP de destino 10.0.0.12
Número de puerto de origen 58047*
Número de puerto de destino 47844*
Longitud del mensaje UDP 46 bytes*
Checksum de UDP Checksum: 0x1456 (incorrecto; debe ser 0x8cce (¿es posible que se deba a la “descarga de checksum UDP”?)]*

*Las respuestas de los estudiantes varían.

Observe que el datagrama UDP devuelto tiene un puerto de origen UDP diferente, pero este puerto de origen se utiliza para el resto de la transferencia TFTP. Dado que no hay una conexión confiable, para mantener la transferencia TFTP, sólo se utiliza el puerto de origen usado para comenzar la sesión TFTP.

También observe que el valor de checksum UDP es incorrecto. Lo más probable es que se deba a la descarga de checksum UDP. Para obtener más información acerca del motivo por el cual sucede esto, realice una búsqueda de “UDP checksum offload”.

Paso 4: Limpieza

En este paso cerrarán y limpiarán Mininet.

a. En el terminal que inició Mininet, introduzcan quit en el cursor.

mininet> quit

b. En el cursor, introduzcan sudo mn – c para limpiar los procesos iniciados por Mininet.

[analyst@secOps ~]$ sudo mn -c

Reflexión

Esta práctica de laboratorio brindó la oportunidad de analizar las operaciones de protocolo UDP y TCP de sesiones TFTP y FTP capturadas. ¿En qué se diferencia la manera de administrar la comunicación de TCP con respecto a UDP?

TCP administra la comunicación de manera muy diferente a UDP, porque la confiabilidad y garantía ofrecidas requieren un control adicional sobre el canal de comunicación. UDP tiene menos sobrecarga y control, y el protocolo de capa superior debe proveer algún tipo de control de reconocimiento. Sin embargo, ambos protocolos transportan datos entre clientes y servidores con el uso de los protocolos de capa de aplicación y son adecuados para el protocolo de capa superior que cada uno admite.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
¿Tienes otra pregunta? Por favor comentax