Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

lunes, 16 de enero de 2017

El BUG de WhatsApp que permite que te espíen mensajes... y te roben las llamadas de WhatsApp Call


Tras ver todos los casos de espionaje publicados tras los documentos filtrados por Edward Snowden, no hace falta decir que la sensibilidad de todo el mundo con el tema de la privacidad es alta. Por eso, los sistemas de mensajería cifrada extremo a extremo (e2e encryption) aparecieron por muchos rincones de Internet. WhatsApp fue uno de los que añadió esta capacidad - a pesar de que en iPhone la base de datos permanece sin cifrar en el dispositivo - a sus sistemas de comunicación, haciendo uso del protocolo que implementa Signal, la herramienta de mensajería con e2e encryption diseñada por Moxie Marlinspike.

Ahora, la polémica ha venido cuando el investigador de seguridad Tobias Boelter ha publicado un bug en WhatsApp que, por motivos de usabilidad, permite a un atacante acceder a los mensajes que no han llegado aún a su destinatario por la forma en la que la implementación de WhatsApp permite hacer regeneración de claves de cifrado automáticamente para usuarios offline. Esto es fácil de entender, vamos a verlo paso a paso, y nada complicado de implementar para aquellos que quieran espiar WhatsApp.

El bug de reenvío de mensajes en WhatsApp

A día de hoy WhatsApp usa cifrado e2e, por lo que cada conversación entre dos personas va cifrada con las claves públicas del destinatario. Es decir, cada mensaje que se cifre con la clave pública del destinatario solo podrá descifrarse si se posee la clave privada asociada, que es generada por cada usuario en el dispositivo. Esto quiere decir que, cuando una persona instala y configura WhatsApp en su teléfono, automáticamente se genera un par de claves pública y privada nuevas. La pública será enviada a todos los contactos y la privada permanece en el dispositivo. 

Cualquier contacto puede verificar, vía WhatsApp, que las claves de cifrado públicas que se están utilizando en la conversación son las correctas tal y como se explica en este artículo [Verificar claves de cifrado de contactos de WhatsApp] y además, cada usuario podrá activar en las opciones de WhatsApp->Seguridad la posibilidad de recibir un mensaje cada vez que se cambien las claves. Esta opción hay que ponerla siempre, como parte de las recomendaciones que existen para Proteger WhatsApp a prueba de balas, pero como vamos a ver aquí, no es suficiente.





Ahora bien, ¿qué pasa si tú envías un mensaje a un terminal y este está apagado? Pues aquí viene el fallo en la implementación de WhatsApp. Supongamos el siguiente escenario. Yo soy un objetivo de un ataque porque soy un presidente de una empresa que está sufriendo un APT o un objetivo político de un gobierno que va a tomar un avión que le va a llevar de Madrid a Washington D.C. para una reunión. Mi teléfono va a estar en modo avión durante 7 u 8 horas, por lo que ningún mensaje que me envíen por WhatsApp me va a llegar.


Todos los mensajes que me envíen durante el tiempo que estoy en modo vuelo aparecerán en el terminal de los emisores con un solo tic, y en los servidores de WhatsApp cifrados con la clave pública de mi teléfono. Algo que por seguridad, podría haber verificado con todos mis contactos.





Ahora pongamos por un momento que los atacantes han conseguido una copia de la tarjeta SIM o han hecho un SIM Swapping, o si es el gobierno del país, ha solicitado un duplicado de la misma con una orden judicial. En ese momento la NSA - suponiendo que fuera ese gobierno USA y los tiempos de los que hablaban los documentos de Edward Snowden - podría registrar mientas el objetivo está volando, la cuenta de WhatsApp en un nuevo dispositivo. Ahí viene el fallo.


Pues bien, la característica implementada por Facebook hace que, automáticamente los servidores de WhatsApp recibirán una notificación de cambio de clave pública del destinatario de los mensajes y, para que la experiencia de usabilidad sea mejor, pide a todas las apps de WhatsApp de los emisores de los mensajes que cifren y envíen - automáticamente y sin capacidad de pararlo - otra vez todos los mensajes que aún no han sido entregados, pero cifrados con la nueva clave pública del destinatario.


Si el usuario ha activado la opción de recibir alertas de seguridad, entonces DESPUÉS de haber enviado los mensajes, el emisor recibirá una alerta que explica que se han cambiado las claves - probablemente por un cambio de dispositivo - y que puede verificarlas otra vez.





