Todos conocemos la aplicación de mensajes con autodestrucción Snapchat. Desde casi al inicio de la aplicación escribe una notificación cuando se hace una captura de pantalla del chat/fotos en una conversación. Y por este blog vimos cómo saltarse esta notificación con “Movie Recording de Quicktime” o usando una aplicación tipo "Reflector".
Figura 1: Grabar en Snapchat vídeos e imágenes con autodestrución usando Snapprefs
Desde Snapchat se pueden enviar imágenes o videos de varios segundos a un receptor, grabaciones recién tomadas en el momento de enviar un Snap o enviarlos desde la galería de nuestro terminal con una gran diferencia: las imágenes que se envíen desde la galería aparecerán como miniatura en la conversación de chat y las imágenes que se acaban de hacer aparecen como imágenes autodestructivas a los segundos que el emisor haya configurado. En definitiva, el receptor puede saber en cada momento desde donde se ha enviado la fotografía, pudiendo así, determinar si la imagen es verídica o es un engaño.
Figura 2: Imagen en miniatura e imagen en tocar para ver
El principal problema de esta aplicación es que, debido a su tecnología, la utilización que le dan muchos usuarios tiene que ver con el “Sexting”, una costumbre peligrosa que puede llevar a - si se practica con desconocidos - terminar en las famosas sextorsiones.
La aplicación que quiero comentar es “Snapprefs”. Esta aplicación que se instala mediante un módulo de Xposed (necesario ser Root) puedes hacer todo esto arriba comentado y más. Teniendo la aplicación instalada cada vez que un usuario nos envíe una imagen o un video se guardará automáticamente en nuestra galería subdividido en carpetas por nombre de usuario.
Las conversaciones de texto serán almacenadas en archivo de copias de seguridad y en la propia aplicación sin necesidad de que el usuario haga “pulsación larga”. Recordamos aquí que para guardas las conversaciones de texto, un usuario deberá dejar pulsado unos segundos en mensaje.
Con Snapchat existe la posibilidad de añadir una localización en cada imagen, o que aparezca nuestro usuario en un mapa como localización a tiempo real, como no iba a ser menos, desde Snapprefs se puede suplantar nuestra localización pudiendo engañar, una vez más, al usuario con la localización. Tan simple como añadir una latitud y una longitud y la otra persona creerá que te encuentras en ella.
Figura 4: SnapPrefs en Android
Podremos saltarnos la limitación de varios segundos, pudiendo ver las imágenes el tiempo que queramos o ver los videos tantas veces como queramos y otras muchas más opciones y por supuesto, sin que el usuario tenga ninguna constancia de ello. Si bien es cierto que la aplicación no salió con esas expectativas (o eso quiero creer) es una aplicación que se debe conocer, sabiendo que existe tenemos que tener cuidado con las cosas que enviamos por este tipo de aplicaciones. Veamos un ejemplo real con el siguiente video.
Figura 5:
Demo de Snapprefs en Snapchat
Snapchat se dio cuenta hace unos meses de que esto estaba ocurriendo, para evitar que sucediera hizo varias limitaciones: “Una persona no podrá iniciar sesión si el Framework Xposed está instalado en el dispositivo” Pero es una limitación un poco absurda teniendo en cuenta que puede saltarse. Procedimiento:
1- Instalamos Snapchat e iniciamos sesión
2- Instalamos Framework Xposed
3- Descargamos Snapreffs
4- ¡A funcionar!
Si realizamos los pasos en ese orden, la aplicación Snapprefs funcionará sin problema.
Hace un par de años, después de usar durante tiempo Reflector para hacer desde equipos macOS/OS X en muchas presentaciones de Latch en las que necesitaba mostrar la pantalla de un iPhone, me di cuenta de lo sencillo que era grabar los mensajes con autodestrucción de Telegram y Snapchat. A pesar de que ellos tienen una detección que le dice al usuario cuándo se ha hecho una captura de pantalla.
Figura 1: SnapChat te avisa de que graban tus mensajes pero no del todo
Con la llegada de la opción de Screen Recording en iOS 11, los mensajes de SnapChat pudieron grabarse de nuevo sin que el emisor de los mismos recibiera ninguna alerta, pero la actualización a la última versión de SnapChat ya detecta esta opción de grabación.
Figura 2: Opción de Screen Recording en iOS 11
Es decir, si una persona envía por SnapChat un mensaje con autodestrucción y la otra persona hace una captura de pantalla, bien con el método tradicional en iOS de pulsar el botón de encendido y el botón Home al mismo tiempo, como si utiliza la opción de Screen Recording de iOS 11, el que envió el mensaje recibirá el iconito verde que se puede ver a la derecha del mensaje.
Figura 3: Icono a la derecha que indica que el destinatario ha grabado el mensaje
Sin embargo, existen otras formas de hacer la grabación de la pantalla de un iPhone sin usar ninguna de las dos opciones anteriores, como es usar la posibilidad de Movie Recording de QucikTime en macOS o un software de terceros como Reflector que es lo que yo utilicé en su día.
Figura 4: PoC de grabación de mensajes de SnapChat en iOS 11
Así que hicimos unas pocas pruebas en mi equipo de PoCs & Hacks y probamos el comportamiento de SnapChat. Como podéis ver en el vídeo, detecta tanto el uso de Screen Recording, como cuando se usa QuickTime Movie Recording, pero cuando se usa Reflector.... nada de nada. El sistema de SnapChat no es capaz de detectar que la pantalla ha sido grabada y el mensaje está circulando ya por grupos de WhtatsApp.
Supongo que el título de este artículo a más de uno le puede crear cierta confusión por el hecho de mezclar Telegram y WhatsApp en la misma frase, pero dejadme que lo explique paso a paso y entenderéis de que va el ejercicio que quiere plasmar esta entrada. Vaya por delante que, este ejemplo, pese a que se hace con WhatsApp por su popularidad dentro de los usuarios, sirve para cualquier otra app que utilice la recuperación de cuentas por medio de un mensaje SMS, pero eso hubiera sido demasiado fácil si solo hubiera que hacer eso.
La gracia de hacerlo con WhatsApp es que la recuperación de cuentas se haga por SMS pero que además esté asociada al número de teléfono, y eso, hoy en día, está protegido por WhatsApp en Android. Debido a ese motivo, se usa Telegram como elemento de apoyo, pero también podría utilizarse cualquier otra app que permita usar el número de teléfono como identificador usuario.
Figura 1: ¿Sabes cuántas apps de tu Android te pueden robar el WhatsApp por tener Telegram?
El objetivo final de este artículo no es otro que poner de manifiesto algo que a muchos no nos gusta, y que no es nada más ni menos que los permisos de las apps en Android. El sistema que tiene Android para gestionar la seguridad del sistema, dejando en manos de los usuarios que decidan si quieren dar un permiso u otro a una app durante el proceso de instalación, sin entender bien todos los riesgos asociados, y sin poder cambiarlos a posteriori no gusta a muchos. Parece que Google va a hacer cambios en futuras versiones, y esperemos que así sea para hacer la vida más fácil a todo el mundo. Ahora, vamos con la demo.
Escenario del robo de la cuenta de WhatsApp
Supongamos una empresa que se dedica a hacer apps en Google Play, como pequeños juegos, herramientas de consulta, o pequeños útiles, decide un día volver una de sus apps maliciosas. Dejaré la reflexión sobre por qué hacerlo o si realmente podría haber sido éste el origen inicial de la creación de las apps para otros artículos, así que asumamos que que simplemente el malo controla una app con cierta popularidad que puede volver maliciosa. Esto quiere decir que es una app que puede estar en miles de dispositivos, y no como un troyano que se ha instalado en un único dispositivo para controlarlo. En este caso es una app maliciosa que se instala en miles de dispositivo y que el atacante puede volver maliciosa a capricho.
El objetivo es robar la cuenta de WhatsApp, simplemente como lo puede ser el lanzar la calculadora de Windows cuando se ejecuta un exploit. Solo para demostrar que funciona el planteamiento. Robar la cuenta de WhatsApp no garantiza acceso a la libreta de direcciones, ni a las conversaciones anteriores, pero sí acceso a recibir los mensajes futuros que le envíen a dicha cuenta, lo que para muchos pudiera ser valioso. Es decir, se puede robar la cuenta de WhatsApp, pero no espiar los mensajes de WhatsApp.
Figura 2: Todo lo descrito valdría también para SnapChat
Para conseguir robar esa cuenta, el atacante necesita dos cosas bastante sencillas. La primera el número de teléfono del objetivo - algo que aunque a priori pueda parece evidente, puede que no lo sea -. Supongamos que queremos robar la cuenta de WhatsApp de un objetivo del que únicamente se sabe su dirección de correo o su cuenta de Twitter o su cuenta de Facebook. No siempre se tienen todos los datos.
Si hubiera que robar cualquier cuenta que pudiera estar asociada a un número de teléfono como segundo factor de recuperación, en Android es suficiente con que la app maliciosa tenga tres permisos de sistema operativo.
El primero de ellos es el permiso GET_ACCOUNTS, que permite a cualquier app que lo tenga conocer qué cuentas están configuradas en un dispositivo Android. Es decir, se podría saber qué cuentas de correo electrónico, qué cuentas de Facebook o Telegram están siendo utilizadas en ese dispositivo. Nótese que dejo a WhatsApp fuera de esta ecuación, pues desde que los equipos de seguridad de la compañía se toman esto muy en serio, quitaron el número de teléfono de WhatsApp de la lista de cuentas en Android y está protegido en la base de datos que usa WhatsApp cifrada con el formato crypt8 que tanto ha mejorado la seguridad para proteger los mensajes contra atacantes indeseados.
Figura 3: Permisos en Android para gestión de los SMS
El segundo de los permisos que es necesario es el de acceder a los mensajes SMS. Esto es bastante curioso, pues en Android se puede hacer con dos permisos distintos, uno llamado RECEIVE_SMS y otro llamado READ_SMS. Ambos permiten leer el contenido de los mensajes, pero uno puede recibirlo directamente la app. Para un programador de apps y/o troyanos, es bastante trivial monitorizar estos mensajes. En el libro de Desarrollo de Android Seguro se hace un ejemplo de esto con los receivers y permite leer todo los mensajes SMS que llegan. Cualquier persona que sepa un poco de Java o de desarrollo de apps en Android es capaz de hacer esta monitorización continua.
Lo curioso es que pedir un permiso de lectura de SMS no genera una alerta en el sistema operativo más allá de lo habitual, lo que ha permitido en el pasado que algunos estafadores utilizaran este permiso para luego registrar a las víctimas en servicios de mensajes premium simplemente leyendo los códigos de confirmación de suscripción, como en el caso de La linterna molona.
Figura 4: El leer los SMS no trae alerta de "costes adicionales"
El último de los permisos que se necesita es el de INTERNET. Nada más sencillo que tener posibilidad de comunicarse hacia afuera y reportar a servidores controlados por los atacantes toda la información que se haya podido capturar desde el sistema operativo en que se encuentre instalada la app maliciosa.
¿Cuantas apps tienen estos permisos en Google Play?
Para saber qué cantidad de apps podrían - en el caso de que se volviesen maliciosas - hacer este trabajo que se ha contado aquí, basta con hacer un par de búsquedas en nuestro sistema Tacyt por estos permisos y sacar unas cuentas.
Figura 5: Apps en Google Play con permisos de GET_ACCOUNTS y READ_SMS
Con el permiso de RECEIVE_SMS hay más de 25.000 apps y con el permiso de READ_SMS hay alrededor de 14.000 apps en nuestra base de datos.
Figura 6: Apps en Google Play con permisos de GET_ACCOUNTS y RECEIVE_SMS
Por supuesto, esto es una cuenta grosso modo, que poco tiene refinado en sus cálculos, pero lo cierto es que todas ellas, podrían hacer la tarea que he descrito hasta aquí en el artículo. Al final, están ejecutándose en el sistema operativo con los permisos suficientes y solo la auditoría sobre ellas que se haga a la hora de publicarlas en los markets impediría que esto se pudiera hacer.
El caso de Telegram relacionado con WhatsApp
Ahora llega la parte en la que toca explicar qué pinta Telegram en este artículo dedicado al robo de una cuenta de WhatsApp, pero si has leído con atención ya sabrás la respuesta. Como ya he contado, WhatsApp quitó de el almacén de Accounts el registro del número de teléfono, algo que antes sí que estaba.
Figura 7: Acceso al número de teléfono asociado en las cuentas de Telegram
Es decir, que si una app maliciosa encuentra en un dispositivo Android una cuenta Telegram creada con un número de teléfono, lo más probable es que sea la cuenta de WhatsApp de ese dispositivo. Así que la app maliciosa ya sabe qué número de teléfono debe reportar al atacante.
La foto final
El esquema final es muy sencillo, las apps maliciosas de todo el mundo le reportan al atacante la información de todas la cuentas - usando el permiso de GET_ACCOUNTS - a las que tienen acceso. Puede que algunas sean correos electrónicos, otras cuentas Twitter, etcétera. Pero si están asociadas a un número de teléfono vía una cuenta Telegram, entonces ya sabe el atacante qué cuenta de WhatsApp debe robar.
Figura 8: Esquema de robo de SMS y cuenta con app maliciosa
El siguiente paso es sencillo, solicitar la recuperación de cuentas vía SMS pidiendo una nueva instalación en un nuevo dispositivo. Los servidores de WhatsApp enviarán el código de confirmación de instalación vía mensaje SMS al número de teléfono de la cuenta, y llegará al dispositivo.
Figura 9: Mensaje de confirmación de WhatsApp
La app maliciosa, con su permiso de monitorizar mensajes SMS, ya sea vía READ_SMS o RECEIVE_SMS, comprueba si el mensaje comienza por WhatsApp Code, y si es así envía ese código junto con el número de teléfono y el resto de las cuentas configuradas en el dispositivo a un servidor controlado por el atacante.
Reflexión final sobre la seguridad de WhatsApp y Telegram
Este artículo solo es, como se han dicho al inicio, una pequeña reflexión sobre cómo funcionan los permisos en los sistemas operativos Android. Estaría bien tener un mayor control - como pace que al final se acabará haciendo en el futuro - sobre los activos del terminal, pudiendo controlar en todo momento los accesos a las fotografías, a los SMS, a los contactos, al GPS, etcétera, desde el panel de control, y que el usuario pudiera quitar un permiso concedido a una app durante su instalación.
Sobre la seguridad de Telegram y WhatsApp, a pesar de que ya ha calado en la gente la idea de que WhatsApp es muy inseguro, lo cierto es que las mejoras en seguridad que se han hecho en los últimos tiempos lo ha puesto - en mi opinión - muy bien. El uso del cifrado end-to-end que aplicaron en los mensajes entre dos personas, el sistema de autenticación puesto en WhatsApp web, el no guardar en el servidor los mensajes enviados y recibidos, por lo que el robo de una cuenta no da acceso a conversaciones anteriores, y el cifrado con crypt8 en Android han mejorado mucho su seguridad, superando en algunas partes a Telegram.
Figura 10: Demostración de cómo grabar chats secretos en Telegram y Snapchat
La app de mensajería instantánea Telegram tiene muchos fans por el atributo de seguridad que ha querido potenciar desde el principio, pero a pesar de eso, tiene más o menos los mismos fallos de seguridad que aplicaciones como WhtasApp, tal y como os conté en el post dedicado a las debilidades de privacidad de Telegram. No obstante, hay una característica que desde que me la contaron me parecía una de esas cosas que dan falsa sensación de seguridad.
Figura 1: Cómo grabar fotos y vídeos con autodestrucción de Telegram y SnapChat sin dejar rastro
En este caso concreto me refiero a la posibilidad que se ofrece tanto en Telegram con en SnapChat de enviar fotos y vídeos con autodestrucción por medio de chat secretos con aviso de si alguien toma una captura de pantalla.
Cuando se abre un chat secreto en Telegram se utiliza un sistema de cifrado extremo a extremo, es decir, se genera un par de claves pública y privada para cifrar la conversación. Las personas Juan y Marta, cuando abren un chat secreto en Telegram, se pasan las claves públicas, de tal forma que cuando Marta le quiere enviar un mensaje secreto a Juan lo cifra con la clave pública de Juan, lo que hace que solo Juan - que tiene la clave privada - pueda descifrarlo. Así funciona de forma resumida el cifrado asimétrico, aunque si quieres más detalles te puedes leer un buen libro de criptografía.
Figura 3: Establecimiento de un chat secreto en Telegram
Los mensajes con autodestrucción de Telegram y Snapchat
Al estilo de los mensajes de Snapchat, del que hablaré un poco más abajo, si alguien que recibe una foto por un chat secreto de Telegram con un tiempo de vida de unos segundos decidiera hacerle una captura, en ese caso se le notificaría al emisor de la foto que el destinatario ha hecho una captura.
Figura 4: Aviso de que "Chema" ha hecho una captura de una foto con autodestrucción
Esto, entre muchas personas es una forma de que el emisor sienta una "falsa" sensación de seguridad y privacidad al pensar que la otra persona es de su confianza y la foto sólo la ha visto unos segundos. Por supuesto, en las relaciones de sexting entre adolescentes y no tan adolescentes, este tipo de sistemas es de lo más usado pero... la verdad es que no da ninguna garantía.
Figura 5: Capturas hechas en una conversación de SnapChat
Como se puede ver en la imagen de arriba, eso sucede igualmente en SnapChat, donde tanto si tu haces el captura como si la hace la otra persona - en cualquier momento - el historial de los mensajes muestra que se ha hecho esa captura.
Grabar las fotos con autodestrucción de Telegram y SnapChat sin dejar aviso
Entre los menos avezados tecnológicamente la solución más sencilla es hacerle una foto al móvil mientras que se ve la fotografía, pero para hacerlo más cómodo existen otras soluciones. Yo hice la prueba con Reflector para OS X, un software que permite duplicar la pantalla de tu iPhone en el equipo personal de trabajo, con toda la calidad que necesites.
Figura 6: Streaming de la pantalla de vídeo de un iPhone a OS X con Reflector
Este software cuesta unos pocos dólares y me habréis visto usarlo en muchas presentaciones. Para capturar una foto en OS X con Reflector solo necesitas duplicar la pantalla por AirPlay y listo, podrás capturar la pantalla desde tu sistema operativo utilizando todas las herramientas que necesites. Por supuesto, la resolución a la que verás la imagen será a la que se vea - en este caso - en la pantalla del iPhone, por lo que será tan grande como se vea en el propio Telegram - no más -.
Figura 7: Foto con autodestrucción en chat secreto de Telegram capturada en OS X
Este mismo truco, lo puedes utilizar en sistemas operativos Windows Phone y Android utilizando herramientas similares y, por supuesto, al emisor de la fotografía nunca le va a llegar ninguna alerta, así que puede seguir teniendo la "falsa" sensación de seguridad de que nadie ha copiado sus fotos.
Figura 8: Foto con autodestrucción de SnapChat capturada en OS X
Como se puede ver arriba, esto también vale para Snapchat, donde aunque haya autodestrucción la foto se puede capturar desde la pantalla del equipo sin que llegue ningún aviso al emisor.
Grabar los vídeos con autodestrucción de Telegram y Snapchat sin dejar aviso
Por supuesto, una vez que tienes que conectado un iPhone a un sistema operativo usando Reflector, tienes un canal de streaming que da más Frames Per Second que una película normal, así que se puede grabar vídeo de la misma forma.
Figura 9: Configuración de Reflector para streaming de vídeo
El truco para hacer esta captura de vídeo es tener una herramienta que permita grabar la pantalla para mostrar lo que allí se ve. Existen herramientas profesionales, pero tal y como se puede ver en la imagen siguiente, con un sencillo QuickTime Player para OS X se puede grabar una parte de la pantalla.
Figura 10: Grabar el vídeo que se reproduce en pantalla.
En el siguiente vídeo tenéis un ejemplo de grabación de un vídeo normal, de un vídeo enviado por Telegram y de un vídeo secreto enviado por SnapChat.
Figura 11: Demostración de cómo se pueden grabar vídeos con
QuickTime Player y Reflector de Telegram y SnapChat
En mi demo no me he preocupado por el audio, pero si quieres hacerlo aún más profesional, puedes usar un cable de audio que conecte la salida de tu smartphone a la entrada de tu equipo y grabar al mismo tiempo la pista de audio del vídeo para luego tener el montaje completo del vídeo.
Reflexión Final
La moraleja de todo esto es que una vez que el mensaje está enviado al destinatario, el dueño del endpoint podrá siempre manipular la aplicación o el entorno para poder llevarse las fotos o los vídeos que se envíen. De hecho, esto es por lo que existían las famosas aplicaciones que le permitían a una persona [¡dándole la cuenta de Snapchat a un servidor web!] grabar todas las fotos y que a la postre fueran todas públicas porque fue hackeado en el escándalo de The Snappening.
Figura 12: Información sobre "The Snappening" dada por SnapSaved.com
A día de hoy no tengo constancia de casos de sextorsión, Cyberbullying o grooming por medio de fotos con autodestrucción de Telegram o SnapChat, pero ten en cuenta que aunque la app no te diga que ha hecho una captura de pantalla o un screenshot, el destinatario ha podido grabar y conservar esa foto con total tranquilidad, así que más vale que te fíes muy mucho de la persona a la que le estás enviando esas fotos "Secretas".
Tras el monumental lío que se montó con The Celebgate, ahora el lío se ha montado con The Snappening, un nuevo escándalo que recoge todos los alicientes morbosos que tanto gustan al público. Sexting, hacking y filtraciones en Internet en el popular foro /b/ de 4Chan, cuna de tantos titulares en la red. En esta ocasión, el asunto es la filtración de 15 GB material y unas 200.000 imágenes enviadas entre cuentas de Snapchat, entre las que hay de todo tipo de material y de mucha gente que no sabe que está allí.
Figura 1: Captura de fotos filtradas en The Snappening
La gracia de Snapchat es que cuando se envía un mensaje con una imagen, esta tiene un tiempo de vida durante el cual es mostrado al usuario, lo que hizo que se convirtiera en la herramienta perfecta para enviar fotos de tetas, culos, y demás instrumentos utilizados en el juego del sexting. Es decir, sitio perfecto para atraer a los amantes del material amateur robado.
Figura 2: Las fotos se supone que tienen una duración y se eliminan
Con estos alicientes, Snapchat se convirtió en objetivo de Mark Zuckerberg y llegó hasta a ofrecer 2.000 millones de dólares para comprar dicha plataforma, pero la oferta fue declinada por considerarla insuficiente. Esto llevaría después a la compra de WhatsApp - plataforma que genera también mucho interés a los amigos del espionaje amateur - por parte de Facebook, pero esa es otra historia.
Claro está, no solo atrajo la atención de usuarios, morbosos e inversores, y los investigadores de seguridad también le dedicaron su tiempo. De hecho, hubo un robo masivo de identidades que acabó publicado en Internet. Hoy en día, las cuentas que se filtraron de Snapchat están en Have I been Pwned?, donde está en quinta posición de las filtraciones en la red más importantes.
Figura 3: La filtración de Snapchat dejó 4.6 milllones de identidades expuestas
Ahora la filtración es distinta, ya que no se ha atacado directamente a los servidores de Snapchat, sino a un servicio que usa la gente para conseguir guardar las fotos que le envían con tiempo de expiración. El servicio se llama Snapchat Saved [caído actualmente] y se conecta a los servidores de Snapchat, baja la foto que se ha recibido desde cualquiera de sus contactos y se guarda en sus propios servidores. Es decir, funciona como un cliente de Snapchat para las fotos.
Figura 4: La web de Snapsaved (ahora caída) avisa que es un servicio en beta
Por supuesto, el servicio está expuesto en Internet, por lo que las fotos que se reciben en las cuentas que se han dado de alta en ese servicio también pasan a estar en Internet, y un fallo de seguridad en él, que además informa que está en beta, ha permitido que todas las fotografías allí guardadas pasen a estar en manos de todo el mundo. A día de hoy en su página Facebook han puesto una nota reconociendo que les habían hackeado por un fallo en la configuración de su servidor Apache que da soporte al sitio web.
Figura 5: El post de Snapsaved reconociendo el hackeo por un bug en Apache
Lo peor es que el sitio pide las cuentas de Snapchat para funcionar, por lo que pueden que se hayan llevado también las identidades completas de todo el mundo, lo que haría que la cosa pudiera ir a mayores aún este escándalo. Y sobre todo, mucha gente no sabe ni que sus fotos están entre esas filtraciones, porque basta que esté dado de alta en ese servicio el destinatario de tus fotos, así que el que las envía no es consciente de eso.