Si alguna vez ha intentado usar Wireshark para monitorear el tráfico web, es probable que se encuentre con un problema: gran parte está encriptado. De hecho, la mayoría de los sitios están usando encriptación SSL o TLS para mantener a sus usuarios seguros. El cifrado ubicuo es bueno si está comprando en Amazon, pero es un verdadero dolor cuando intenta administrar una red. Así es como descifro SSL con Wireshark.
¿Qué son Wireshark y SSL??
Wireshark es un analizador de tráfico de red; Es una utilidad central que muchos administradores utilizan para solucionar problemas en sus redes. Específicamente, captura fotogramas, los componentes básicos de los paquetes, y le permite clasificarlos y analizarlos. Usando Wireshark, puede ver el tráfico que fluye a través de su red y diseccionarlo, echando un vistazo dentro de los marcos a los datos sin procesar.
SSL es un protocolo de encriptación que opera en la capa de transporte del modelo OSI. Utiliza varios métodos de cifrado para proteger los datos a medida que se mueven por las redes. Nota: En esta guía, me referiré principalmente a SSL como un término general para SSL y TLS, su sucesor.
El cifrado SSL hace que usar Wireshark sea más desafiante porque evita que los administradores vean los datos que contiene cada paquete. Cuando Wireshark está configurado correctamente, puede descifrar SSL y restaurar su capacidad de ver los datos sin procesar.
Uso de una clave secreta pre maestra para descifrar SSL y TLS
El uso de una clave secreta pre maestra para descifrar SSL en Wireshark es el método recomendado. UN clave secreta pre maestra es generado por el cliente y utilizado por el servidor para derivar una clave maestra que cifra el tráfico de la sesión. Es el estándar actual en criptografía y generalmente se implementa a través de Diffie-Hellman.
Se puede hacer que su navegador registre la clave secreta pre-maestra, que Wireshark usa para descifrar sesiones SSL y TLS.
Estos son los pasos para descifrar SSL y TLS con una clave secreta maestra previa:
- Establecer una variable de entorno
- Inicia tu navegador
- Configurar Wireshark
- Captura y descifra la sesión
Cuando haya terminado, podrá descifrar las sesiones SSL y TLS en Wireshark sin necesidad de acceder al servidor de destino..
Establecer una variable de entorno de Windows
En Ventanas, deberá establecer una variable de entorno utilizando Configuración avanzada del sistema utilidad. Esta variable, llamada SSLKEYLOGFILE, contiene una ruta donde se almacenan las claves secretas pre-master.
Comience haciendo clic derecho en Mi computadora, y seleccionando Propiedades del menú los Sistema se abrirá el menú.
Luego, haga clic Configuración avanzada del sistema en la lista a la izquierda. los Propiedades del sistema la ventana se abrirá.
Sobre el Avanzado pestaña, haga clic en el Variables de entorno botón.
Haga clic en el Nuevo… botón debajo Variables de usuario. También puede crear la variable en Variables del sistema si desea registrar claves SSL para cada usuario en el sistema, pero prefiero mantenerlo limitado a mi perfil.
Debajo Nombre de la variable, escriba lo siguiente:
SSLKEYLOGFILE
En el Valor variable campo, escriba una ruta al archivo de registro. También puedes hacer clic en el Buscar Archivo… botón y especifique la ruta utilizando el selector de archivos.
Como nota, si está creando esto como una variable de entorno de todo el sistema, necesitará usar comodines apropiados o almacenar el archivo en un lugar accesible para todos los usuarios. Por ejemplo, puedes elegir % USERPROFILE% \ App Data \ ssl-keys.log o C: \ ssl-keys.log.
Una vez que haya terminado, haga clic en Okay y pasar al siguiente conjunto de pasos.
Establecer una variable de entorno Linux o Mac
En Linux y Mac, deberás configurar el SSLKEYLOGFILE variable de entorno utilizando nano. En Linux, la variable se almacena en ~ / .bashrc. Sobre el Mac, creará la variable en el archivo ~ / .MacOSX / environment.
Abra una terminal y usa este comando en Linux:
nano ~ / .bashrc
Abierto Plataforma de lanzamiento, hacer clic Otro, y lanzar una terminal para ejecuta este comando en Mac OSX:
nano ~ / .bash_profile
Los siguientes pasos son los mismos para ambos sistemas operativos..
Al final del archivo, agregue esta línea:
export SSLKEYLOGFILE = ~ / .ssl-key.log
prensa Ctrl + X, Y para guardar tus cambios.
Cierre la ventana de terminal y abra otra para configurar la variable, luego escriba lo siguiente para confirmar que se ha configurado correctamente:
echo $ SSLKEYLOGFILE
Después de ejecutar el comando, debería ver una salida similar a la imagen de arriba. /Users/comparitech/.ssl-key.log es la ruta completa a mi registro de clave maestra SSL previa. Nota: querrás tomar nota de la tuya, que será diferente, para ingresar a Wireshark.
Ahora que se ha establecido la variable, puede pasar al siguiente conjunto de pasos.
Inicie su navegador y verifique el archivo de registro
Antes de iniciar Wireshark y configurarlo para descifrar SSL utilizando una clave maestra previa, debe iniciar su navegador y confirmar que se está utilizando el archivo de registro.
Para completar el registro, es importante que visite un sitio que tenga SSL habilitado. Estoy usando mi propio servidor Apache para las pruebas, pero cualquier sitio funcionará. Uno de los mayores beneficios de usar una clave compartida pre-master es no necesitas acceso al servidor descifrar SSL.
Después de visitar un sitio web habilitado para SSL, verifique el archivo para obtener datos. En Ventanas, puedes usar Bloc. En Linux o Mac, usa el siguiente comando:
cat ~ / .ssl-log.key
En cualquier sistema operativo, su archivo debería verse como el mío arriba. Una vez que haya confirmado que su navegador está registrando claves maestras previas en la ubicación que seleccionó, puede configurar Wireshark para usar esas claves para descifrar SSL.
Configure Wireshark para descifrar SSL
Una vez que su navegador está registrando claves pre-master, es hora de configurar Wireshark para usar esos registros para descifrar SSL.
Abra Wireshark y haga clic Editar, luego Preferencias. los Preferencias se abrirá el cuadro de diálogo y, a la izquierda, verá una lista de elementos. Expandir Protocolos, desplácese hacia abajo, luego haga clic SSL.
En la lista de opciones para el protocolo SSL, verá una entrada para (Pre) -Master-Secret log filename. Busque el archivo de registro que configuró en el paso anterior o simplemente pegue la ruta.
Cuando haya terminado de configurar (Pre) -Master-Secret log filename, hacer clic Okay y volver a Wireshark. Estás listo para seguir adelante.
Capture la sesión y descifre SSL
El último paso es capturar una sesión de prueba y asegurarse de que Wireshark descifre SSL con éxito.
- Inicie una sesión de captura sin filtro, minimícela y abra su navegador.
- Visite un sitio seguro para generar datos y, opcionalmente, configure un filtro de visualización de “ssl” para minimizar el ruido de la sesión.
- Haga clic en cualquier marco que contenga datos encriptados.
En mi caso, seleccionaré uno que contenga tráfico HTTP con codificación de texto / HTML, ya que me gustaría ver el código fuente que el servidor web está enviando a mi navegador. Pero cualquier tráfico encriptado que use una clave secreta maestra previa funcionará con este método. Eso incluye todos los datos que utilizan Perfect Forward Encryption (PFE) a través de Diffie-Hellman o intercambios de claves comparables.
Una vez que haya seleccionado un marco encriptado, mire el Vista de bytes de paquete, y específicamente las pestañas debajo de la vista. Debería ver una entrada para SSL descifrado datos, entre otros.
Notarás que mi sesión todavía parece estar llena de basura y que no hay HTML visible. Esto se debe a que mi servidor web (y la mayoría de los servidores Apache) usan la compresión GZIP de manera predeterminada.
Cuando haces clic en el Cuerpo de entidad sin comprimir pestaña, que solo aparece en este caso con el descifrado SSL habilitado, puede ver el código fuente del sitio. Por ejemplo, aquí está el elemento de título de la página Apache predeterminada en texto sin formato.
Usando una clave RSA para descifrar SSL
Es posible que haya notado anteriormente que Wireshark tiene un campo que le permite cargar sus claves RSA y usarlas para descifrar SSL. En la práctica, El descifrado de clave RSA está en desuso.
La razón por la que el descifrado SSL con una clave RSA ya no se usa comúnmente es que el cifrado directo perfecto (PFE) lo ha vuelto obsoleto. Las sesiones negociadas con Diffie-Hellman no usan la clave RSA directamente; en su lugar, generan una clave única, almacenada solo en la RAM, que se cifra utilizando la clave en el disco.
Si anteriormente estaba utilizando una clave RSA para decodificar el tráfico y dejó de funcionar, puede confirmar que la máquina de destino está utilizando intercambios Diffie-Hellman habilitando el registro SSL.
Para activar el registro, haga clic en Editar desde el menú de la barra de herramientas y seleccione Preferencias. Ampliar la Protocolos elemento del menú a la izquierda y desplácese hacia abajo para SSL. Desde aquí, puede hacer clic en el Vistazo botón y establezca la ubicación de su registro SSL.
Una vez que se establece la ubicación, todas las interacciones SSL se registrarán en el archivo especificado.
Capture una sesión con su host habilitado para SSL, luego verifique los registros. Específicamente, debe desplazarse hasta encontrar el marco en el que se negoció el protocolo de enlace TLS. Es probable que vea una entrada indicativa de DHE en la cadena de cifrado.
Eso significa que los intercambios de claves Diffie-Hellman están habilitados. En mi caso, Apache usa específicamente Diffie-Hellman con teclas de curva elíptica, que se denota por la cadena ECDHE.
Desplácese un poco más y es probable que vea que no se puede encontrar el secreto maestro.
Si sus registros se ven así, y no puede descifrar el tráfico con una clave RSA, no tiene más remedio que cambiar al método secreto anterior al maestro anterior..
Dado que PFE se está convirtiendo en una práctica estándar, con TLSv1.3 probablemente forzando el problema, el descifrado de clave RSA simple está en desuso y no debe usarse.
Wireshark hace que descifrar el tráfico SSL sea fácil
Realmente me gusta la forma en que Wireshark maneja el descifrado SSL. La criptografía es complicada y los estándares cambian constantemente para ser más seguros. Pero una vez que Wireshark y su entorno estén configurados correctamente, todo lo que tiene que hacer es cambiar las pestañas para ver los datos descifrados. No hay nada más fácil que eso.
mplo, podría usar la ruta C:\sslkeys.log. Una vez que haya terminado, haga clic en Aceptar para guardar la variable de entorno. Establecer una variable de entorno Linux o Mac En Linux o Mac, deberá establecer una variable de entorno utilizando el terminal. Abra una terminal y escriba el siguiente comando: export SSLKEYLOGFILE=/ruta/al/archivo/sslkeys.log Reemplace /ruta/al/archivo/sslkeys.log con la ruta donde desea almacenar el archivo de registro. Inicie su navegador y verifique el archivo de registro Ahora que ha establecido la variable de entorno, inicie su navegador y navegue a un sitio web que use SSL. Después de que se haya cargado la página, verifique el archivo de registro que especificó en la variable de entorno. Debería ver una entrada que contiene la clave secreta pre-maestra. Configure Wireshark para descifrar SSL Abra Wireshark y vaya a Editar > Preferencias. En la ventana Preferencias, seleccione Protocolos > SSL. En la sección (Pre)-Master-Secret log filename, seleccione la opción Use the (Pre)-Master-Secret log file y especifique la ruta al archivo de registro que estableció en la variable de entorno. Capture la sesión y descifre SSL Ahora que ha configurado Wireshark para usar la clave secreta pre-maestra, puede capturar la sesión SSL que desea descifrar. Una vez que haya capturado la sesión, haga clic derecho en uno de los paquetes SSL y seleccione Decodificar como > SSL. Wireshark debería descifrar la sesión y mostrar los datos sin procesar en la ventana de detalles del paquete. Usando una clave RSA para descifrar SSL Si no puede obtener una clave secreta pre-maestra, también puede usar una clave RSA para descifrar SSL en Wireshark. Este método es menos recomendado porque requiere acceso al servidor de destino y puede ser más difícil de configurar. Wireshark hace que descifrar el tráfico SSL sea fácil Aunque el cifrado SSL puede dificultar la administración de redes, Wireshark hace que descifrar el tráfico SSL sea fácil. Con la clave secreta pre-maestra adecuada o una clave RSA