Analizar el tráfico TCP con la función "Seguir flujo TCP" de Wireshark

WiresharkWiresharkBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá a utilizar la función "Seguir flujo TCP" (Follow TCP Stream) en Wireshark para el análisis del tráfico TCP. Esta función le permite extraer y ver la carga útil de datos (data payload) de una conversación TCP en particular. Es muy útil en múltiples escenarios de ciberseguridad, como la investigación de tráfico de red sospechoso y el análisis de protocolos de aplicación.

Al final de este laboratorio, comprenderá cómo utilizar esta poderosa herramienta para obtener información valiosa (insights) sobre las comunicaciones de red. Esto mejorará significativamente sus capacidades de análisis de red.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/follow_tcp_stream("Follow TCP Stream") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") subgraph Lab Skills wireshark/packet_capture -.-> lab-415946{{"Analizar el tráfico TCP con la función #quot;Seguir flujo TCP#quot; de Wireshark"}} wireshark/display_filters -.-> lab-415946{{"Analizar el tráfico TCP con la función #quot;Seguir flujo TCP#quot; de Wireshark"}} wireshark/follow_tcp_stream -.-> lab-415946{{"Analizar el tráfico TCP con la función #quot;Seguir flujo TCP#quot; de Wireshark"}} wireshark/export_packets -.-> lab-415946{{"Analizar el tráfico TCP con la función #quot;Seguir flujo TCP#quot; de Wireshark"}} wireshark/packet_analysis -.-> lab-415946{{"Analizar el tráfico TCP con la función #quot;Seguir flujo TCP#quot; de Wireshark"}} end

Comprender TCP y Capturar Tráfico de Red

En este paso, comenzaremos por conocer TCP (Transmission Control Protocol - Protocolo de Control de Transmisión), una parte fundamental de la comunicación en red. Luego, utilizaremos una poderosa herramienta llamada Wireshark para capturar el tráfico de red. Comprender TCP y ser capaz de capturar el tráfico de red son habilidades esenciales en el campo de la ciberseguridad, ya que le permiten ver lo que está sucediendo en una red y analizarla en busca de posibles problemas.

¿Qué es TCP?

TCP, o Protocolo de Control de Transmisión (Transmission Control Protocol), es uno de los protocolos más importantes del conjunto de protocolos de Internet (Internet Protocol suite). El conjunto de protocolos de Internet es un conjunto de reglas que rigen cómo se transmiten los datos a través de Internet. TCP proporciona una forma confiable de enviar datos entre aplicaciones que se ejecutan en diferentes hosts que se comunican a través de una red IP.

Confiabilidad significa que TCP asegura que todos los paquetes de datos (data packets) enviados desde una aplicación a otra lleguen correctamente y en el orden correcto. Esto es diferente de UDP (User Datagram Protocol - Protocolo de Datagramas de Usuario), que es un protocolo sin conexión. UDP no establece una conexión antes de enviar datos y no garantiza que todos los paquetes lleguen o que lleguen en orden. TCP, por otro lado, está orientado a la conexión (connection-oriented). Primero establece una conexión entre el remitente y el receptor, y luego envía los datos. Este proceso ayuda a mantener la integridad de los datos que se transfieren.

Lanzamiento de Wireshark

Para comenzar a capturar tráfico de red, necesitamos iniciar Wireshark. Aquí le mostramos cómo puede hacerlo:

  1. Primero, abra una ventana de terminal. Puede hacerlo haciendo clic en el icono de terminal en el dock o presionando Ctrl+Alt+T. El terminal es una interfaz basada en texto que le permite interactuar con el sistema operativo de su computadora escribiendo comandos.

  2. Una vez que el terminal esté abierto, debe escribir un comando para iniciar Wireshark. Escriba el siguiente comando y luego presione Enter:

wireshark

Este comando le dice al sistema operativo que inicie la aplicación Wireshark.

  1. Cuando se abra Wireshark, se le presentará la interfaz principal. En esta interfaz, verá una lista de interfaces de red disponibles. Las interfaces de red son los puntos de conexión entre su computadora y la red. Cada interfaz se puede utilizar para enviar y recibir tráfico de red.
