Pablo San Emeterio López & Jaime Sánchez – WhatsApp, mentiras y cintas de video [Rooted CON 2014]

3,674 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,674
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Pablo San Emeterio López & Jaime Sánchez – WhatsApp, mentiras y cintas de video [Rooted CON 2014]

  1. 1. 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)
  2. 2. 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
  3. 3. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !3 ¿  POR  QUE  TANTA   MENSAJERÍA   INSTANTÁNEA  ?
  4. 4. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !4
  5. 5. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !5
  6. 6. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !6 - 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
  7. 7. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !7 Tenemos: WAUTH 2 : Cifrado, XMPP y Anonimato WAUTH 1.2 : Cifrado, XMPP y Anonimato WhatsApp : Ficheros (audio, fotos, vídeo etc). NPI si acabará funcionando Snapchat (Shmoocon : EPIC Fails de IM) WhatsApp Crash y Modificar Remitente
  8. 8. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !8
  9. 9. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !9 - 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  ?
  10. 10. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !10 ESTADÍSTICAS ALGUNAS  ESTADÍSTICAS
  11. 11. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !11 - 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
  12. 12. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !12 - Utilizaremos /ph/retry en favor de /ph/upload + /ph/send: Qué cuenta??teamsnapchat ENVIANDO  SNAPS
  13. 13. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !13
  14. 14. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !14 - 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?
  15. 15. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !15 - "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
  16. 16. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !16
  17. 17. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !17
  18. 18. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !18
  19. 19. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !19
  20. 20. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !20
  21. 21. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !21 - 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. ! - No existen versiones para Windows, Mac, Linux. ¿  QUÉ  ES  WHATSAPP  ?
  22. 22. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !22 FACEBOOK  COMPRA  WHATSAPP  …
  23. 23. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !23 …  Y  ALGUNAS  COSAS  NO  CAMBIAN
  24. 24. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !24 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
  25. 25. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !25 CRECIMIENTO  METEÓRICO
  26. 26. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !26 - 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.) :) ! - 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 ALGUNOS  PROBLEMAS  DE  SEGURIDAD
  27. 27. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !27 - 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.
  28. 28. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !28 E-Mail with fake WhatsApp notification Android Game Steals WhatsApp Conversations StealGenie: Spy and Dump Instant Messengers data Fake Spy App on Smartphones
  29. 29. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !29 - 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  FUNCIONA  WHATSAPP  ?
  30. 30. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !30 - 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.
  31. 31. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !31 - 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>
  32. 32. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !32 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
  33. 33. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !33 - El acceso de un nuevo dipositivo se produce de la siguiente manera: CANAL HTTPS INTERCAMBIO CLAVE RECEPCIÓN CLAVE
  34. 34. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !34 PROBLEMAS  DE  WAUTH  1.2 c1 = m1 ⊕ k c2 = m2 ⊕ k c1 ⊕ c2 = m1 ⊕ m2 m1 = c1 ⊕ k m2 = c2 ⊕ k REUSED KEY ATTACK
  35. 35. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !35 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) …
  36. 36. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !36 - 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
  37. 37. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !37 ¿  POR  QUÉ  ?
  38. 38. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !38 ATACANDO  EL  CLIENTE
  39. 39. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !39 FALSEANDO  REMITENTES
  40. 40. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !40 - 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 CIFRADO  ADICIONAL
  41. 41. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !41
  42. 42. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !42
  43. 43. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !43 - 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
  44. 44. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !44
  45. 45. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !45
  46. 46. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March !46

×