EDITAR: La siguiente publicación * no estaba en un dispositivo rooteado o con jailbreak *. Para acceder a la base de datos de chat secreto de texto sin formato que contiene los mensajes, utilizamos nuestra implementación de CVE-2014-3153. Las afirmaciones de que el dispositivo está rooteado/liberado son incorrectas y engañosas.
Comenzaré citando CryptoFail Blog
“Telegram es una aplicación de mensajería instantánea encriptada para dispositivos iOS y Android. Obviamente, no lo mencionaría en este blog si su criptografía fuera perfecta. De hecho, está lejos de ser perfecto. Es casi horrible.
No estoy seguro si fue en respuesta a algunos buena criticapero Telegram anunció recientemente un concurso criptográfico. Básicamente, si puede recuperar una dirección de correo electrónico cifrada con su aplicación de mensajería segura, puede ganar $ 200,000 USD en Bitcoin.
Desafortunadamente, el concurso es inútil. Ni los usuarios ni los desarrolladores de Telegram aprenderán nada de los resultados del concurso. Pero, Telegram aún podrá señalar el concurso y decir: “¡Mira! Nadie ha ganado el concurso, ¡así que nuestro software es seguro!” Los usuarios ingenuos creerán en Telegram y se sentirán seguros usando un cifrado peligrosamente roto”.
Decidí echar un vistazo más de cerca al concurso. Mi intención era ver si podía leer mensajes cifrados sin estar conectado. Realicé una prueba con el sistema operativo Android versión 4.4.2.
Telegram afirma ser una aplicación de mensajería orientada a la privacidad capaz de cifrar secretos personales y comerciales, solo que no lo son. Una vulnerabilidad crítica descubierta por Zimperium Mobile Security Labs expone a sus más de 50 millones de usuarios que creen que la aplicación brinda seguridad para chatear libremente. Permítanme explicar cómo nos topamos con esta vulnerabilidad.
Los antiguos concursos Crypto de Telegram hacen referencia a romper su protocolo mientras se está en medio de una conversación encriptada. Esta no es una buena idea por dos razones:
1. En el mundo real, los piratas informáticos no siguen las reglas.
2. Esto supone que los piratas informáticos intentarían romper el cifrado de Telegram en el medio, cuando en cambio puede encontrar debilidades en otros protocolos que brindan más beneficios (por ejemplo: GoToFail para omitir el cifrado SSL en iOS).
El Nuevos concursos de criptomonedas por Telegram dice: «… y esta vez los concursantes no solo pueden monitorear el tráfico, sino también actuar como el servidor de Telegram y usar ataques activos, lo que aumenta enormemente sus capacidades».
Como resultado, no voy a romper el cifrado simplemente evitándolo. Voy a eludir el cifrado simulando un ataque activo en el dispositivo.
La mejor manera de hacerlo es comprender la anatomía de los ciberataques y la arquitectura de los dispositivos móviles. No me tomó mucho tiempo instalar el software de Telegram, encontrar los textos cifrados y no cifrados que envié, junto con una base de datos que contenía todo lo anterior.
El sitio web de Telegram dice: “Un chat secreto es un chat uno a uno en el que todos los mensajes están encriptados con una clave que solo tienen los participantes del chat. Por definición, se deduce que ningún tercero puede acceder al contenido descifrado sin acceso a uno de los dispositivos”. Esto plantea 2 preguntas: primero, suponiendo que un usuario no tiene acceso físico al dispositivo y el dispositivo fue pirateado de forma remota, ¿qué tan fácil sería para el atacante recuperar el cifrado de extremo a extremo implementado por Telegram? En segundo lugar, ¿cómo se cifran los chats secretos de Telegram en el dispositivo móvil?
Es más fácil encontrar una vulnerabilidad en un teléfono y piratearlo de forma remota a través de URL/PDF/Man-In-The-Middle y otras técnicas de ataque que he discutido antes. Una vez que piratea un teléfono móvil, debe elevar sus privilegios para obtener el control del dispositivo. Esto se puede hacer fácilmente usando un exploit de Kernel.
Si es nuevo en la seguridad móvil, he incluido algunos ejemplos a continuación que demuestran cómo una persona puede realizar un ataque en un dispositivo móvil de forma remota. Este tipo de piratería sería aún más fácil para los actores de los estados-nación con más recursos, tiempo y dinero a su disposición:
1. Vulnerabilidad del lado del cliente: Chrome exploit – Pwn2Own Otoño 2013
2. Explotación del kernel: CVE-2014-3153 (también conocido como: ToallaRaíz)
Echemos un vistazo a lo que hice. Empecé creando mensajes secretos dentro de la versión de Android de la aplicación Telegram con la intención de encontrarlos sin cifrar en alguna parte. Supuse que los mensajes de Secret-Chat estaban encriptados en la memoria, o al menos en la base de datos local. ¿Es mucho pedir de un mensajero de texto orientado a la privacidad y la seguridad?
Si toma una captura de pantalla como atacante, se enviará una notificación a ambos usuarios, por lo que se puede asumir que la seguridad y la privacidad deben ser una prioridad para Telegram. Sin embargo, creer que un atacante tomará una captura de pantalla en lugar de tomar el control total del dispositivo es un poco ingenuo.
Le di a Telegram el beneficio de la duda y no busqué los errores más comunes que puede esperar ver en programas no orientados a la seguridad. Simulé un ataque que se originó en una vulnerabilidad del lado de la aplicación/cliente que obtiene permisos al ejecutar un exploit del kernel (utilicé CVE-2014-3153)- como se describió anteriormente. Hay formas más limpias de volcar los resultados, pero solo quería proporcionar una prueba de concepto (POC). Telegram tiene una función llamada «Chat secreto» con un candado (ver arriba) que se siente seguro. Descargué la memoria de proceso de Telegram y busqué cadenas que contuvieran la palabra que envié y recibí en la imagen de arriba.
Como puede ver, las palabras Woof, Text, Shlookido, Cookiedo, Tambalul y NotSoEncryptedInMemory están, bueno… no encriptados en la memoria del proceso. Cualquier atacante que obtenga acceso al dispositivo puede leer los mensajes sin demasiado esfuerzo. Los mensajes de Secure-Chat se pueden leer en texto claro en la memoria de Telegram. Este descubrimiento me llevó a comprobar si había una forma más fácil de acceder al contenido de los mensajes, y tuve éxito.
Si bien se suponía que la comunicación de Telegram estaba encriptada (también estaba rota…)
Para completar mi investigación, accedí al shell que recibí anteriormente al ejecutar CVE-2014-3153 para ver los archivos de la aplicación en /data/data/org.telegram.messenger/ y descubrí un archivo llamado Cache4.db en los «archivos» de la aplicación. ” carpeta:
Supuse que «enc_chats», «enc_tasks_v2», enc significaba probablemente encriptado, así que busqué este archivo y lo examiné. El archivo contenía nuestra mensajes secretos en texto sin formato!
Una de las características más interesantes de la aplicación de mensajería Telegram es la función de «Eliminar» mensajes. Mi próximo intento fue diseñado para acceder y recuperar información confidencial previamente eliminada por el usuario. Quería recuperar los mensajes eliminados directamente de la memoria o de los archivos cache4.db.
1. Memoria:
Hice clic en opciones->Establecer autodestrucción en 5 segundos y esperaba que el mensaje se eliminara, pero no sucedió nada en ninguno de los teléfonos. Parecía un error, no un problema relacionado con la seguridad.
Eliminé el mensaje haciendo clic en opciones->eliminar.
Una inspección del archivo cache4.db no mostró señales de la conversación. (Un mensaje eliminado puede ser más interesante para un atacante). Después de examinar el archivo cache4.db, miré la memoria y pude encontrar la conversación original después de haberla borrado de la memoria.
Cronograma de divulgación:
A continuación se muestra el cronograma de divulgación que seguimos como parte de la Política de divulgación de día cero de Zimperium. Hicimos varios intentos de comunicarnos con el equipo de seguridad de Telegram y aún no hemos recibido una respuesta de Telegram durante más de 30 días. Como referencia, aquí hay una copia de nuestra política: Política de día cero de 30 días.
1. 17/1/2015 – Vulnerabilidad encontrada
2. 18/1/2015 – Vulnerabilidad divulgada responsablemente ZVD-2015-0100, ZVD-2015-0101, ZVD-2015-0102 según nuestro Política de día cero de 30 días – no hay respuesta del proveedor.
3. 23/1/2015 – Se le pidió al proveedor que comentara – no hubo respuesta
4. 2/3/2015 – Se le pidió al proveedor que comentara – no hubo respuesta
5. 02/06/2015: se le pidió al proveedor que comentara; no hubo respuesta
6. 23/2/2015 – Vulnerabilidad hecha pública
Recomendación
Mi conclusión es simple.
Si bien Telegram se fundó con el noble objetivo de brindar privacidad a los consumidores en todas partes sin costo alguno, no han logrado su objetivo al centrarse únicamente en los datos en tránsito en lugar de proteger los datos en reposo en el propio dispositivo móvil. Lo lamentable es que me acerqué a Telegram varias veces y aún no he recibido una respuesta. El llamado cifrado poderoso de Telegram no protege a los usuarios mejor que cualquier otra página o aplicación que use SSL. Si está utilizando Telegram porque desea garantizar su privacidad y la privacidad de los mensajes que envía, tenga en cuenta que no impedirá que los piratas informáticos sofisticados lean sus mensajes. Recomendamos encarecidamente agregar protección adicional a su dispositivo móvil que pueda detectar ataques cibernéticos a nivel de dispositivo.
Para proteger mejor la comunicación crítica, hubiera esperado que Telegram (o cualquier software de mensajería) cifrara las cadenas de chat en la memoria, además de cifrar las conversaciones en el archivo cache4.db. El sistema Mobile Threat Defense de Zimperium detectó toda la cadena de ataque que se realizó para obtener el contenido de los mensajes secretos.
Acerca de Zimperium
Zimperium es el líder en Seguridad móvil empresarial. El Defensa contra amenazas móviles de Zimperium El sistema ofrece protección de clase empresarial para dispositivos Android e iOS contra la próxima generación de amenazas móviles avanzadas. Desarrollado para dispositivos móviles, Zimperium utiliza análisis patentados basados en el comportamiento que se encuentran en el dispositivo para proteger los dispositivos móviles contra amenazas basadas en el host y la red dondequiera que los lleve el negocio.
Sigueme en Twitter (@ihackbanme)