Interfaz principal de Wireshark

Captura de Tráfico de Red

Ahora que Wireshark está abierto, estamos listos para comenzar a capturar tráfico de red. Aquí están los pasos:

  1. En la lista de interfaces de red, haga clic en la interfaz eth1. Esta suele ser la interfaz de red principal para su máquina virtual (virtual machine). Una máquina virtual es como una computadora dentro de su computadora, y la interfaz eth1 es cómo se conecta a la red.

  2. Después de seleccionar la interfaz eth1, haga clic en el botón Start capturing packets (Iniciar captura de paquetes), que está representado por un icono de aleta de tiburón azul en la barra de herramientas. Esta acción le dice a Wireshark que comience a monitorear la interfaz de red seleccionada y capture todos los paquetes de red que pasan a través de ella.

Iniciar captura de paquetes
  1. A medida que Wireshark comienza a capturar, verá que aparecen paquetes en la ventana principal de Wireshark. Estos paquetes son los bloques de construcción del tráfico de red. Cada paquete contiene una pequeña cantidad de datos e información sobre de dónde viene y hacia dónde va.

  2. Para generar algo de tráfico TCP que podamos analizar, utilizaremos el comando curl. Abra una nueva ventana de terminal y escriba el siguiente comando:

curl https://labex.io

El comando curl se utiliza para transferir datos desde o hacia un servidor. En este caso, está obteniendo el contenido de la página web de https://labex.io. Esta acción generará tráfico TCP porque la solicitud HTTP a la página web utiliza el protocolo TCP.

  1. Una vez que ejecute el comando curl, verá el contenido de la página web que se muestra en el terminal. Al mismo tiempo, Wireshark capturará todos los paquetes TCP relacionados con esta solicitud HTTP. Estos paquetes contienen información sobre la solicitud y la respuesta entre su computadora y el servidor web.

  2. Después de capturar durante unos 10 - 15 segundos, que generalmente es suficiente para obtener una buena muestra del tráfico, regrese a Wireshark y haga clic en el botón Stop capturing packets (Detener captura de paquetes), representado por un icono de cuadrado rojo en la barra de herramientas. Esto detiene la captura de más paquetes por parte de Wireshark.

Detener captura de paquetes
  1. Para guardar el tráfico capturado para su análisis futuro, vaya al menú File (Archivo) y seleccione Save (Guardar), o puede presionar Ctrl+S. Navegue hasta el directorio /home/labex/project/, asigne a su archivo el nombre capture.pcapng y luego haga clic en Save (Guardar). El formato de archivo .pcapng es un formato estándar para almacenar capturas de paquetes de red, y le permite abrir y analizar el tráfico capturado más tarde.

Ahora ha capturado con éxito algo de tráfico de red que contiene conversaciones TCP. En los siguientes pasos, analizaremos este tráfico capturado para obtener más información sobre TCP.

Filtrado y Seguimiento de Flujos TCP

En este paso, analizaremos el tráfico de labex.io que capturamos en el paso anterior. Aprenderemos a filtrar el tráfico de red para aislar conversaciones TCP específicas y exploraremos la poderosa función "Seguir flujo TCP" (Follow TCP Stream) de Wireshark. Esta función actúa como una lupa para las comunicaciones de red, lo que le permite ver la conversación completa entre dos puntos finales (endpoints).

Filtrado de Tráfico TCP

Primero, filtremos el tráfico para centrarnos específicamente en nuestra comunicación de labex.io:

  1. En la ventana principal de Wireshark, mire en la parte superior de la lista de paquetes. Verá un cuadro de texto de filtro de visualización (display filter) con texto de marcador de posición que dice "Apply a display filter" (Aplicar un filtro de visualización).
  2. Escriba tcp en el cuadro de filtro y presione Enter o haga clic en el botón de flecha para aplicar el filtro.
  3. La lista de paquetes ahora muestra solo paquetes TCP, pero podemos reducirla aún más. Dado que estamos interesados en el tráfico de labex.io que generamos con nuestro comando curl, refinemos nuestro filtro.
  4. Escriba tcp contains "labex" en el cuadro de filtro y aplíquelo. Esto mostrará solo los paquetes TCP que contengan "labex" en su contenido, lo que nos ayudará a encontrar el tráfico relevante.
