En este laboratorio, aprenderás cómo descifrar el tráfico SSL/TLS utilizando Wireshark, un conocido analizador de protocolos de red. La encriptación SSL/TLS se utiliza comúnmente para proteger las comunicaciones de Internet. Sin embargo, en algunos casos, como la resolución de problemas o el análisis de seguridad, descifrar el tráfico encriptado se vuelve esencial.
Este laboratorio te guiará a través del proceso de configuración de Wireshark para descifrar el tráfico SSL/TLS. Te ofrece experiencia práctica en un entorno controlado.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"])
wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup")
wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview")
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/decrypt_ssl_tls("Decrypting SSL/TLS")
subgraph Lab Skills
wireshark/installation -.-> lab-415943{{"Descifrar Tráfico SSL/TLS en Wireshark"}}
wireshark/interface -.-> lab-415943{{"Descifrar Tráfico SSL/TLS en Wireshark"}}
wireshark/packet_capture -.-> lab-415943{{"Descifrar Tráfico SSL/TLS en Wireshark"}}
wireshark/display_filters -.-> lab-415943{{"Descifrar Tráfico SSL/TLS en Wireshark"}}
wireshark/follow_tcp_stream -.-> lab-415943{{"Descifrar Tráfico SSL/TLS en Wireshark"}}
wireshark/decrypt_ssl_tls -.-> lab-415943{{"Descifrar Tráfico SSL/TLS en Wireshark"}}
end
Configuración de la descifración SSL/TLS en Wireshark
En este paso, vamos a configurar Wireshark para descifrar el tráfico SSL/TLS. Pero primero, entendamos un poco lo que vamos a hacer. SSL/TLS es un protocolo utilizado para asegurar las comunicaciones de Internet. Cuando se envían datos a través de Internet utilizando SSL/TLS, se encriptan para proteger su confidencialidad. Para descifrar este tráfico y ver los datos reales, Wireshark necesita tener acceso a las claves de encriptación. Estas claves se almacenan en un archivo especial llamado archivo de registro de secreto pre - maestro. Ahora crearemos este archivo.
Wireshark necesita tener acceso a las claves de encriptación para descifrar el tráfico TLS. Estas claves se almacenan en lo que se llama un archivo de registro de secreto pre - maestro, que crearemos ahora.
Abre una terminal. Una terminal es una interfaz basada en texto donde puedes ingresar comandos para interactuar con el sistema operativo de tu computadora. Una vez que la terminal esté abierta, crearemos un nuevo archivo llamado pre_master_secret.log en el directorio /home/labex/project/. Este archivo se utilizará para almacenar las claves de sesión TLS necesarias para la descifración. Para crear el archivo, ingresa el siguiente comando en la terminal:
touch /home/labex/project/pre_master_secret.log
Este comando crea un archivo vacío que luego almacenará las claves de sesión TLS necesarias para la descifración.
Ahora que tenemos el archivo de registro listo, necesitamos configurar Wireshark para que lo utilice. Primero, abre Wireshark escribiendo el siguiente comando en la terminal:
wireshark
Después de que se abra Wireshark, verás una barra de menú en la parte superior. Haz clic en Edit > Preferences. Esto abrirá una ventana donde puedes personalizar varias configuraciones en Wireshark. En la ventana de Preferencias, mira el panel izquierdo. Hay una sección llamada Protocols. Haz clic en ella y luego desplázate hacia abajo hasta encontrar TLS.
En la configuración de TLS, hay un campo etiquetado (Pre)-Master-Secret log filename. Aquí es donde le decimos a Wireshark la ubicación del archivo de registro de la clave pre - maestro que acabamos de crear. Ingresa la ruta completa al archivo:
Una vez que hayas ingresado la ruta, haz clic en OK para guardar los cambios. Ahora, Wireshark está configurado para utilizar este archivo para descifrar el tráfico TLS. Esto significa que cuando captures tráfico SSL/TLS, Wireshark podrá utilizar las claves en el archivo de registro para descifrar los datos y mostrarte el contenido real.
Captura del tráfico SSL/TLS
En este paso, capturaremos el tráfico SSL/TLS utilizando Wireshark y generaremos tráfico seguro con un script de Python. SSL/TLS es un protocolo que proporciona comunicación segura a través de una red. Capturar este tráfico nos permite analizarlo posteriormente, lo cual es importante para tareas como depurar problemas de red o detectar amenazas de seguridad.
Comencemos capturando el tráfico de red. En Wireshark, las interfaces de red son las conexiones a través de las cuales tu computadora envía y recibe datos. Debes seleccionar la interfaz adecuada para capturar el tráfico que te interesa. Busca la lista de interfaces de red disponibles. Haz clic en la interfaz eth1 para seleccionarla. Esta interfaz es por donde pasará el tráfico que queremos capturar. Luego, haz clic en el botón Start (el icono de aleta de tiburón azul) en la barra de herramientas para comenzar a capturar paquetes.
Wireshark ahora capturará todo el tráfico de red en la interfaz seleccionada. Mientras captura, verás que los paquetes comienzan a aparecer en la ventana principal. Cada paquete representa una pequeña unidad de datos que se transmite a través de la red.
Ahora, necesitamos generar algún tráfico SSL/TLS que podamos analizar. Abre una nueva ventana de terminal. La terminal es una interfaz de línea de comandos donde puedes ejecutar comandos para interactuar con tu computadora. Navega al directorio del proyecto utilizando el siguiente comando:
cd /home/labex/project/
Este comando cambia el directorio de trabajo actual al directorio del proyecto. Crearemos un script de Python que establezca una conexión segura a un sitio web. Python es un lenguaje de programación que nos permite escribir scripts para realizar diversas tareas. Crea un nuevo archivo llamado tls_client.py utilizando el editor de texto nano:
nano tls_client.py
El editor de texto nano es un editor de texto simple y fácil de usar en la terminal. Copia y pega el siguiente código de Python en el editor:
#!/usr/bin/env python3
import ssl
import socket
import os
HOST = "example.com"
PORT = 443
## Set the path for the pre-master secret log file
os.environ['SSLKEYLOGFILE'] = '/home/labex/project/pre_master_secret.log'
## Create an SSL/TLS context
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
## Create a socket and wrap it with SSL/TLS
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
with context.wrap_socket(sock, server_hostname=HOST) as ssock:
ssock.connect((HOST, PORT))
## Send a simple HTTP GET request
request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"
ssock.sendall(request.encode())
## Receive the response and print all the received data
data = ssock.recv(4096)
print(data.decode())
Este script hace lo siguiente:
Establece una variable de entorno para especificar dónde guardar las claves de sesión TLS. Estas claves son cruciales para descifrar el tráfico SSL/TLS más adelante.
Crea una conexión segura a example.com. Las bibliotecas ssl y socket se utilizan para establecer esta conexión.
Envía una solicitud HTTP básica. Esta solicitud le pide al servidor la página principal de example.com.
Recibe y muestra la respuesta del servidor.
Guarda el archivo presionando Ctrl+O, luego Enter, y sal de nano presionando Ctrl+X.
Ahora ejecuta el script para generar el tráfico TLS:
python3 tls_client.py
Deberías ver una respuesta HTTP de example.com, lo que confirma que el script estableció correctamente una conexión segura. El script también escribió las claves de sesión TLS en nuestro archivo de registro de secreto pre - maestro, que Wireshark utilizará para la descifración.
Ahora que hemos generado el tráfico TLS, regresa a Wireshark y detén la captura haciendo clic en el botón rojo Stop en la barra de herramientas. Detener la captura es necesario para que podamos guardar el tráfico capturado.
Para guardar el tráfico capturado para su análisis, haz clic en File en la barra de menú, luego selecciona Save As.... En el cuadro de diálogo de guardado, navega a /home/labex/project/, nombra el archivo tls_traffic.pcapng y haz clic en Save. El formato de archivo .pcapng es un formato estándar para guardar capturas de tráfico de red.
Tu tráfico capturado ahora está guardado y listo para ser analizado en el siguiente paso.
Análisis del tráfico SSL/TLS descifrado
En este paso, analizaremos el tráfico SSL/TLS descifrado utilizando las herramientas de filtrado y análisis de Wireshark. Estas herramientas son esenciales para extraer información significativa de la gran cantidad de datos de tráfico de red.
Primero, apliquemos un filtro para centrarnos en partes específicas del handshake TLS. El handshake TLS es un proceso inicial crucial para establecer una conexión segura entre un cliente y un servidor. Durante este proceso, el cliente y el servidor intercambian información para acordar algoritmos de encriptación, claves y otros parámetros de seguridad.
En la barra de herramientas de filtrado (el campo de entrada de texto en la parte superior de la ventana de Wireshark), ingresa la siguiente expresión:
tls.handshake.type == 1
Esta expresión de filtro se utiliza para seleccionar paquetes según el tipo de handshake TLS. El valor 1 corresponde a los paquetes Client Hello. Presiona Enter para aplicar el filtro. Después de aplicar el filtro, Wireshark solo mostrará los paquetes Client Hello, que son los paquetes iniciales enviados por el cliente para iniciar el handshake TLS.
Ahora deberías ver solo los paquetes que coinciden con este filtro. Al reducir la cantidad de paquetes mostrados, es más fácil centrarse en el inicio de la conexión TLS y entender cómo comienza la comunicación segura.
Para ver el contenido descifrado, sigamos el flujo TLS. Haz clic derecho en cualquier paquete de la lista filtrada y selecciona Follow > TLS Stream del menú contextual. Esta acción le dice a Wireshark que reconstruya toda la sesión TLS basada en el paquete seleccionado y muestre los datos descifrados.
Se abrirá una nueva ventana que muestra los datos descifrados. Estos datos representan la comunicación HTTP real que se transmitió a través de la conexión segura. Gracias a las claves de sesión TLS almacenadas en nuestro archivo de registro de secreto pre - maestro, Wireshark puede descifrar y mostrar estos datos que normalmente estarían encriptados.
Los datos descifrados mostrarán tanto la solicitud HTTP enviada por nuestro script de Python como la respuesta HTTP del servidor. Puedes ver encabezados, tipos de contenido y el contenido HTML real de la respuesta. Esta información es valiosa para entender la comunicación entre el cliente y el servidor, como qué datos se están solicitando y qué se está devolviendo.
Guardemos estos datos descifrados para un análisis posterior. En la ventana "Follow TLS Stream", haz clic en el botón Save as.... Guardar los datos te permite revisarlos más tarde, compartirlos con otros o realizar análisis adicionales.
En el cuadro de diálogo de guardado, navega a /home/labex/project/, nombra el archivo decrypted_data.txt y haz clic en Save.
Ahora has capturado, descifrado y guardado con éxito el tráfico TLS para su análisis. El archivo de datos descifrados contiene la comunicación HTTP completa que originalmente estaba encriptada con TLS.
Puedes cerrar la ventana "Follow TLS Stream" cuando hayas terminado. Si quieres explorar más, prueba diferentes filtros de Wireshark para examinar otros aspectos del tráfico capturado. Por ejemplo, el filtro http te mostrará solo el tráfico HTTP después de la descifración. De esta manera, puedes profundizar en los tipos específicos de datos que se transmiten a través de la red.
Resumen
En este laboratorio, has aprendido cómo descifrar el tráfico SSL/TLS utilizando Wireshark. Has creado un archivo de registro de secreto pre - maestro para almacenar las claves de sesión TLS, has configurado Wireshark para utilizar este archivo para la descifración y has generado tráfico SSL/TLS con un script de Python. Luego, has analizado el tráfico descifrado utilizando las características de filtrado y seguimiento de flujo de Wireshark.
Estas habilidades son cruciales para la resolución de problemas de red, el análisis de seguridad y la comprensión de las comunicaciones seguras. Descifrar y analizar el tráfico TLS en un entorno controlado te ayuda a comprender mejor los protocolos de red y detectar problemas en las comunicaciones encriptadas. Recuerda que, en situaciones del mundo real, descifrar el tráfico TLS requiere la autorización adecuada y solo debe hacerse en redes autorizadas para evitar violar las leyes de privacidad.