Filtrar Tráfico HTTP en Tshark

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 filtrar y analizar el tráfico HTTP utilizando Tshark, la herramienta de línea de comandos de Wireshark. Practicará la captura de tráfico web en el puerto 80 y el aislamiento de solicitudes HTTP con técnicas de filtrado específicas.

Los ejercicios lo guiarán a través de la extracción de métodos HTTP (GET/POST) y el formato de la salida en JSON para un análisis estructurado. Estas habilidades son esenciales para las tareas de resolución de problemas de red y inspección de tráfico.


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/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/packet_capture -.-> lab-548928{{"Filtrar Tráfico HTTP en Tshark"}} wireshark/display_filters -.-> lab-548928{{"Filtrar Tráfico HTTP en Tshark"}} wireshark/packet_analysis -.-> lab-548928{{"Filtrar Tráfico HTTP en Tshark"}} wireshark/commandline_usage -.-> lab-548928{{"Filtrar Tráfico HTTP en Tshark"}} end

Capturar tráfico HTTP con -f "tcp port 80"

En este paso, aprenderá cómo capturar tráfico HTTP utilizando el filtro de visualización -f "tcp port 80" de Wireshark. HTTP (Protocolo de Transferencia de Hipertexto) es la base de la comunicación de datos en la World Wide Web y generalmente utiliza el puerto 80 para el tráfico web no cifrado. Este filtro ayuda a aislar el tráfico HTTP de otros protocolos de red, lo que facilita el análisis de las comunicaciones web.

Antes de comenzar, entendamos algunos conceptos básicos:

  • Los puertos de red son como puertas por donde entra y sale un tipo específico de tráfico de red.
  • El puerto 80 es el puerto estándar asignado al tráfico HTTP.
  • Wireshark puede filtrar el tráfico en función de estos números de puerto.

Primero, abramos Wireshark en el entorno de la máquina virtual (VM) de LabEx. Siga estos pasos con cuidado:

  1. Abra una terminal en el escritorio de Xfce (puede encontrarla en el menú Aplicaciones > Sistema > Terminal).
  2. Navegue al directorio de trabajo predeterminado donde almacenaremos nuestros archivos de captura:
cd ~/project
  1. Inicie Wireshark con el filtro de visualización para el tráfico HTTP:
sudo wireshark -k -f "tcp port 80"

Desglosemos las opciones del comando:

  • -k: Esto le dice a Wireshark que comience a capturar paquetes inmediatamente.
  • -f "tcp port 80": Este es nuestro filtro de captura que le indica a Wireshark que solo registre el tráfico TCP destinado o proveniente del puerto 80.

Ahora necesitamos algún tráfico HTTP para analizar. Abra otra ventana de terminal (puede hacer clic derecho en el escritorio y seleccionar "Abrir Terminal") y genere tráfico de prueba con:

curl http://example.com

En la ventana de Wireshark, verá los paquetes capturados que muestran:

  1. La solicitud HTTP de su computadora a example.com (generalmente comenzando con "GET / HTTP/1.1").
  2. La respuesta del servidor web (generalmente que contiene "HTTP/1.1 200 OK").

Cada paquete muestra detalles importantes como:

  • Direcciones IP de origen y destino.
  • Protocolo (HTTP).
  • Tamaño del paquete.
  • Información de tiempo.

Para los principiantes: Wireshark actúa como un microscopio para el tráfico de red. El filtro tcp port 80 funciona como una lente especializada que solo muestra el tráfico web, ignorando otros tipos de comunicaciones de red. Esta vista enfocada le ayuda a entender cómo se comunican los navegadores web y los servidores sin verse abrumado por otra actividad de red.

Filtrar solicitudes con -Y "http.request"

En este paso, aprenderá cómo filtrar solicitudes HTTP utilizando el filtro de visualización -Y "http.request" de Wireshark. Este filtro le ayuda a centrarse específicamente en los paquetes de solicitud HTTP, excluyendo las respuestas y otros tipos de tráfico de red. Comprender las solicitudes HTTP es fundamental para el análisis del tráfico web, ya que representan los mensajes iniciales que los clientes envían a los servidores.

Continuando con el paso anterior en el que capturamos el tráfico HTTP, ahora filtremos solo las solicitudes HTTP:

  1. Primero, asegúrese de estar en el directorio de trabajo predeterminado donde trabajaremos con nuestros archivos de captura:
cd ~/project
  1. Ejecute Wireshark con el filtro de visualización para las solicitudes HTTP:
sudo wireshark -k -Y "http.request"

La opción -Y aplica un filtro de visualización (diferente del filtro de captura -f utilizado en el paso 1). Mientras que los filtros de captura limitan lo que se registra, los filtros de visualización ayudan a analizar los datos ya capturados. Este filtro en particular solo mostrará los paquetes que contengan solicitudes HTTP.

  1. Para generar tráfico de prueba que podamos analizar, abra otra terminal y ejecute estos comandos comunes de clientes HTTP:
curl http://example.com
wget http://example.com

Para los principiantes: El filtro de visualización http.request coincide específicamente con los paquetes de solicitud HTTP. Esto es útil cuando desea analizar solo las solicitudes que se envían desde los clientes a los servidores, ignorando las respuestas del servidor. La sintaxis del filtro es parte del poderoso lenguaje de filtros de visualización de Wireshark que le permite seleccionar con precisión qué paquetes ver en función de criterios específicos del protocolo.

En la ventana de Wireshark, ahora debería ver solo los paquetes de solicitud HTTP de los comandos curl y wget. Cada paquete mostrará información importante del protocolo HTTP, incluyendo:

  • El método HTTP (GET, POST, etc.) que indica el tipo de solicitud.
  • La URI solicitada que muestra el recurso específico que se está accediendo.
  • La versión de HTTP (como HTTP/1.1) que muestra la versión del protocolo.
  • La información del host que identifica el servidor de destino.

