Whatsapp: mentiras y cintas de video RootedCON 2014
-
Upload
jaime-sanchez -
Category
Technology
-
view
51.150 -
download
1
Transcript of 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)
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
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!4
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!6
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 ?
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!8
ESTADÍSTICAS
ALGUNAS ESTADÍSTICAS
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
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!11
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?
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!14
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!15
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!16
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!17
Y EL PROBLEMA DONDE ESTÁ ?
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!18
LA SOLUCIÓN …
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.
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!20
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!21
40.449196,-‐3.558827
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!22
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!23
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 ?
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!25
FACEBOOK COMPRA WHATSAPP …
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!26
… Y ALGUNAS COSAS NO CAMBIAN
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!28
CRECIMIENTO METEÓRICO
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
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
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 ?
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.
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>
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
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
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 ?
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
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!39
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!40
LO QUE DE VERDAD OS IMPORTA …
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) …
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!42
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!44
CRASH!
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
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!47
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
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!50
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!51
ANONIMATO
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
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!53
NOTIFICACIONES PUSH
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March!54
FALSEANDO REMITENTES
Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
MUCHAS GRACIAS !!
Jaime Sánchez (@segofensiva)
Pablo San Emeterio (@psaneme)