Skype ¿Sigue siendo seguro para su empleo en mensajería?

7 Feb 2014 en Las Agencias Informan

Análisis de las conversaciones encriptadas de Skype, en texto no cifrado

Skype es, o fue, proclamada como una de las aplicaciones de mensajería instantánea y VOIP más seguras disponibles. Este wiki sobre la seguridad de Skype describe en detalle cómo se encriptan los datos, pero además menciona que la información está desactualizada dado que la investigación original se llevó a cabo muchos años atrás. Según CNET: “Skype era la única empresa de mensajería instantánea que decía que no podía realizar una interceptación en vivo si se le solicitaba intervenir comunicaciones: “debido a las técnicas de encriptación y la arquitectura punto a punto de Skype, Skype no podría atender dicha solicitud.”

 

En base a mi investigación preliminar, la documentación sobre la encriptación y los mecanismos de transporte de Skype parece estar desactualizada, ser imprecisa y, en muchos casos, simplemente no existe. Supongo que algo de eso se puede atribuir al propósito de construir un protocolo seguro (olvidándose del dicho “la seguridad por ocultamiento no es seguridad en absoluto”). Además, no nos olvidemos de que Skype ha cambiado de dueño varias veces a lo largo de los años y su dueño actual, Microsoft, hizo algunos cambios, no todos para mejor.

No hace mucho, estaba en casa relajándome después de un largo día de trabajo cuando sonó mi teléfono sonó indicando que tenía un correo electrónico nuevo en espera. Dula, una colega, me había dejado una nota para preguntarme si Solera reconstruía conversaciones de Skype. Es una pregunta válida: Solera puede reconstruir una gran cantidad de aplicaciones de mensajería instantánea. No recuerdo mis palabras exactas, pero dije algo así como que el tráfico estaba encriptado con mecanismos de propiedad exclusiva y que nosotros, como simples mortales, no podríamos ver las conversaciones descifradas. Mi colega me respondió que ya había descifrado mensajes de Skype con la tecnología de inspección de SSL de Blue Coat.

En un estado temporal de incredulidad, le pedí que me enviara un pcap del tráfico. Mientras lo esperaba llegar, les consulté a algunos de mis colegas actuales y anteriores que trabajan en seguridad de redes si sabían si Skype era descifrable. Todos respondieron con un rotundo no; y citaron variantes de la historia de la encriptación cerrada y las comunicaciones “punto a punto”. El pcap llegó poco después, y descubrí que Dula tenía razón: teníamos tráfico no cifrado. ¡Qué sorpresa! Inmediatamente pensé que muchas personas estarían interesadas en saberlo. Había que prepararse y ponerse a investigar en profundidad.

Me fui corriendo a mi laboratorio y busqué reproducir los esfuerzos de Dula. Los requisitos básicos para inspeccionar y grabar el tráfico SSL de Skype son los siguientes:

Esta es una representación básica de lo que usé para la configuración de mi laboratorio.

(Sí, no me pude resistir a volver a usar el reciente latiguillo de la Agencia Nacional de Seguridad (NSA) en mi diagrama)

Registré un par de cuentas falsas de Skype para hacer pruebas, envié un poco de tráfico a través de Skype, revisé todos mis paquetes de Skype y descubrí que, de hecho, estaban encriptados. Para verificar que mi dispositivo de visibilidad de SSL había realmente registrado de nuevo y descifrado el tráfico SSL , entré a algunos de mis sitios de prueba favoritos: PayPal y Facebook. Así confirmé que, mediante el uso de SSL-VA, todo el tráfico SSL era descifrado y enviado al dispositivo SAP de manera no cifrada.

Después de curiosear un poco más para asegurarme de que las configuraciones del cliente estuvieran correctas, verificar de nuevo que el certificado de la CA del nuevo registro estuviera en el almacén raíz de confianza y revisar aún más mi tráfico capturado, se me ocurrió que probablemente estaba usando una versión anterior del cliente Skype. ¡Bingo! Lo actualicé a la última versión e inmediatamente vi mis conversaciones de mensajería instantánea no cifradas. Algo realmente cambió con la actualización de Microsoft para Skype.

Además, descubrí que el cliente Skype no informa al usuario que está usando SSL, ni tampoco muestra qué certificados están en uso. Por ejemplo, en la mayoría de los exploradores web, el usuario puede hacer clic en el ícono del candado para ver los certificados de cualquier sitio determinado. Skype no presenta en absoluto esa información al usuario final.


Es seguro. Casi siempre.

Ese comportamiento no es completamente inesperado ya que muchas aplicaciones independientes incorporan su propio almacén de certificados o solo usan el almacén de certificados del sistema operativo. Para el usuario de Skype, esto significa que, siempre y cuando su sistema operativo confíe en la Autoridad de certificación y la cadena de certificados, su cliente se conectará con éxito a los servidores de Skype. Para retirar con éxito la inspección de SSL, el usuario debe confiar en alguna Autoridad de certificación (CA) (generalmente) privada. El dispositivo de visibilidad de SSL produce un ataque SSL de “intermediario”, registrando de nuevo la cadena de certificados de SSL original con su propio certificado de la CA. Si el sistema del usuario confía en esta nueva CA, nuestro usuario de Skype nunca sabrá si su tráfico fue interceptado por un dispositivo de inspección de SSL. Dicho de forma más simple: coloque un certificado de la CA en el almacén de certificados del usuario y nunca sospechará que fue intervenido. ¿Alguien está un poco más paranoico?

Certificados que usa Skype.

