Whatsapp: mentiras y cintas de video RootedCON 2014

55
WhatsApp: mentiras y cintas de vídeo Jaime Sánchez (@segofensiva) Pablo San Emeterio (@psaneme)

Transcript of Whatsapp: mentiras y cintas de video RootedCON 2014

Page 1: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

WhatsApp: mentiras y cintas de vídeo

Jaime Sánchez (@segofensiva)

Pablo San Emeterio (@psaneme)

Page 2: Whatsapp: mentiras y cintas de video RootedCON 2014

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

Page 3: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!3

¿  POR  QUE  TANTA  MENSAJERÍA  

INSTANTÁNEA  ?

Page 4: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!4

Page 5: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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

Page 6: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!6

Page 7: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!7

- 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 auto-destrucción de las fotos, una vez el destinatario las ha visto.

¿  QUÉ  ES  SNAPCHAT  ?

Page 8: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!8

ESTADÍSTICAS

ALGUNAS  ESTADÍSTICAS

Page 9: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!9

- 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.

ALGUNAS  LECCIONES  DE  SEGURIDAD

Page 10: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!10

- Utilizaremos /ph/retry en favor de /ph/upload + /ph/send:Qué cuenta??teamsnapchat

ENVIANDO  SNAPS

Page 11: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!11

Page 12: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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?

Page 13: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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 ?

Construímos nuestro script para enviar imágenesCapturar y repetir las peticiones http

Page 14: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!14

Page 15: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!15

Page 16: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!16

Page 17: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!17

Y  EL  PROBLEMA  DONDE  ESTÁ  ?

Page 18: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!18

LA  SOLUCIÓN  …

Page 19: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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.

Page 20: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!20

Page 21: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!21

40.449196,-­‐3.558827

Page 22: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!22

Page 23: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!23

Page 24: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!24

- WhatsApp es una aplicación de mensajer ía mult iplataforma 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.

¿  QUÉ  ES  WHATSAPP  ?

Page 25: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!25

FACEBOOK  COMPRA  WHATSAPP  …

Page 26: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!26

…  Y  ALGUNAS  COSAS  NO  CAMBIAN

Page 27: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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

Page 28: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!28

CRECIMIENTO  METEÓRICO

Page 29: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!29

- 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

- Problemas de cifrado: - Primero porque no había - Clave de sesión basada en IMEI / MAC del teléfono !- A l m a c e n a m i e n t o d e contenido en sus servidores

Page 30: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!30

E-Mail with fake WhatsApp notification

Android Game Steals WhatsApp Conversations

StealGenie: Spy and Dump Instant Messengers data

Fake Spy App on Smartphones

Page 31: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!31

- 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=”[email protected]”         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  FUNCIONA  WHATSAPP  ?

Page 32: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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.

Page 33: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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=”[email protected]”          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>

Page 34: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!34

57:41 => WA 01:02 => PROTOCOL VERSION 1.2 !f8:05:01:c8:ab:a5:fc:12:69:50:68:6f:6e:65:2d:32:2e:31:30:2e:32:2d:35:32:32:32:00:00 0x01 => stream:stream 0xc8 => to 0xab: s.whatsapp.net 0xa5 => resource 0xfc => String 12caracteres => iPhone-2.10.2-5222

<stream:stream to=”s.whatsapp.net” resource=”iPhone-2.10.2-5222” /> !f8:02:bb => 0xbb => stream:features f8:04 f8:03:70:31:ca => 0x70 => message_acks 0x31 => enable 0xca => TRUE f8:01:9c => 0x9c => receipt_acks f8:03:e4:cb:0c => 0xe4 => w:profile:picture 0xcb => type 0x0c => all f8:03:b9:7c:ca => 0xb9 => status 0x7c => notification 0xca => TRUE

<stream:features> <message_acks enable=TRUE /> <receipt_acks /> <w:profile:picture type=ALL /> <status notification=TRUE /> </stream:features> !

f8:08:10:6d:ec:da:fc:0b:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:X:e8:cf 0x10 => auth 0x6d => mechanism 0xec => WAUTH-1  user => 34XXXXXXXXX 0x31 => enable 0xe8 => xmlns 0xcf => urn:ietf:params:xml:ns:xmpp-sasl

<auth mechanism=”WAUTH-1” user=”XXXXXXXXXXX” xmlns=”urn:ietf:params:xml:ns:xmpp-sasl” />

AUTENTICACIÓN  WAUTH  1.2

Page 35: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!35

- El acceso de un nuevo dipositivo se produce de la siguiente manera:CANAL HTTPS

RECEPCIÓN 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:xmpp-sasl">ZZZZZZZZZZZZZ</response>

INTERCAMBIO CLAVE

Page 36: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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 ?

Page 37: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

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

c1 ⊕ c2 = m1 ⊕ m2

m1 = c1 ⊕ k m2 = c2 ⊕ k

REUSED KEY ATTACK

Page 38: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!38

MORE  THEORICAL  IN  NATURE  ...

Page 39: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!39

Page 40: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!40

LO  QUE  DE  VERDAD  OS  IMPORTA  …

Page 41: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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 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)

WAUTH 2 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) …

Page 42: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!42

Page 43: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!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

Page 44: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!44

CRASH!

Page 45: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

MALICIOUS THREATS, VULNERABILITIES AND DEFENSES IN WHATSAPP AND MOBILE I.M. PLATFORMS

SHMOOCON 2014

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. !- 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.

CIFRADO  ADICIONAL

Page 46: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!46

- 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ÓNEN TIEMPO REAL

CIFRADO  ADICIONAL

Page 47: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!47

Page 48: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

MALICIOUS THREATS, VULNERABILITIES AND DEFENSES IN WHATSAPP AND MOBILE I.M. PLATFORMS

SHMOOCON 2014

SERVIDOR  EXTERNO  XMPP

Page 49: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!49

- 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

SERVIDOR  PROPIO  DE  XMPP

Page 50: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!50

Page 51: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!51

ANONIMATO

Page 52: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

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

Page 53: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!53

NOTIFICACIONES  PUSH

Page 54: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!54

FALSEANDO REMITENTES

Page 55: Whatsapp: mentiras y cintas de video RootedCON 2014

Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

MUCHAS GRACIAS !!

Jaime Sánchez (@segofensiva)

Pablo San Emeterio (@psaneme)