Microsoft Lync Server
Header

Desencriptar Tráfico de Sesiones SSL o TLS con Wireshark

abril 1st, 2013 | Posted by Santiago Buitrago in Lync Server | Troubleshooting

Seguramente en alguna ocasión habéis utilizado Wireshark (analizador de tráfico de red: sniffer) para analizar el tráfico de vuestra red en busca de detectar algún comportamiento anómalo, analizar el tráfico de red o simple curiosidad de saber que está pasando.​ Como sabéis en Lync el tráfico entre servidores va protegido vía MTLS y de cliente a servidor vía TLS, aquí tenéis una tabla resumida de cómo se protegen los distintos flujos de datos:

Tipo de tráfico Protegido por
Entre servidores
MTLS
De cliente a servidor
TLS
Mensajería instantánea y presencia
TLS (si se ha configurado para TLS)
Audio, vídeo y uso compartido de escritorio
SRTP
Uso compartido de escritorio (señalización)
TLS
Conferencia web
TLS
Descarga del contenido de las reuniones, descarga de la libreta de direcciones y expansión de grupos de distribución
HTTPS
El problema viene dado cuando queréis ver porque el cliente Lync no conecta, o que tipo de DSCP utiliza nuestro cliente Lync cuando iniciamos una conferencia, etc.. y nos encontramos con esto….
wireshark_ssl_17.png
Como se puede observar el tráfico está cifrado y sería imposible revisar nada, hasta aqui todo correcto. Pero claro, si queremos analizar cúal es el posible problema que tenemos resultaría imposible. Con Wireshark (y otras herramientas) podemos desencriptar el tráfico SSL (desencriptar no es igual a «juankear» ni similar) para poder analizarlo. Para esto necesitamos tener el certificado que utiliza el servidor al cual nos queremos conectar con su clave privada, de tal forma que tenemos que exportarlo desde el servidor con ella. Si no tenemos la clave privada  no podemos hacer nada,  para ello debemos tener acceso a ello. De ahí el comentario anterior de que no estamos hackeando nada de nada, puesto que el certificado con su clave privada la exportamos nosotros. Este artículo solo predente mostrar un procedimiento que debéis seguir para analizar el tráfico SSL o TLS que utiliza Lync (o cualquier otro servicio) para cifrar las comunicaciones. Una vez que tenemos nuestro certificado exportado con su correspondiente clave privada: (Exportación e Importación Certificados en Windows Server 2012)
Exportar_Certificado_Win2012_1.jpg
Demos convertir el PFX a PEM, que es el formato que Wireshark puede utilizar y para ello utilizaremos OpenSSL. Una vez instalado debemos ejecutar los siguientes comandos:
openssl pkcs12 -nodes -in SIP.pfx -out sip.pem -nocerts -nodes
openssl rsa -in sip.pem -out sipout.pem
wireshark_ssl_1.png
Ahora deberíais tener un fichero con el nombre sipout.pem (cada uno que ponga el nombre que quiera) similar a este (sin los puntitos, esto lo he puesto yo)
—–BEGIN RSA PRIVATE KEY—–
MIIEpAIBAAKCAQEAiFBWj/E7y6MAMUWacV2aeSpt/j2wHzB7xIYBCMnJy0u869eb
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
………………………………………………………………………………………………………………………………….
ufZSuWUFoiu1XPS6vWPtQ8VRjb0a4hGXSMYDxyupDgEAgRDIMN0jyW1PklbsOZOb
aJWQWC5UQuoWEP4gw+3aC87UTGrk8U10X0DpQdfyD3Bjwwvai3mEYw==
—–END RSA PRIVATE KEY—–
Ahora debemos configurar nuestro Wireshark para que utilice el fichero de clave privada, para ello abrimos el Wireshark y vamos a Edit – Preferences (Shift+Ctrl+P)
wireshark_ssl_4.png
Desplegamos la opción de Protocol, seleccionamos SSL y pulsamos en Edit…
wireshark_ssl_6.png
Pulsamos en New
wireshark_ssl_7.png
Y configuramos las siguientes opciones:
IP Address: IP del servidor en donde esté instalado el certificado
Puerto: 443
Protocolo: HTTP
Key File: Elegimos el fichero que anteriormente hemos convertido a .PEM
wireshark_ssl_8.png
Pulsamos en OK
wireshark_ssl_9.png
Y por último vamos a configurar el fichero de registro que se creará en los procesos de desencriptación (información muy útil) y pulsamos en Apply para iniciar el proceso de desencriptación de las capturas actuales
wireshark_ssl_13.png
Si ahora abrimos el fichero de LOG, veremos que se están procesando correctamente, por lo que podremos ver el tráfico capturado de forma «legible»
wireshark_ssl_16.png
Abrimos de nuevo el Wireshark, capturamos algo de tráfico y pulsamos en Follow SSL Stream
wireshark_ssl_10.png
Nota: Si elegimos la opción Follow SSL Stream sin la configuración del Wireshark adecuada nos mostrará la siguiente pantalla (en blanco)
wireshark_ssl_19.png
ahora podemos ver esto, desde luego ya podemos analizar que puede estar sucediendo
wireshark_ssl_11.png
wireshark_ssl_12.png
El poder desencriptar el tráfico resulta muy útil, eso si, debéis tener acceso a la clave privada del certificado. Por otra parte, no deberíais permitir que los certificados instalados en los servidores tengan la clave privada como exportable, porque si alguien tiene más habilidad que nosotros nos puede comprometer y mucho la seguridad de nuestra empresa. Este artículo solo viene a representar como podéis analizar el tráfico encriptado con una de las herramientas más utilizadas para analizar tráfico de red, pero podéis hacerlo con otras muchas. En principio solo tiene el fin de  solventar distintos problemas que nos puedan surgir en nuestras implementaciones, como el tráfico están encriptado se nos complica cualquier diagnóstico.
Os dejo también un ejemplo muy ilustrativo de una captura sin tráfico encriptado, pero y si estuviera encriptado? podríamos tardar horas en encontrar cual es el problema
wireshark_ssl_18.png
Espero que os sea  de utilidad!!!

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *