Análisis de tráfico HTTP utilizando Wireshark

Autor:
Ricardo Naranjo Faccini
Fecha de publicación:
Thursday 26 September 2024
Tema:
Seguridad de la información, seguridad informática y cibernética
Revisado por :
Ricardo Naranjo Faccini
(Thursday 26 September 2024)
Análisis de tráfico HTTP utilizando Wireshark

Resumen

Es importante tener en cuenta que en un entorno ético, como una competencia cibernética de CTF, los participantes deben respetar las reglas establecidas y no realizar acciones maliciosas o ilegales. El objetivo principal es aprender sobre las vulnerabilidades y las mejores prácticas de seguridad, sin causar daño ni comprometer sistemas sin autorización previa.

Este tutorial es solo para fines educativos. El uso no autorizado de herramientas de análisis de red puede violar las leyes nacionales e internacionales y las políticas de uso aceptable de las redes y sistemas. Asegúrate de obtener el permiso adecuado antes de capturar tráfico de red que no sea tuyo.

Descargue aquí la presentación de la charla


Objetivo del tutorial

En este tutorial, aprenderás a utilizar Wireshark, una herramienta de análisis de red, para capturar y analizar tráfico HTTP hacia un servidor web. En particular, nos enfocaremos en interceptar y examinar las credenciales de usuario enviadas a través de una conexión HTTP insegura. Usaremos el servidor de prueba Google Gruyere para este propósito.

Prerrequisitos

  • Wireshark instalado en tu máquina.

  • Acceso a Internet para conectarse a Google Gruyere.

Paso a Paso

Paso 1: Registro en el servidor web

  1. Accede al servidor de prueba:

  2. Regístrate en el servidor:

    • En la página de inicio, busca la opción de Sign Up o Registrarse.

    • Crea una nueva cuenta con cualquier combinación de nombre de usuario y contraseña. Por ejemplo puedes usar Ricardo como nombre de usuario y clave como contraseña. Completa el proceso de registro.

Paso 2: Configuración inicial de Wireshark

  1. Inicia Wireshark:

    • Abre la aplicación Wireshark en tu computadora.

  2. Selecciona la interfaz de red:

    • En la lista de interfaces disponibles, selecciona la que corresponde a tu conexión de red activa. Esto puede ser Wi-Fi o Ethernet, dependiendo de cómo estés conectado a Internet.

  3. Configura un filtro básico (opcional):

    • Para limitar la captura de tráfico y enfocarnos en HTTP, puedes configurar un filtro simple antes de iniciar la captura. En el campo de filtro en la parte superior, escribe http para capturar solo tráfico HTTP.

Paso 3: Captura del tráfico HTTP

  1. Inicia la captura de paquetes:

    • Haz clic en el botón de inicio de captura (ícono con un tiburón azul) en la parte superior de Wireshark.

  2. Realiza el proceso de autenticación:

    • Con la captura de tráfico en marcha, vuelve a tu navegador web y accede nuevamente a Google Gruyere.

    • Inicia sesión utilizando las credenciales que creaste previamente (Ricardo y clave).

  3. Finaliza la captura de paquetes:

    • Una vez que hayas completado el proceso de autenticación, regresa a Wireshark y haz clic en el botón de detener la captura (ícono de cuadrado rojo).

  4. Guarda la captura de tráfico:

    • Guarda la captura en un archivo para su posterior análisis. Ve a File > Save As..., elige un nombre para el archivo y guárdalo en el formato por defecto de Wireshark (.pcapng).

Paso 4: Análisis de la captura de tráfico

  1. Filtra el tráfico HTTP del servidor objetivo:

    • En el campo de filtro de Wireshark, escribe http para mostrar solo los paquetes HTTP capturados.

  1. Para restringir aún más los resultados a los paquetes que se envían hacia o desde google-gruyere.appspot.com, puedes usar un filtro más específico. Por ejemplo

    • Por nombre de host: Filtrar todas las solicitudes HTTP hacia o desde el servidor objetivo:

  1. Usar estos filtros te permitirá refinar la búsqueda en Wireshark para encontrar rápidamente la información relevante en el tráfico HTTP capturado. La combinación de diferentes filtros puede ayudar a reducir el número de tramas revisadas y a identificar más eficientemente las que contienen las credenciales transmitidas de manera insegura.

    • http.host == "google-gruyere.appspot.com"

    • Filtrar solicitudes HTTP POST específicas: Las solicitudes POST son comunes para enviar datos sensibles, como credenciales. Este filtro muestra todas las solicitudes POST realizadas hacia cualquier URL en el servidor objetivo.

      http.request.method == "POST" && http.host == "google-gruyere.appspot.com"

    • Filtrar solicitudes HTTP GET específicas:

      • http.request.method == "GET" && http.host == "google-gruyere.appspot.com"

    • Filtrar por URI (Uniform Resource Identifier): Este filtro se utiliza para identificar solicitudes HTTP hacia un URI específico que pueda estar involucrado en el proceso de autenticación, por ejemplo, una página de inicio de sesión.

      • http.request.uri contains "/login" && http.host == "google-gruyere.appspot.com"

    • Filtrar por contenido específico en el cuerpo HTTP: Este filtro ayuda a identificar paquetes que contienen datos específicos en el cuerpo de la solicitud, como username o password.

      • http contains "username=" && http.host == "google-gruyere.appspot.com"

      Este filtro mostrará todas las tramas HTTP que contienen la cadena "username=" en el cuerpo de la solicitud o respuesta.

    • Filtrar todo el tráfico HTTP en puertos específicos: Aunque HTTP típicamente usa el puerto 80, algunos servidores pueden usar puertos diferentes. Este filtro muestra todo el tráfico HTTP en un puerto específico.

      • http && tcp.port == 80 && http.host == "google-gruyere.appspot.com"

    • Filtrar tráfico HTTP por tiempo: Si conoces el intervalo de tiempo en el que realizaste la autenticación, puedes aplicar un filtro de tiempo para acotar la búsqueda.

      • frame.time >= "2024-08-22 10:00:00" && frame.time <= "2024-08-22 10:05:00" && http.host == "google-gruyere.appspot.com"

  2. Identifica las solicitudes HTTP relevantes:

    • Examina las solicitudes HTTP filtradas. Busca las solicitudes POST hacia las rutas de autenticación o cualquier formulario de envío que contenga credenciales. Las solicitudes POST suelen contener datos sensibles en el cuerpo de la solicitud.

  3. Sigue la conversación HTTP:

  1. Selecciona un paquete HTTP relacionado con la autenticación (una solicitud POST típica). Haz clic derecho sobre el paquete seleccionado y elige Follow > HTTP Stream.

  2. Esto abrirá una nueva ventana mostrando toda la conversación HTTP entre el cliente (tu navegador) y el servidor. Aquí podrás ver el contenido de la solicitud HTTP, incluido el nombre de usuario y la contraseña enviados.