Extraer el método con -e http.request.method

En este paso, nos centraremos específicamente en extraer los métodos de solicitud HTTP del tráfico de red utilizando la herramienta de línea de comandos de Wireshark, tshark. Los métodos HTTP son los verbos que indican la acción deseada a realizar en un recurso, como GET para recuperar datos o POST para enviar datos.

Antes de comenzar, entendamos con qué estamos trabajando:

  • Los métodos HTTP son componentes fundamentales de las comunicaciones web.
  • Tshark nos permite examinar estos métodos directamente de los paquetes de red capturados.
  • La bandera -e nos permite extraer campos específicos de los datos del paquete.

Vamos a recorrer el proceso paso a paso:

  1. Primero, necesitamos ubicarnos en el directorio de trabajo correcto donde se almacenan nuestros archivos de captura:
cd ~/project
  1. Ahora ejecutaremos el comando tshark para extraer los métodos HTTP del tráfico en vivo:
sudo tshark -Y "http.request" -T fields -e http.request.method

Desglosando este comando:

  • sudo: Nos da los permisos necesarios para capturar el tráfico de red.
  • tshark: La versión de línea de comandos de Wireshark.
  • -Y "http.request": Aplica un filtro de visualización para mostrar solo las solicitudes HTTP.
  • -T fields: Especifica que queremos una salida basada en campos (en lugar de paquetes completos).
  • -e http.request.method: Le dice a tshark que extraiga solo el campo del método HTTP.
  1. Para ver esto en acción, generaremos algo de tráfico de prueba desde otra ventana de terminal:
curl -X GET http://example.com
curl -X POST http://example.com
curl -X DELETE http://example.com

Cada uno de estos comandos curl envía un método HTTP diferente a example.com, que tshark capturará y mostrará. La bandera -X en curl nos permite especificar qué método HTTP utilizar.

Después de ejecutar estos comandos, debería ver una salida similar a:

GET
POST
DELETE

Esta salida muestra exactamente qué métodos HTTP se utilizaron en el tráfico capturado, lo que facilita el análisis de los patrones de solicitud web. Los nombres de los métodos aparecen en el orden en que fueron capturados por tshark.

Mostrar en formato JSON con -T json

En este paso, exploraremos cómo formatear los datos de tráfico HTTP capturados en formato JSON utilizando la utilidad Tshark de Wireshark. JSON (JavaScript Object Notation) es un formato de datos ligero que es fácil de leer tanto para humanos como para máquinas. Esto lo hace ideal para analizar el tráfico de red de forma programática.

Antes de comenzar, entendamos por qué la salida en formato JSON es valiosa:

  • Organización estructurada de datos.
  • Fácil integración con otras herramientas y scripts.
  • Formato estandarizado para el intercambio de datos.
  1. Primero, asegúrese de estar en el directorio de trabajo predeterminado donde ejecutaremos nuestros comandos:
cd ~/project
  1. Ahora, ejecutemos Tshark para capturar las solicitudes HTTP y mostrarlas en formato JSON. Este comando combina el filtrado con el formato JSON:
sudo tshark -Y "http.request" -T json -e http.request.method -e http.host -e http.request.uri

Desglosemos lo que hace cada parte de este comando:

  • -Y "http.request": Este filtro le dice a Tshark que solo muestre los paquetes de solicitud HTTP.
  • -T json: Especifica que queremos la salida en formato JSON.
  • Campos -e: Estos extraen piezas específicas de información de cada solicitud HTTP:
    • http.request.method: El método HTTP utilizado (GET, POST, etc.).
    • http.host: El dominio del sitio web que se está accediendo.
    • http.request.uri: La ruta o recurso específico que se está solicitando.
  1. Para generar tráfico de prueba que podamos capturar, abra una segunda ventana de terminal y ejecute estos comandos curl:
curl http://example.com
curl http://example.org/sample

Cuando ejecute el comando Tshark mientras se genera este tráfico de prueba, verá una salida estructurada de la siguiente manera:

[
  {
    "_index": "packets-1",
    "_source": {
      "layers": {
        "http.request.method": ["GET"],
        "http.host": ["example.com"],
        "http.request.uri": ["/"]
      }
    }
  },
  {
    "_index": "packets-2",
    "_source": {
      "layers": {
        "http.request.method": ["GET"],
        "http.host": ["example.org"],
        "http.request.uri": ["/sample"]
      }
    }
  }
]

Note cómo cada solicitud HTTP se convierte en un objeto JSON separado con campos claramente etiquetados. Esta estructura hace que sea sencillo identificar:

  • Qué sitio web se accedió.
  • Qué tipo de solicitud se realizó.
  • Qué página o recurso específico se solicitó.

El formato JSON es especialmente útil cuando desea guardar estos datos para un análisis posterior o alimentarlos a otras herramientas que pueden procesar datos JSON automáticamente.

Resumen

En este laboratorio, has aprendido a filtrar y analizar el tráfico HTTP utilizando la herramienta de línea de comandos Tshark de Wireshark. Los ejercicios cubrieron la captura de tráfico HTTP con -f "tcp port 80" y la generación de tráfico de prueba utilizando curl para un análisis práctico.

También practicaste filtrar solicitudes HTTP con -Y "http.request" y extraer datos específicos como los métodos HTTP utilizando -e http.request.method. El laboratorio demostró el formato de salida en JSON con -T json, proporcionándote las técnicas clave para una inspección eficiente del tráfico de red.