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….
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)
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
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)
Desplegamos la opción de Protocol, seleccionamos SSL y pulsamos en Edit…
Pulsamos en New
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
Pulsamos en OK
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
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»
Abrimos de nuevo el Wireshark, capturamos algo de tráfico y pulsamos en Follow SSL Stream
Nota: Si elegimos la opción Follow SSL Stream sin la configuración del Wireshark adecuada nos mostrará la siguiente pantalla (en blanco)
ahora podemos ver esto, desde luego ya podemos analizar que puede estar sucediendo
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
Espero que os sea de utilidad!!!