Analicemos algo de lo que recopilé. Quizás no tenga todas las respuestas sobre cómo funciona Skype, pero en base a mis observaciones y las tareas que realicé, podemos hacer algunas afirmaciones sobre lo que hace. Aquí también presento todos los artefactos y pcaps asociados de manera que usted pueda seguir analizando los datos por su cuenta. Tenga en cuenta que los artefactos no representan todo lo que vale la pena analizar, deberá sacar sus habilidades de Wireshark para buscar un poco más en profundidad.


Captura de pantalla de la sesión de chat de Skype asociada con skype-chat-3.pcap


Captura de pantalla de la llamada de Skype asociada con skype-call pcap.

No voy a analizar los detalles de cada artefacto o paquete, pero voy a destacar algunos que considero interesantes. Comencemos con el pcap de la sesión de chat de Skype. Si sigue Wireshark, la secuencia TCP 5 es la primera secuencia que presenta algunos datos de interés. Aquí podemos ver la versión del sistema operativo, el tipo de procesador y el código del país (que, curiosamente, está mal, ya que estoy en los EE. UU., no en Australia). El servidor responde con un objetivo ubicado en messenger.live.com y una cadena de codificación de tipo base64 que se decodifica a:

Versión: 1
XfrCount: 1
XfrSentUTCTime: 635210299411156234

Si desea extraer artefactos usted mismo, siga las varias secuencias TCP en Wireshark y haga que las decodifique como tráfico HTTP.

Lista de objetos HTTP para exportar de Wireshark

Poco después de que inicié sesión en Skype, descubrí una cadena interesante delimitada por “uic”, ¿un código de identificación del usuario, quizás? Los datos parecían estar codificados en Base64, pero su decodificación como tal dio resultados sin sentido para mí; no pude ver ninguna cadena reconocible. Creo que puede ser el lugar donde se intercambia la contraseña del usuario, porque claramente no estaba en ninguna otra parte del pcap. Supongo que Skype solo está pasando un hash de la contraseña, pero luego de decodificar los datos y comparar los resultados con varios resultados con hash de la contraseña de la cuenta no obtuve nada. Sin embargo, el nombre de usuario está allí: spoonfed123.

Parece que usa un valor de seguridad (nonce) para algo:

Aquí captan el nombre de host del sistema:

Cuando comienza el intercambio de mensajería instantánea, podemos ver claramente que los mensajes van y vienen al seguir las secuencias TCP correctas:

Cuando se transfiere un archivo, podemos identificar lo que parece ser el canal de control para la transferencia del archivo. El comienzo del mensaje contiene el tipo de mensaje, el tipo mime (lo etiquetan como tipo de contenido), seguido de algunas etiquetas del archivo. Los propios datos están en una secuencia diferente que, desafortunadamente, no pude decodificar adecuadamente con el tiempo limitado que le dediqué.


Canal de control para la transferencia de archivos


Imagen enviada

Aquí hay algunos datos etiquetados con un identificador NodeInfo y parecen ser las actualizaciones del estado de algunas personas de mi lista de contactos. ¿Esto quedó de los días del súper modelo de nodos, quizás?

Hay una letanía de otros artefactos que el cliente Skype extrae de diferentes fuentes msn.com, msads.net, Hotmail.com, scorecardresearch.com, y la lista sigue.


Solo un parcial de los datos que extrae Skype

No voy a analizar cada uno, sino que voy a mostrar el siguiente archivo grande de scripts de Java de apps.skype.com.

El archivo es tan grande que se podría escribir un blog entero para documentar todo lo que hace el código. No lo voy a hacer acá y, además, no soy experto en JavaScript. Si desea dedicarle tiempo a comprender el funcionamiento interno de Skype, lo aliento a que vea las más de 5000 líneas del código.


¡Me duele la cabeza de solo pensar en analizar todo este código!

Cambiando de tema, observemos el pcap de la llamada de Skype, donde se hizo una llamada. Puse algunos “marcadores” en la conversación de chat mientras usaba VOIP para ayudar a filtrar los paquetes y darle sentido al lugar donde podrían estar los datos de audio en la secuencia de paquetes, por ej., “endcall”. La secuencia TCP 2 contiene la breve conversación de mensajería instantánea, resaltada con el marcador endcall.

Sin embargo, las secuencias 3 y 4 son de particular interés. Aunque los datos en sí mismos no contienen ninguna cadena legible para los seres humanos, se parecen a los patrones de datos que normalmente se encuentran en una llamada VOIP. Volqué el contenido de las secuencias en dos archivos distintos (se presentan a continuación como sky1 y sky2) y les saqué información con varios detectores de códecs y varias aplicaciones para la reproducción de audio, y descubrí que me había chocado contra una pared. No son datos de audio o no estoy usando las herramientas adecuadas para reproducir las secuencias de audio. Espero que la inteligencia colectiva de Internet me pueda ayudar a descubrirlo.



¿Datos de una llamada telefónica?


Reflexión final

¿Skype todavía es seguro? Supongo que depende de la perspectiva de cada uno. Por supuesto que usa SSL para encriptar sus datos pero, como lo demostramos, con las herramientas adecuadas es fácil descifrar e interceptar el tráfico. Me gustaría que Skype permita al usuario ver los certificados que están en uso. Seguramente, al 99 % de los usuarios no les interesa, pero aquellos (como yo) más preocupados por la inviolabilidad de su conexión querrán verificarlo. Ya que Microsoft no proporciona los medios para hacerlo, usted puede poner en marcha Wireshark en su sistema local para grabar los intercambios de SSL y verificar los certificados en uso. Aquellos que pensaban que Skype era la panacea para las comunicaciones seguras, deberán volver a evaluar para qué y cómo usan las aplicaciones de mensajería instantánea y VOIP. Si no conoce OTR (Off The Record), ahora puede ser el momento ideal para familiarizarse con él.