Esto es un bug que permite a un atacante interceptar mensajes de sus víctimas en ciertas circunstancias, pero la queja de los expertos en criptografía no es solo referida a este fallo - que WhatsApp puede cambiar simplemente pidiendo confirmación de que quiere enviar los mensajes al destinatario con la nueva clave ANTES de enviarlos, sino que al ser una app de código cerrado, es difícil verificar todo el proceso. 


No es el caso, pero una app de cifrado e2e en mensajería podría decir en su interfaz que está usando unas claves, y luego estar usando otras o, directamente, enviar el mismo mensaje varias veces y cada vez cifrado con una clave distinta. Por eso, muchas organizaciones activistas recomiendan no usar bajo ningún concepto software criptográfico que no sea OpenSource para que pueda ser revisado completamente el proceso.





Como se puede ver online, el periódico The Guardian recomienda directamente NO utilizar WhatsApp si te preocupa de verdad el cifrado e2e en los mensajes y dejar de usarlo, ya que esta forma de funcionar no garantiza que el mensaje que has enviado con una clave de cifrado vaya a ser el que se utilice al final para ello. No hay que olvidar que The Guardian fue el primer medio que publicó los documentos filtrados por Edward Snowden, y que Facebook aparecía como parte de los participantes del programa PRISM para espiar de forma automática perfiles en Internet.





En el vídeo de la demostración puede verse cómo funciona el proceso completo, y además es muy fácil de probar. Puedes además acceder a las diapositivas de Tobias Boelter que explica paso a paso el bug y al blogpost [WhatsApp Retransmission Vulnerability] que lo detalla.





Este comportamiento explica muchas de las preguntas que yo hacía en el caso de la desaparición de una joven en la que los cuerpos de seguridad del estado podrían haber accedido a los mensajes no recibidos de la chica desaparecida, y por lo tanto podrían llegar a conseguirse los logs de los envíos y reenvíos - direcciones IPs, ubicaciones, y horas  - de los terminales usados por las personas que enviaron los mensajes mientras el terminal estaba apagado.





Como nota final, hay que decir que Signal, la herramienta original de cifrado de mensajes e2e no tiene este bug en la implementación y avisa de esta circunstancia antes de que se envíe el mensaje al destinatario con las nuevas claves recibidas.




lunes, 9 de enero de 2017

Signal Private Messenger, la aplicación de mensajería mas segura del mundo.


En un post anterior explicamos la importancia de mantener la privacidad y seguridad en nuestras conversaciones, llamadas y todo lo que realizamos en la red a diario para mantenernos comunicados. Pues bien, en este post voy a dedicarme a hablar explicitamente de una aplicación, la cual por experiencia propia, por tiempo invertido en estudiar cada detalle y por comentarios de otros expertos en el tema. Tanto ha sido la calidad de esta aplicación que los gigantes como Facebook, en su aplicación Messenger, cuando usas los "chats privados" estás usando el protocolo de encriptación de Signal, aquí el post Google y su aplicación Allo han decidido hacer de este protocolo de encriptación el unico que use, aquí el post y de la misma manera sucedió con whatssap. Por estos motivos y otros más ha llegado al grandioso lugar de ser la aplicación de mensajería instantanea mas segura en el mundo: Signal Private Messenger.

Signal Private Messenger es una aplicación con soporte para mensajes, llamadas de voz, envío de notas de voz, GIFS usando GIPHY, Stickers, Imagenes, Videos, Contactos y ubicación, algo que la hace una aplicación completa y funcional en el 100%, pero eso es solo unas de sus cuantas cualidades, las cuales explicaremos a continuación, de mayor a menor importancia (decisión personal).

1) ¿Quienes son los creadores de Signal Private Messenger? Los creadores de esta valiosa aplicación son nada mas ni nada menos que el Team Open Whisper Systems, un equipo de ingenieros, criptografos, analistas en seguridad informatica, especialistas en temas como la censura, protocolos de conexión, analistas de redes y todo lo que te puedas imaginar dado que el Team mantiene la filosofía Open Source, es decir que todo su trabajo y codigo esta disponible para que cualquiera lo pueda estudiar. El mismo Edward Snowden lo usa y lo recomienda https://twitter.com/Snowden/status/778592275144314884. Si quieres conocer mas acerca de Open Whisper Systems, puedes visitar su pagina oficial https://whispersystems.org/ y su blog https://whispersystems.org/blog en el cual siempre publican artículos interesantes y todo lo relacionado con Signal.