Aplicar filtro TCP

Comprender las Conversaciones TCP

Antes de comenzar a seguir los flujos TCP, es importante comprender qué es una conversación TCP. Una conversación TCP consiste en todos los paquetes intercambiados entre dos puntos finales (combinaciones de dirección IP y puerto) durante una sesión TCP. Cada conversación TCP tiene varios componentes clave:

  • Una dirección IP de origen y destino: En nuestro caso, la IP de su máquina y la IP del servidor de labex.io
  • Un puerto de origen y destino: Para nuestra conexión HTTPS a labex.io, el puerto de destino es probablemente 443
  • Números de secuencia y acuse de recibo (acknowledgment numbers): Estos rastrean los datos y aseguran la entrega correcta
  • Varias banderas (flags) (SYN, ACK, FIN, etc.): Estos controlan el estado de la conexión

En nuestra captura, deberíamos ver una conversación TCP entre su máquina y el servidor de labex.io.

Seguimiento de un Flujo TCP

Ahora analicemos el flujo TCP para nuestra solicitud de labex.io:

  1. En la lista de paquetes filtrados, busque paquetes con una IP de destino que probablemente pertenezca a labex.io. Debería ver paquetes con el puerto de destino 443 (HTTPS), que se utiliza para el tráfico web seguro.
  2. Haga clic en uno de estos paquetes para seleccionarlo.
  3. Haga clic con el botón derecho en el paquete seleccionado y elija Follow > TCP Stream (Seguir > Flujo TCP) en el menú contextual.
Menú Seguir flujo TCP
  1. Se abrirá una nueva ventana que mostrará toda la conversación TCP entre su máquina y el servidor labex.io.
Ventana de contenido del flujo TCP
  1. En esta ventana:

    • El texto en rojo representa los datos enviados desde su máquina (cliente) al servidor de labex.io
    • El texto en azul representa los datos enviados desde el servidor de labex.io de vuelta a su máquina
    • Toda la conversación se reconstruye en el orden en que ocurrió
  2. Dado que accedimos a labex.io a través de HTTPS, verá principalmente datos cifrados en el flujo. Esto es normal y esperado porque HTTPS cifra los datos para protegerlos durante la transmisión. Es posible que pueda identificar el protocolo de enlace TLS (TLS handshake) al principio de la comunicación, pero la solicitud y respuesta HTTP reales estarán cifradas.

  3. Explore las diferentes opciones de visualización utilizando el menú desplegable "Show and save data as" (Mostrar y guardar datos como):

    • ASCII: Muestra los datos como texto (útil para leer cualquier porción no cifrada)
    • Hex Dump: Muestra representaciones hexadecimales y ASCII (bueno para examinar los datos cifrados)
    • C Arrays: Formatea los datos como matrices del lenguaje de programación C
    • Raw: Muestra solo los datos binarios sin procesar (raw)
  4. Para mantener un registro de este análisis, haga clic en el botón Print (Imprimir). Guarde la salida de impresión como un PDF llamado print.pdf en el directorio /home/labex/project/.

Botón Imprimir

Al seguir el flujo TCP, puede ver la comunicación completa entre su máquina y el servidor de labex.io sin tener que juntar manualmente los datos de paquetes individuales. En el siguiente paso, aprenderemos a guardar y analizar estos datos con más detalle.

Guardar y Analizar Datos de Flujo TCP

En este paso, guardaremos los datos del flujo TCP de labex.io que examinamos en el paso anterior para su análisis fuera de línea. También aprenderemos a interpretar esta información guardada para extraer información valiosa de la comunicación HTTPS cifrada.

Guardar Datos de Flujo TCP

Guardemos los datos del flujo TCP de nuestra conexión a labex.io:

  1. Debería tener la ventana Flujo TCP (TCP Stream) abierta del paso anterior, que muestra la comunicación entre su máquina y labex.io. Si la cerró accidentalmente, simplemente repita los pasos para seguir el flujo TCP de uno de los paquetes de labex.io.

  2. En la parte inferior de la ventana Flujo TCP, localice el botón Save As (Guardar como).