Paso 5: Localiza y analiza las credenciales

  1. Busca el nombre de usuario y la contraseña:

    • En la ventana de seguimiento de flujo HTTP, busca la línea que contiene las credenciales enviadas. Deberías ver algo como:

      • POST /login HTTP/1.1 Host: google-gruyere.appspot.com Content-Type: application/x-www-form-urlencoded Content-Length: 29 username=Ricardo&password=clave

      Aquí, podrás ver claramente las credenciales username=Ricardo y password=clave transmitidas en texto plano.

  2. Entiende la vulnerabilidad:

  1. Observa cómo las credenciales se transmiten sin cifrado. Esto demuestra una vulnerabilidad común en el uso de HTTP en lugar de HTTPS, donde la falta de cifrado permite que cualquier persona que intercepte el tráfico de red pueda leer las credenciales en texto plano.

Conclusión

  1. En este tutorial, has aprendido a utilizar Wireshark para capturar tráfico HTTP y analizar paquetes de datos en busca de credenciales transmitidas sin cifrado.

  2. Esta práctica ilustra la importancia del uso de protocolos seguros como HTTPS para proteger la información sensible.

  3. Siempre usa HTTPS: Asegúrate de que todas las comunicaciones sensibles estén cifradas.

  4. Capacitación en seguridad: Familiarízate con herramientas de análisis de red como Wireshark para identificar posibles vulnerabilidades en tu red.

  5. Mantén tu software actualizado: Las actualizaciones de seguridad son fundamentales para proteger contra las últimas vulnerabilidades.

  6. Esta actividad demuestra cómo una conexión HTTP no segura puede poner en riesgo la seguridad de las credenciales del usuario. A través del uso de herramientas de análisis de red, los profesionales de la seguridad pueden identificar y mitigar tales riesgos, reforzando la seguridad de las aplicaciones web.

Ricardo Naranjo Faccini

Ricardo Naranjo Faccini Desarrollador WWW

Nació en Barranquilla, Atl, Colombia el 14 de enero de 1971

  • Magíster en Ingeniería de Sistemas y Computación de la Universidad de Los Andes 1998
  • Ingeniero Civil de la Universidad de Los Andes 1995
  • Diplomado en docencia en Ingeniería de la Pontificia Universidad Javeriana 2008
  • Gerente de la firma Skina IT Solutions, su gestión ha llevado a la empresa al nivel de exportación de software. Experto en calidad en el desarrollo de software con énfasis en el uso de herramientas libres orientadas hacia WWW.
  • CTO de AuthorsGlobe, empresa participante en el MIT 100K, elegida como parte del "TOP 10" entre 300 proyectos presentados en este concurso del Massachussets Institute of Technology MIT.
  • Durante el periodo 2004-2005 se desempeñó como Gerente de desarrollo de negocios NOVELL en Nexsys de Colombia.
  • Ejerce docencia como catedrático en la Universidad Javeriana, al igual que lo ha realizado en la Universidad de Los Andes, Universidad de Manizales y Universidad autónoma de Bucaramanga.
  • Comprometido con la divulgación del software libre y su aplicación en Colombia, ha dictado más de 60 conferencias en todo el país, co-fundador de LinuxCol, la primera comunidad de usuarios de Linux en Colombia.
  • Colaborador del grupo ACIS-Linux.

Calle 95 #47-33 int 8

Calle 95 #47-33 int 8, Bogotá, Colombia

Tel: +57 300 214 6210

ventas@skinait.com

Desarrollado por Skina IT Solutions