2) ¿Por que es tan segura esta aplicación? Al ser una aplicación Open Source, es una aplicación que esta expuesta a los ojos de todos los profesionales y curiosos en el mundo, por lo tanto brinda una seguridad total, ya que diariamente esta siendo evaluada y se estan buscando posibles puntos vulnerables, los cuales son corregidos inmediatamente por el equipo de desarrollo, Signal es la primera aplicación es usar un sistema de criptografía de codigo abierto y hasta el momento su sistema de encriptación no ha tenido fallos. Pero no solo los mensajes de texto son encriptados, tambien las llamadas de voz, para las cuales la aplicacion crea un handshake único entre el emisor-receptor para cada llamada, por lo tanto es imposible interceptar alguna de esas llamadas. Las conversaciones grupales tambien son cifradas end-to-end.

3) Protección contra la censura en paises como China, Oman, Cuba, Egipto y UAE: En los paises mencionados anteriormente el gobierno quiere mantener "controlado" absolutamente todo lo que pase, para ello usa diferentes metodos con los cuales reducir las posibilidades de que sus habitantes utilizen metodos de comunicación que ellos no pueden vigilar como Signal, entre los cuales está pagarles a los principales ISP's (proveedores de internet) para que bloqueen el trafico hacia ciertos destinos (Ej. Routers ONION). Signal usa una tecnica llamada Domain Fronting, esta tecnica lo que hace es lo siguiente, que si un usuario que usa Signal envía un mensaje, la petición que realiza la aplicacion no la hace directamente a travez de sus dominios Whisper Systems, sino que usa otros dominios como Google, Amazon Cloudfront, Amazon S3, Azure, CloudFlare, Fastly y Akamai para desde ahí acceder a los servidores de Whisper Systems y realizar los envíos de mensajes normalmente, así para el ISP, cada vez que un usuario envía un mensaje es como si hiciera una petición HTTPS normal hacia google.com, y si desea bloquearla deberia de bloquear todos los servicios, algo que ningún país hará.

4) Tiempo limite de mensajes: A pesar de que los servidores no guardan ninguna de nuestra informacion, mensajes, numero o demas, puedes establecer el tiempo limite de duración de tus mensajes, el minimo tiempo es 5 segundos y el maximo 1 semana. El tiempo empieza a contar desde que la otra persona lee el mensaje.

5) Bloqueo integrado de capturas de pantalla y protección de la aplicación con contraseña: Signal a diferencia de otras aplicaciones, tambien toma en cuenta detalles como los mecionados anteriormente, por defecto signal bloquea todas las capturas de pantalla que quieras tomarle a una conversación o a la aplicación, así como tambien te da la opcion de proteger la aplicación con contraseña, la cual puedes elegir que se bloquee entre cierto tiempo sin necesidad de aplicaciones de terceros.

6) Signal es multiplataforma: Signal tiene clientes especificos para Android e IPhone, Linux, Windows y Macintosh, pueden ser encontrados aquí https://www.signal.org/download/

Luego de abierta solo deberas escanear con tu movíl el codigo QR que te mostrara la aplicacion y así quedará enlazada la aplicación de tu celular con la de escritorio.



7) Reemplazo de la tradicional aplicacion "Mensajes": Signal no solo sirve para comunicarse entre usuarios Signal, tambien puede ser usada para enviar y recibir mensajes de texto NO CIFRADOS como los que se envían normalmente usando nuestro proveedor de telefonía, algo que le da un plus para tener todo en una misma aplicacion bloqueada con contraseña por ejemplo.

8) Enviar GIFS y stikers usando GIPHYhttps://giphy.com/ es una base de datos GIF, allí puedes encontrar cualquier tipo de GIF, subir, bajar y compartir GIFS sin necesidad de salir de la aplicación o descargarlos.

9) Posibilidad de editar tus imagenes: Signal tambien te da la opcion de añadir texto, cambiar el color, filtros, añadir stikers y mucho mas a tus imagenes dentro de la aplicación. 



10) Personaliza tu Signal: Te permite cambiar el tema entre claro y oscuro, el tipo de fuente, como se muestran notificaciones y más.

11) Soporte para enviar cualquier tipo de archivos de cualquier tamaño: Signal te permite compartir cualquier tipo de archivo, sin importar lo que sea o su tamaño a una velocidad de subida y bajada sin límites.

Aún conociendo todos los beneficios de esta aplicación, ¿Te atreverías a no probarla?. Nosotros el equipo de Security Hack Labs te recomendamos que la uses para todo tipo de comunicación.

Dejanos tus comentarios y opiniones.