Ubicación del botón Guardar como
  1. Haga clic en el botón Save As (Guardar como), que abrirá un cuadro de diálogo de guardar.

  2. Navegue hasta el directorio /home/labex/project/ e ingrese el nombre de archivo tcp_stream_data.txt.

  3. Haga clic en el botón Save (Guardar). Esto guarda todo el flujo TCP de labex.io en un archivo de texto con el nombre especificado.

  4. El contenido se guardará en el formato que se seleccionó en el menú desplegable "Show and save data as" (Mostrar y guardar datos como). Si desea guardarlo en un formato diferente (como Hex Dump en lugar de ASCII), puede cambiar el formato en el menú desplegable antes de guardar.

Comprender los Datos Guardados

Ahora que hemos guardado el flujo TCP de nuestra conexión a labex.io, examinemos su contenido:

  1. Abra un terminal para ver el archivo guardado:
head /home/labex/project/tcp_stream_data.txt

O puede usar cat para ver todo el archivo:

cat /home/labex/project/tcp_stream_data.txt
  1. Examine el contenido del archivo. Dado que nuestro tráfico a labex.io fue a través de HTTPS, gran parte de los datos estarán cifrados y aparecerán como caracteres no legibles. Sin embargo, aún puede observar varios elementos importantes:

    • El protocolo de enlace TLS (TLS handshake) al comienzo de la comunicación, donde su cliente y el servidor labex.io negocian los parámetros de cifrado
    • Los mensajes de saludo del cliente (client hello) y saludo del servidor (server hello), que son parte del protocolo de enlace TLS
    • Los datos de la aplicación cifrados que contienen su solicitud HTTP real y la respuesta del servidor
  2. Observe cómo los datos se organizan de la misma manera que aparecieron en la ventana Flujo TCP (TCP Stream), con los datos del cliente (de su máquina a labex.io) separados de los datos del servidor (de labex.io a su máquina).

Aplicaciones Prácticas del Análisis de Flujo TCP

Las habilidades de análisis de flujo TCP que está desarrollando son valiosas en muchos escenarios de ciberseguridad. Relacionemos estos con lo que hemos observado con nuestro tráfico de labex.io:

  1. Inspección TLS/SSL: Al analizar el protocolo de enlace TLS en el flujo de labex.io, los profesionales de seguridad pueden verificar que las conexiones seguras estén utilizando algoritmos de cifrado sólidos.
  2. Monitoreo de Seguridad: Incluso con tráfico HTTPS cifrado como nuestra conexión a labex.io, los analistas pueden identificar patrones de comunicación sin necesariamente descifrar el contenido.
  3. Solución de Problemas de Red: Si nuestra conexión a labex.io hubiera fallado, el análisis del flujo TCP podría ayudar a identificar si el problema fue durante el establecimiento de la conexión TCP, el protocolo de enlace TLS o el intercambio HTTP.
  4. Análisis Forense de Red: En un escenario de investigación, los flujos TCP como nuestra conexión a labex.io ayudarían a reconstruir una línea de tiempo de las actividades de la red.
  5. Análisis de Rendimiento: Al examinar el tiempo y la secuencia de los paquetes en el flujo TCP de labex.io, podría identificar posibles cuellos de botella de rendimiento en la red.

Al guardar los flujos TCP, como hicimos con nuestra conexión a labex.io, crea un registro permanente que puede ser:

  • Compartido con los miembros del equipo para el análisis colaborativo
  • Utilizado como evidencia en investigaciones de seguridad
  • Comparado con otros flujos capturados para identificar patrones
  • Analizado con herramientas adicionales más allá de Wireshark

Esta capacidad de extraer, guardar y analizar los datos reales de comunicación de red es lo que hace que el análisis de flujo TCP sea una técnica tan poderosa para los profesionales de seguridad de la red.

Técnicas Avanzadas de Análisis de Flujo TCP

