jueves, 1 de mayo de 2014

Telegram: dos clientes por la clave de uno

 


INTECO ha llevado a cabo un análisis minucioso del diseño del protocolo que la plataforma de mensajería Telegram emplea para autenticar a los usuarios, es decir, el modo en el que éstos se identifican para acceder al servicio.


Imagen blog
   
La conclusión es clara: se trata de un fallo de seguridad en el que un atacante podría ser capaz de interceptar la información enviada por los usuarios sin que éstos sean conscientes de que está ocurriendo.

El problema se debe a que Telegram posibilita que cualquier persona que emplee la plataforma de mensajería pueda crear versiones de su aplicación y utilizar los servicios que proporcionan a través de sus servidores. En Telegram



se incluye una clave pública que permite a la aplicación del usuario asegurarse de que se está comunicando con la plataforma oficial. Pero como el programa lo puede desarrollar cualquier persona, un atacante malicioso podría modificar

esa clave, y suplantar, por tanto, a los servidores de Telegram, interceptando las comunicaciones que el usuario envíe o reciba.

Descripción del protocolo y del exploit

El protocolo de autorización y autenticación de Telegram consiste en el envío de 6 mensajes, en los que se establece una clave compartida utilizando el protocolo Diffie-Hellman. Típicamente, el primer Data Center con el que

 contacta el cliente indica las direcciones IP y puertos de otros Data Centers con los que el cliente repite el mismo proceso, estableciendo una clave con cada uno de ellos. Para finalizar el proceso, uno de los Data Centers “le pide” al cliente el

 número de teléfono móvil al que quiere asociar la clave. El cliente lo introduce, y Telegram envía a dicho móvil un código, vía SMS, que el cliente tendrá que enviar de vuelta para completar la activación del servicio en dicho dispositivo.

 Este proceso se muestra en la Figura 1. Telegram se refiere a las claves negociadas mediante este protocolo con el nombre de authorization_keys.
telegram_auth
Figura 1. Protocolo de autenticación de Telegram.
Este protocolo autentica al cliente. En cuanto al servidor, se autentica incluyendo la huella digital (fingerprint en la figura) asociada a su clave pública. A partir de esto, los aspectos más destacables de la autenticación son los siguientes:
  • El cliente comprobará si la fingerprint recibida coincide con alguna de las claves públicas que tiene preinstaladas.
  • En caso afirmativo, el cliente usará la clave pública correspondiente para cifrar el segundo mensaje que envía (req_DH_params).
  • Este mensaje cifrado contiene un número aleatorio que se utilizará como base para derivar una clave AES temporal, con la que se cifrará el resto de los mensajes del intercambio.
  • Dado que el número aleatorio es cifrado con la clave pública de Telegram, únicamente Telegram podrá descifrarlo, realizando su autenticación implícitamente de esta manera.


telegram_auth_mitm_dump

A ojos de la víctima, estará comunicándose con Telegram y, a ojos de Telegram, la comunicación será con un cliente legítimo. El MITM sólo tendrá que interceptar los mensajes que van en un sentido, cambiar unos valores específicos, volver a cifrarlos y reenviarlos a su destinatario final.

Requisitos para el ataque

Como se ha mencionado, es necesario modificar la clave pública y las direcciones IP que el cliente tiene preinstaladas o configuradas como correspondientes a Telegram. Esto puede parecer demasiado restrictivo y

posiblemente así sea en muchos casos. No obstante, como también se ha dicho, Telegram fomenta el desarrollo por parte de terceros, lo cual facilita la tarea enormemente. Por un lado, estas aplicaciones no oficiales probablemente no

hayan sido sujetas a auditorías de seguridad o a buenas prácticas de programación segura que prevengan satisfactoriamente la explotación de este problema. Por otra parte, a partir de los clientes existentes, es trivial crear un cliente modificado de la forma necesaria para activar el ataque.

Finalmente, además de los clientes no oficiales referenciados desde la web de Telegram, también existen clientes no incluidos en esa lista. Ejemplos son la versión en portugués de Webogram Chrome App (que no parece desarrollada

 por la misma persona) o una versión para Ubuntu Touch. Por supuesto, que las aplicaciones no estén referenciadas desde la web de Telegram no significa que sean maliciosas. No obstante, pone de manifiesto que existen métodos

alternativos para obtener clientes de Telegram y que, probablemente, por dichas vías se puedan introducir clientes maliciosos que pasen más inadvertidos.

fuente: http://cert.inteco.es/

0 comentarios:

Publicar un comentario

Buscar este blog

mrgansomer. Con tecnología de Blogger.