La vigilancia ha emergido como un fenómeno global desde finales de 1940, Internet y la tecnología móvil han sido desarrolladas en un clima de paz que hace imposible garantizar la privacidad y nadie debe esperarla, aunque los usuarios suelen pensar que existe por defecto. Esto nos hace preguntarnos, ¿Cuan fuerte es la seguridad de las actuales plataformas de mensajería instantánea? ¿Se preocupan de nuestra privacidad y seguridad? Hablaremos de la seguridad en plataformas de mensajería móvil y nos centraremos en WhatsApp.
WhatsApp no es tan conocido como Facebook o Twitter, pero recientemente ha anunciado que ha sobrepasado los 350 millones de usuarios activos al mes. La historia de WhatsApp esta llena de errores de seguridad, desde mandar los mensajes en claro, pasando por utilizar usuarios y passwords fácilmente adivinables e imposibles de modificar, hasta permitir el almacenamiento de todo tipo de ficheros de manera anónima en sus servidores, entre otras muchas.
Esto nos ha llevado a profundizar en la investigación de WhatsApp, descubriendo nuevas vulnerabilidades (que afectan tanto al cliente como al protocolo de mensajería) y creando un sistema que securice las conversaciones mediante varias capas de seguridad.
Además, dado que las manifestaciones realizadas por correo electrónico, WhatsApp y demás, son medios de reproducción de la palabra, la imagen y el sonido, éstos podrían ser medios de prueba válidos en derecho y, por tanto, con eficacia probatoria para sustentar o no una demanda judicial. Estos medios de prueba han sido claves en procesos judiciales, tanto en territorio nacional como internacional, y demostraremos que, ya que WhatsApp no almacena las conversaciones en sus servidores, es posible su alteración a voluntad del atacante, de forma indetectable para las actuales técnicas de análisis forense.
El uso de las tic en la vida ,lo importante que son
Whatsapp: mentiras y cintas de video RootedCON 2014
1. WhatsApp: mentiras y
cintas de vídeo
Jaime Sánchez (@segofensiva)
Pablo San Emeterio (@psaneme)
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
2. JAIME SÁNCHEZ
- Ingenierio Informático & Security Researcher
- Executive MBA, CISSP, CISA y CISM
- Ponente en Rootedcon, Nuit du Hack, BH Arsenal,
Defcon, Derbycon, NoConName, DeepSec, BH Sao
Paulo, Shmoocon etc.
- Twitter: @segofensiva
- http://www.seguridadofensiva.com
!
PABLO SAN EMETERIO
- Ingeniero Informático
- Trabaja en el departamento I+D de Optenet
- Master de Seguridad y Auditoría por la UPM,
CISA y CISM
- Ponente en Rootedcon, NoConName, Shmoocon,
CiberSeg
- Experiencia anterior investigando en WhatsApp
- Twitter: @psaneme
!2
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
3. ¿
POR
QUE
TANTA
MENSAJERÍA
INSTANTÁNEA
?
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!3
5. - Hoy en día existen muchas aplicaciones conocidas:
- Pero, ¿son sus comunicaciones seguras?. Algunos de los
problemas de seguridad más comunes de estos sistemas son:
- Robo de Indentidad
- Acoso
- Falta de cifrado
- SPAM
- Almacenamiento remoto de malware
- Ataques de Denegación de Servicio
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!5
7. ¿
QUÉ
ES
SNAPCHAT
?
- Snapchat es una aplicación para móviles,
que puedes descargar en tu iPhone o Android,
para ¿chatear? con amigos a través de fotos y
vídeos (con la posibilidad de usar etiquetas).
!
- Vamos, como un WhatsApp (que ya sabéis
que nos gusta) en el que no se puede enviar
texto, sólo ficheros multimedia.
!
- Una de las cosas más importantes de
Snapchat es que la características de autodestr ucción de las fotos, una vez el
destinatario las ha visto.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!7
9. ALGUNAS
LECCIONES
DE
SEGURIDAD
- Crees que es seguro enviar esas fotos
embarazosas a través de Snapchat? PIÉNSALO
DE NUEVO.
!
- SnapHack: una aplicación que permite reabrir y
guardar mensajes de Snapchat, sin que el remitente
sepa que se han almacenado
- Dump de 4.16 millones de usuarios y
números de telefóno de usuarios de
Snapchat publicados en el sitio web
snapchatdb.info, después del public
disclosure del funcionamiento de la API.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!9
10. ENVIANDO
SNAPS
- Utilizaremos /ph/retry en favor de /ph/upload + /ph/send:
teamsnapchat
Qué cuenta??
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!10
12. - Parece que los parámetros req_token & username no fueron
importantes para Snapchat hasta la noche de reyes de 2014..
!
- Nosotros nos dimos cuenta 3 días después y preguntamos :(
!
!
!
!
!
- Actualmente, no es posible realizar la suplantación de esta forma.
¿ALGUNA OTRA GRAN IDEA?
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!12
13. - "We want to apologize for any unwanted Snaps and let you
know our team is working on resolving the issue”, dijo Snapchat en
un post en su blog.
!
- Pero es aún posible enviar mensajes de spam a los 4.6 millones de
usuarios de la base de datos publicada.
!
- ¿ Cuanto tiempo es válido el parámetro req_token ?
Capturar y repetir las peticiones http
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
Construímos nuestro script para enviar imágenes
!13
19. - Viber, lanzada inicialmente para iPhone en 2010, compite en forma directa con
WhatsApp, Line y WeChat, entre otras aplicaciones de mensajería, además de Skype.
!
- Cuenta con 280 millones de usuarios a nivel global, con presencia en más de 200
países y disponibilidad en más de treinta idiomas.
!
- Fue comprada por Rakuten Inc. (una empresa especializada en ventas online )por 900
millones de dólares.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!19
24. ¿
QUÉ
ES
WHATSAPP
?
- WhatsApp es una aplicación de
mensajería multiplatafor ma que
permite enviar y recibir mensajes a
través Internet de manera gratuita.
!
- Ha sustituido a los ser vicios
tradicionales de mensajes cortos o
sistema de mensajería multimedia.
!
- No existen versiones para
Windows, Mac, Linux.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!24
26. …
Y
ALGUNAS
COSAS
NO
CAMBIAN
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!26
27. ENTENDIENDO
EL
MOVIMIENTO
- Porque lo social en el móvil no es lo social en el PC
- Si no puedes con el enemigo, compralo!
- Facebook pierde usuarios en los grandes mercados a un ritmo alarmante
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!27
29. - Problemas de cifrado:
- Primero porque no había
- Clave de sesión basada en
IMEI / MAC del teléfono
!
- Almacenamiento de
contenido en sus servidores
- 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
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!29
30. StealGenie: Spy and Dump Instant Messengers data
Android Game Steals WhatsApp Conversations
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
E-Mail with fake WhatsApp notification
Fake Spy App on Smartphones
!30
31. ¿
CÓMO
FUNCIONA
WHATSAPP
?
- 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.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!31
32. - 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.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!32
33. - 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>
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!33
35. - El acceso de un nuevo dipositivo se produce de la siguiente manera:
CANAL HTTPS
RECEPCIÓN CLAVE
INTERCAMBIO CLAVE
- 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:xmppsasl">ZZZZZZZZZZZZZ</response>
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!35
36. - 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 Pseudo-Random Generation Algorithm (PRGA).
¿ Y dónde dices que está el problema ?
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!36
37. 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
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
38. MORE
THEORICAL
IN
NATURE
...
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!38
40. LO
QUE
DE
VERDAD
OS
IMPORTA
…
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!40
41. WAUTH-‐2
vs
WAUTH-‐1
- En cada sesión de WhatsApp hay 4 claves:
- Cifrado RC4: cliente -> servidor
- Cifrado RC4: servidor -> cliente
- HMAC mensajes de cliente
- HMAC mensajes de servidor
WAUTH 1
WAUTH 2
1. Las 4 claves son iguales (problemas de cifrado
RC4)
!
!
2. Cálculo de HMAC utilizando todos los bytes de
los mensajes
!
3. ¿Cómo genera las claves?
password + challenge (PKBDF2 16 vueltas)
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
1. Las 4 claves son diferentes
2. Cálculo de HMAC se hace utilizando los bytes
de los mensajes concatenandoles el numero de
mensaje por el que vamos ( por ejemplo 00 00 00
03 si es el tercer mensaje que envío )
!
3.¿Cómo genera las claves?
password + challenge+0x01 (PKBDF2 2 vueltas)
password + challenge+0x02 (PKBDF2 2 vueltas)
…
!41
43. - 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
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!43
45. MALICIOUS THREATS, VULNERABILITIES AND DEFENSES IN WHATSAPP AND MOBILE I.M. PLATFORMS
ATTACKING
WHATSAPP’S
ENCRYPTION
- From here, the task becomes separating the two plaintexts from one another
(plaintext attack or Crib-Dragging), following the steps bellow:
1) Guess a word that might appear in one of the messages
2) Encode the word from step 1 to a hex string
3) XOR the two cipher-text messages
4) XOR the hex string from step 2 at each position of the XOR of the two
cipher-texts (from step 3)
5) When the result from step 4 is readable text, we guess the English word and
expand our crib search.
6) If the result is not readable text, we try an XOR of the crib word at the next
position.
!
CIFRADO
ADICIONAL
- To do this, we have to do a little guessing about the
plaintexts themselves.
!
- The idea is to use a Frecuency Analysis based on
the original language used in the plaintext.
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
SHMOOCON 2014
46. CIFRADO
ADICIONAL
- 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
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!46
48. MALICIOUS THREATS, VULNERABILITIES AND DEFENSES IN WHATSAPP AND MOBILE I.M. PLATFORMS
SERVIDOR
EXTERNO
XMPP
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
SHMOOCON 2014
49. SERVIDOR
PROPIO
DE
XMPP
- 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
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March
!49
52. ANONIMIZADOR
DE
CONVERSACIONES
- Ocultaremos los identificadores que permiten localizar y rastrear nuestra cuenta.
!
- La técnica se basa en diferentes saltos intermedios.
!
- Yowsup es una API en Python que te permite utilizar WhatsApp desde la línea de
comandos, con las mismas funcionalidad que el cliente oficial.
!
- Nos permite protegernos de la extracción de información (metadatos de la
NSA?).
NÚMEROS VIRTUALES
Rooted CON 2014
6-7-8 Marzo // 6-7-8 March