En este paso final, exploraremos algunas técnicas avanzadas para analizar los flujos TCP en nuestra captura, centrándonos en nuestro tráfico de labex.io y cualquier otra conversación TCP que pueda estar presente. Estas habilidades avanzadas le ayudarán a ser más eficiente cuando trabaje con capturas complejas de tráfico de red.

Filtrado de Múltiples Flujos TCP

Aprendamos a explorar y filtrar todas las conversaciones TCP en nuestra captura, no solo el tráfico de labex.io:

  1. Vuelva a la ventana principal de Wireshark. Si la ventana Flujo TCP (TCP Stream) de nuestro análisis de labex.io todavía está abierta, ciérrela.
  2. Para ver todas las conversaciones TCP en su captura, vaya a Statistics > Conversations (Estadísticas > Conversaciones) en el menú superior.
  3. En la ventana Conversaciones (Conversations), haga clic en la pestaña TCP para filtrar la vista y mostrar solo las conversaciones TCP.
Ventana Conversaciones
  1. Esta vista muestra detalles sobre todas las conversaciones TCP en su captura, incluyendo:

    • Direcciones y puertos de origen y destino
    • Bytes transferidos en cada dirección
    • Duración de cada conversación
    • Paquetes en cada dirección
  2. Busque la conversación que corresponde a nuestra conexión de labex.io. Debería involucrar las mismas direcciones IP que observó en el Paso 2. También puede ver otras conversaciones TCP que estaban ocurriendo durante su período de captura.

  3. Seleccione la conversación de labex.io y haga clic en el botón Follow Stream (Seguir Flujo) en la parte inferior. Esto proporciona otra forma de acceder al mismo flujo TCP que analizamos anteriormente.

Uso de Números de Flujo TCP

Cada flujo TCP en su captura tiene un identificador único llamado número "tcp.stream". Esto proporciona una forma precisa de filtrar y analizar flujos específicos:

  1. Con la ventana principal de Wireshark abierta, mire los detalles del paquete de uno de los paquetes de labex.io que identificó anteriormente. Expanda la sección "Transmission Control Protocol" (Protocolo de Control de Transmisión) en el panel central y busque un campo llamado "Stream index" (Índice de flujo) o similar. Este número es el identificador único para el flujo TCP de labex.io.

  2. Para filtrar los paquetes que pertenecen a este flujo específico, use un filtro de visualización como este:

tcp.stream eq N

Reemplace N con el número de índice de flujo que encontró. Por ejemplo, si el flujo de labex.io tiene el índice 2, usaría:

tcp.stream eq 2
  1. Aplique este filtro en el cuadro de filtro de visualización (display filter). Wireshark ahora mostrará solo los paquetes que pertenecen al flujo TCP de labex.io, proporcionando una vista más limpia de solo esta conversación.

  2. Este filtro es especialmente útil cuando tiene muchas conversaciones TCP en su captura y desea concentrarse en una específica sin tener que buscar y hacer clic con el botón derecho en un paquete cada vez.

Paquetes filtrados

Al dominar estas técnicas avanzadas de análisis de flujo TCP, ha mejorado significativamente sus capacidades de análisis de tráfico de red. Ahora puede aislar, examinar y documentar de manera eficiente las conversaciones TCP en capturas de red complejas, una habilidad que es invaluable para los profesionales de ciberseguridad.

Resumen

En este laboratorio, ha aprendido a utilizar la función "Follow TCP Stream" (Seguir Flujo TCP) de Wireshark para el análisis en profundidad del tráfico de red. Ha adquirido experiencia práctica en la captura de tráfico de red, el filtrado de conversaciones TCP, la interpretación de datos en varios formatos, el guardado de datos de flujo para uso fuera de línea y la aplicación de técnicas de análisis avanzadas.

Estas habilidades son esenciales para los administradores de red, los analistas de seguridad y los profesionales de TI. Le permiten solucionar problemas de red, investigar incidentes de seguridad y comprender el comportamiento de las aplicaciones. A medida que avance, recuerde que Wireshark tiene muchas más funciones, y el análisis de Flujo TCP (TCP Stream) es solo una herramienta valiosa en su arsenal de ciberseguridad.