WhatsApp ha superado los 250 millones de usuarios activos mensualmente de su aplicación de mensajería instantánea. Con el escándalo de PRISM empezamos a plantearnos si no son sólo Microsoft, Google, Apple o Facebook quienes están colaborando con gobiernos para espiar los comportamientos de sus ciudadanos.
¿Será WhatsApp una de estas empresas? ¿Almacenará o interceptará las conversaciones de sus usuarios? Noticias como la amenaza por parte de Arabia Saudí de declararla ilegal si no se establecía un servidor en ese país, no nos tranquilizan y nos hacen pensar que los usuarios se encuentran indefensos y no existen medidas actuales que garanticen la privacidad de los contenidos compartidos sobre estas plataformas.
El principal objetivo de esta investigación es añadir una nueva capa de seguridad y privacidad que garantice que en el intercambio de información entre los integrantes de una conversación tanto la integridad como la confidencialidad no puedan verse afectados por un atacante externo.
Hemos definido una serie de pruebas de concepto sobre una jerarquía de niveles de seguridad:
• El primer nivel de seguridad implica el cifrado, mediante clave privada, de los mensajes y los datos intercambiados entre dos usuarios.
• En un segundo nivel, se dota de cierto nivel de anonimato a la conversación, mediante la utilización de otras cuentas (otros números de teléfono falsos en la medida de lo posible pertenecientes a otros países) y proxys / nodos intermedios de forma que las comunicaciones no se envíen de forma directa entre emisor y receptor.
• Por último, se establece un tercer nivel al modificar el funcionamiento interno de la aplicación, modificando a nivel interno los servidores de intercambio de mensajes y enviándolas a un server XMPP propio que garantice la privacidad de las comunicaciones. Con esto el usuario dispondrá de una plataforma WhatsApp propia para su uso.
Esta técnica ha sido desarrollada para poder ser utilizada de forma completamente transparente para el usuario. Para ello es necesario disponer de un teléfono rooteado, o en caso de otras plataformas como iPhone, se ha desarrollado una plataforma basada en Raspberry que actuará como punto de acceso automatizado o el uso de una VPN.
Esperamos que os guste a todos!
2. Defeating WhatsApp’s Lack of Privacy
¿
QUIENES
SOMOS
?
Jaime Sánchez
- Security Researcher
- Executive MBA, CISSP, CISA y CISM
- Ponente en Rootedcon, Nuit du Hack, BH
Arsenal, Defcon, DeepSec, BH Sao Paulo etc.
- Twitter: @segofensiva
- http://www.seguridadofensiva.com
Pablo San Emeterio
- Ingeniero Informático / I+D Optenet
- Master de Seguridad y Auditoría por la UPM,
CISA y CISM
- Ponente en Rootedcon, NoConName y CiberSeg
- Digamos que le gusta el WhatsApp :)
- Twitter: @psaneme
NoConName 2013
4. Defeating WhatsApp’s Lack of Privacy
WHATSAPP
- WhatsApp es una aplicación de mensajería
multiplataforma que permite enviar y recibir
mensajes a través Internet de manera gratuita.
- Ha sustituido a los servicios tradicionales de mensajes
cortos o sistema de mensajería multimedia.
- Disponible para los sistemas operativos iOS, Android,
Windows Phone, BlackBerry OS y Symbian.
- No existen versiones para Windows, Mac,
Linux. Sin embargo existen emuladores para Android
permiten el uso de WhatsApp en Windows, Mac o un
Navegador web e implementaciones abiertas en python
(Yowsup) y php (WhatsAPI).
- Se sincroniza automáticamente con la agenda.
NoConName 2013
6. Defeating WhatsApp’s Lack of Privacy
DATOS
Y
ESTADÍSTICAS
Más usuarios que Twitter ...
NoConName 2013
7. Defeating WhatsApp’s Lack of Privacy
HISTORIAL
DE
ERRORES
SEGURIDAD
- Mensajes en claro (WhatsApp Sniffer)
- Password MD5 basado en IMEI o MAC del teléfono utilizado (espía y
suplantación de usuarios)
- Almacenamiento de cualquier contenido en sus servidores (virus, html etc.) :)
- Vulnerabilidad crítica que permitía tomar el control de cualquier cuenta, leer
mensajes de otro usuario o enviarlo en su nombre
- Almacenamiento en claro de la base de datos
- WhatsApp Status: permitía cambiar el estado de cualquier usuario del que se
conociera el número de teléfono
NoConName 2013
8. Defeating WhatsApp’s Lack of Privacy
HISTORIAL
DE
ERRORES
SEGURIDAD
- El 13 de Enero de 2012 la aplicación fue retirada 4 días de la App Store
- Aparición de Priyanka para Android
- WhatsApp Voyeur: Obtener datos del perfil de un usuario, sin necesidad de usar
tu teléfono móvil
- No se necesita autorización para enviar mensajes, por lo que cualquier usuario/
bot puede enviarte spam.
- Problemas actuales con el cifrado RC4
- etc.
NoConName 2013
9. Defeating WhatsApp’s Lack of Privacy
PROHIBICIONES
Ara bia Sa udí ha a menazado con
prohibir aplicaciones como Skype,
WhatsApp o Viber si no alcanza un acuerdo
con las compañías propietarias para poder
controlar esas tecnologías de comunicación,
informó hoy el diario saudí Al Hayat.
La Comisión saudí de Comunicaciones, responsable
de la organización de las telecomunicaciones y
tecnologías informáticas en el país, ha pedido a las
compañías de comunicación que se pongan en
contacto con los propietarios de esas aplicaciones y
estudien la posibilidad de aplicar la ley
local de seguridad.
NoConName 2013
10. Defeating WhatsApp’s Lack of Privacy
PROHIBICIONES
El gobierno de la provincia de Sind en Pakistán ha
develado su plan de un bloqueo de tres meses
sobre aplicaciones de mensajería como
Viber, WhatsApp, Tango, Skype y otras
aplicaciones de llamadas y mensajería basadas en Voice
Over Internet Protocol en lo que los funcionarios
llaman una “interrupción de las actividades terroristas y
criminales en la provincia, especialmente en las áreas
urbanas”.
El ministro de información de Sind, Sharjeel Memon,
compartió esta noticia en una rueda de prensa [en] el
jueves 4 de octubre de 2013 en la ciudad portuaria
sureña de Karachi. El gobierno de Sind está
esperando aprobación del gobierno federal
en Islamabad.
NoConName 2013
11. Defeating WhatsApp’s Lack of Privacy
ESPIONAJE
- Los informes y documentos filtrados por Edward
Snowden en junio de 2013 indican que PRISM se
emplea como un medio para la vigilancia a
fondo de las comunicaciones y otras informaciones
almacenadas
- Los datos que supuestamente la NSA es capaz de
obtener gracias a PRISM incluyen correos electrónicos,
vídeos, chat de voz, fotos, direcciones IP, notificaciones de
inicio de sesión, transferencia de archivos y detalles sobre
perfiles en redes sociales
- Empresas de Internet como Microsoft, Google,
Yahoo, Dropbox, Apple y Facebook se han
visto implicadas.
- Los objetivos son aquellos ciudadanos que vivan fuera
de Estados Unidos, aunque también se incluyen a los
ciudadanos estadounidenses
NoConName 2013
12. Defeating WhatsApp’s Lack of Privacy
¿Será WhatsApp una de estas empresas?
La Agencia Nacional de Seguridad estadounidense (NSA) espió
60 millones y medio de llamadas en España tan sólo
entre el mes de diciembre de 2012 y principios de enero de
este año.
El pinchazo incluiría tanto llamadas telefónicas
como comunicaciones en internet: correos
electrónicos, mensajes en redes sociales, etc
NoConName 2013
14. Defeating WhatsApp’s Lack of Privacy
OBJETIVOS
- El principal objetivo de esta investigación es añadir una nueva capa de seguridad y
privacidad que garantice que en el intercambio de información entre los integrantes de
una conversación tanto la integridad como la confidencialidad no puedan verse
afectados por un atacante externo.
- Se han definido diferentes pruebas de concepto sobre una jerarquía de niveles de
seguridad:
* El primer nivel de seguridad implica el cifrado, mediante clave privada, de los
mensajes y los datos intercambiados entre dos usuarios.
* En un segundo nivel, se dota de cierto nivel de anonimato a la conversación,
mediante la utilización de otras cuentas y proxys / nodos intermedios.
* Por último, se establece un tercer nivel al modificar el funcionamiento
interno de la aplicación, utilizando los servidores de la aplicación como apoya para
engañar a la aplicación y poder usar un servidor externo que queramos que
gestione nuestros mensajes.
NoConName 2013
15. Defeating WhatsApp’s Lack of Privacy
OBJETIVOS
- Esta técnica ha sido desarrollada para poder ser utilizada de forma
completamente transparente para el usuario.
- Para ello es necesario disponer de un teléfono rooteado, o en caso de otras
plataformas se ha desarrollado una plataforma basada en Raspberry que actuará
como punto de acceso automatizado o se puede utilizar la una VPN.
NoConName 2013
17. Defeating WhatsApp’s Lack of Privacy
FUNXMPP
- WhatsApp utiliza una versión propia/modificada de XMPP (RFC 6120 y RFC 6121)
llamada FunXMPP.
- Sin entrar en más detalles técnicos, es un protocolo de mensajería que utiliza como
sintaxis el lenguaje XML:
<message from=”01234567890@s.whatsapp.net”
id=”1339831077-7”
type=”chat”
timestamp=”1339848755”>
<notify xmlns=”urn:xmpp:whatsapp”
name=”NcN” />
<request xmlns=”urn:xmpp:receipts” />
<body>Hello</body>
</message>
- Al ser una aplicación para móviles, la gente de WhatsApp ha intentado reducir el
tamaño de los mensajes y la carga del protocolo a lo mínimo.
- ¿Cómo lo han hecho?
NoConName 2013
18. Defeating WhatsApp’s Lack of Privacy
FORMATO
Y
CONVERSIONES
- Todas las palabras reservadas utilizadas, han sido sustituídas por un byte, logrando
reducir considerablemente la carga.
- FunXMPP utilizada una tabla de conversión para prácticamente todas las palabras
reservadas.
- Basándonos en esto, utilizando bytes con el formato xnn (nn representa un
número hexadecimal), el ejemplo anterior quedaría:
<x5d x38=”01234567890@x8a”
x43=”1339831077-7”
xa2=”x1b”
x9d=”1339848755”>
<x65 xbd=”xae”
x61=”NcN” />
<x83 xbd=”xad” />
<x16>Hello</x16>
</x5d>
- Como podemos ver, las variables no pueden ser sustituídas por representaciones
tipo byte al no ser palabras fijas/reservadas.
NoConName 2013
19. Defeating WhatsApp’s Lack of Privacy
BYTES
- Byte xfc: sequencia de caracteres ASCII que será utilizada como valor. La longitud
de la cadena se encuentra en el siguiente byte (longitud máxima de 255).
- Byte xfd: sequencia de caracteres ASCII, con la diferencia de que la longitud viene
expresada en los siguientes tres bytes (longitud máxima de 16777215).
- Byte xf8 y xf9: representación de tipo especial ‘lista’. El número de elementos se
encuentra a continuación.
Los objetos se cuentan de la siguiente forma:
1 2 3
<message from=”01234567890@s.whatsapp.net”
4 5
id=”1339831077-7”
6 7
type=”chat”
8 9
timestamp=”1339848755”>
<notify xmlns=”urn:xmpp:whatsapp” |
name=”NcN” /> | 10
<request xmlns=”urn:xmpp:receipts” /> |
<body>Hello</body> |
</message>
NoConName 2013
21. Defeating WhatsApp’s Lack of Privacy
AUTENTICACIÓN
Y
CIFRADO
- El acceso de un nuevo dipositivo se produce de la siguiente manera:
1) El teléfono envía su número via HTTPS a una URL solicitando un código
2) El teléfono recibe el código vía SMS
3) El código es utilizado, de nuevo sobre HTTPS, para obtener el password
- Para acceder al sistema, el teléfono enviará:
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" user="XXXXXXXXXXXX"
mechanism="WAUTH-1" />
- El servidor responderá con un desafío:
<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">YYYYYYYYYYYYYYYYYYYY
</challenge>
- El cliente, para responder al desafío, generará una clave usando PKBDF2 (16
iteraciones) con el password, el desafío recibido como salt, y utilizará SHA1 como
función hash. Se utilizarán los 20 primeros bytes generados del tipo <numero teléfono>
|| <20 bytes de respuesta> || UNIX timestamp:
<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">ZZZZZZZZZZZZZ</response>
- A partir de este momento, los mensajes van cifrados.
NoConName 2013
22. Defeating WhatsApp’s Lack of Privacy
De los creadores de:
- Nunca corras con unas tijeras en la mano
- Nunca corras cerca de una piscina
- Nunca corras cerca de una piscina con unas tijeras en la
mano
Llega:
NUNCA utilices el mismo keystream
de RC4 para cifrar dos mensajes
diferentes ...
NoConName 2013
23. Defeating WhatsApp’s Lack of Privacy
ARE
MY
MESSAGES
SECURE
?
- El algoritmo de cifrado utilizado por WhatsApp es RC4, diseñado por Ron Rivest
de la RSA Security en 1987, utilizando la misma clave de cifrado en ambos sentidos.
- Es el Stream Cipher más utilizado y fue excluído de los estandares de alta
seguridad. Consiste en 2 algoritmos: Key Scheduling Algorithm (KSA) y PseudoRandom Generation Algorithm (PRGA).
¿ Y dónde dices que está el problema ?
NoConName 2013
24. Defeating WhatsApp’s Lack of Privacy
CADA
VEZ
QUE
ALICE
CIFRA
UN
MENSAJE ,
DIOS
MATA
UN
GATITO
...
Alice quiere enviar los mensajes cifrados de m1 y m2 a Bob sobre
un canal público e inseguro. Alice y Bob comparten la clave k.
Dado que Alice es extremadamente vaga (y no tiene
conocimientos de stream ciphers), decide utilizar la misma clave
para cifrar los dos mensajes.
Alicía envía a Bob los mensajes cifrados c1 = m1 ⊕ k y c2 =
m2 ⊕ k a Bob por el canal inseguro, y Eve intercepta estos
mensajes y calcula c1 ⊕ c2 = m1 ⊕ m2
c1 = m1 ⊕ k
c2 = m2 ⊕ k
m1 = c1 ⊕ k
m2 = c2 ⊕ k
REUSED KEY ATTACK
c1 ⊕ c2 = m1 ⊕ m2
NoConName 2013
25. Defeating WhatsApp’s Lack of Privacy
ATACANDO
EL
CIFRADO
EN
WHATSAPP
- Tenemos m1 ⊕ m2 (por la propiedad conmutativa hemos eliminado k de la
ecuación).
- Utilizando Crib-Dragging:
1) Deduciremos una palabra que aparezca en los mensajes
2) Codificamos esta palabra a hexadecimal
3) Haremos el XOR de ambos mensajes cifrados
4) Realizamos un XOR de la palabra en hexadecimal(paso 2) en cada posición del
resultado del XOR de ambos textos cifrados(paso 3)
5) Cuando consideremos que el resultado anterior es texto legible,
consideramos la palabra válida y aumentamos nuestra búsqueda
6) Si el resultado no es texto legible, probamos con la siguiente posición.
- Es importante hacer un análisis en base al idioma
original de los mensajes en claro.
- Gracias a un análisis de frecuencias, utilizaremos las
palabras más frecuentes para realizar nuestro ataque.
NoConName 2013
27. Defeating WhatsApp’s Lack of Privacy
"WhatsApp takes security seriously and is continually thinking of
ways to improve our product. While we appreciate feedback, we're
concerned that the blogger's story describes a scenario that is more
theoretical in nature. Also stating that all conversations should be
considered compromised is inaccurate" the company said.
Respuesta oficial a https://blog.thijsalkema.de/blog/2013/10/08/piercing-through-whatsapp-s-encryption/
WTF!
NoConName 2013
33. Defeating WhatsApp’s Lack of Privacy
FUNCIONAMIENTO
- Hemos comprobado que el cifrado utilizado
para salvaguardar la información y la privacidad de
nuestras conversaciones es fácil de romper.
- ¿ Qué podemos hacer ? Interceptaremos el
mensaje de WhatsApp antes de que salga.
Descifraremos el mensaje original con nuestra
clave y le aplicaremos un algoritmo de cifrado, y
después volveremos a cifrarlo con el algoritmo y
clave original para no romper la aplicación.
- Nuestro esquema de funcionamiento de ahora
en adelante será:
MODIFICACIÓN
EN TIEMPO REAL
NoConName 2013
34. Defeating WhatsApp’s Lack of Privacy
MENSAJE
ENVIADO
- El mensaje “Ola. Q ase” se envía desde el cliente. Nuestro programa detecta el envío de un
texto en claro, y utilizando la clave de sesión de RC4 usada por WhatsApp, descifra el mensaje y
extrae el texto. Una vez el texto está en claro, lo cifra con nuestro algoritmo y clave, y vuelve a
encapsularlo en el formato original cifrandolo de nuevo con RC4 para no romper el
funcionamiento de WhatsApp:
HMAC
to
to
- Eliminamos HMAC en el decodificado y volvemos a calcularlo para el envío. Finalmente, el
mensaje que abandonará nuestro teléfono móvil. Podemos ver como el nuevo mensaje es
diferente al original al llevar una nueva capa de cifrado implementada por nosotros:
HMAC
NoConName 2013
35. Defeating WhatsApp’s Lack of Privacy
MENSAJE
RECIBIDO
- El proceso de recepción se realiza de forma inversa al de envío.
- En la captura podemos observar como recibimos un mensaje, aparentemente normal, de
WhatsApp, con la diferencia de que al descifrarlo con la clave RC4, el texto que nos encontramos
es completamente ilegible.:
HMAC
- Utilizando la misma clave privada y algoritmo, nuestro programa se encargará de descifrar el
mensaje de texto y volver a componer el mensaje original con el cifrado RC4 para que nuestro
WhatsApp sea capaz de procesarlo.
- El mensaje final podemos ver que es ‘completamente’ legible “aqi cifrandi msnjes”.
HMAC
NoConName 2013
38. Defeating WhatsApp’s Lack of Privacy
OCULTANDO
NUESTROS
MENSAJES
- El anterior método nos permitirá cifrar nuestros
mensajes para que otros atacantes capaces de interceptar
nuestro tráfico no sean capaces de adivinar el contenido
de los mensajes.
- Pero, ¿ y si queremos que el tráfico
directamente no pase por los servidores de
WhatsApp ?.
SERVIDOR DE
MENSAJERÍA XMPP
NoConName 2013
39. Defeating WhatsApp’s Lack of Privacy
ENRUTANDO
LOS
MENSAJES
- Se analiza el mensaje “Ola q ase Whatsapeas o q ase” y se procede a decifrar el mensaje
enviado por el cliente de WhatsApp.
- Se extrae el mensaje en texto claro y se empaqueta para enviar al servidor XMPP:
<destinatario>¿<message_id>¿<mensaje_a_enviar>
HMAC
to
- Inmediatamente se procede a enviar sustituir el texo original del mensje por el caracter de
relleno que hayamos decidido utilizar.
- De esta forma conseguimos que a través de los servidores de mensajería de WhatsApp sólo
pasen caracteres de relleno y nunca el texto original.
- Este paso es necesario para poder recibir correctamente el mensaje en el WhatsApp de destino.
NoConName 2013
40. Defeating WhatsApp’s Lack of Privacy
EL
SERVIDOR
XMPP
- Los mensajes llegan al servidor XMPP:
- Por si queda alguna duda, los mensajes recompuestos corresponden a los enviados desde
nuestro móvil:
- Finalmente en el destinatario se recibirá el mensaje de los servidores de WhatsApp con los
caracteres de relleno.
- Automáticamente procederá a bloquear el mensaje y consultará al servidor XMPP si existe algún
mensaje con el correspondiente <message_id>, para proceder a reensamblarlo y hacerselo
llegar al cliente.
NoConName 2013