whatsapp-131103060919-phpapp01

download whatsapp-131103060919-phpapp01

of 42

Transcript of whatsapp-131103060919-phpapp01

  • 5/21/2018 whatsapp-131103060919-phpapp01

    1/42

    DEFEATING WHATSAPPS

    Defeating`s

    Lack of Privacy

  • 5/21/2018 whatsapp-131103060919-phpapp01

    2/42

    Lack of Privacy

    ! #$%&'&( ()*)( +

    Jaime Snchez- Security Researcher- Executive MBA, CISSP, CISA y CISM- Ponente en Rootedcon, Nuit du Hack, BHArsenal, Defcon, DeepSec, BH Sao Paulo etc.

    - Twitter : @segofensiva- http://www.seguridadofensiva.com

    Pablo San Emeterio- Ingeniero Informtico / I+D Optenet- Master de Seguridad y Auditora por la UPM,CISA y CISM- Ponente en Rootedcon, NoConName y CiberSeg- Digamos que le gusta el WhatsApp :)- Twitter : @psaneme

    http://www.seguridadofensiva.com/http://www.seguridadofensiva.com/http://www.seguridadofensiva.com/
  • 5/21/2018 whatsapp-131103060919-phpapp01

    3/42

    ,&-%.%/0/&( 102-)3 45

  • 5/21/2018 whatsapp-131103060919-phpapp01

    4/42

    - WhatsApp es una aplicacin de mensajeramultiplataforma que permite enviar y recibirmensajesa travs Internet de manera gratuita.

    - Ha sustituido a los servicios tradicionales de mensajescortos o sistema de mensajera 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 Androidpermiten el uso de WhatsApp en Windows, Mac o unNavegador web e implementaciones abiertas en python(Yowsup) y php (WhatsAPI).

    - Se sincroniza automticamente con la agenda.

    6708(011

  • 5/21/2018 whatsapp-131103060919-phpapp01

    5/42

    /08)( 9 &(80/:(8%.0(

  • 5/21/2018 whatsapp-131103060919-phpapp01

    6/42

    /08)( 9 &(80/:(8%.0(

    Ms usuarios que Twitter ...

  • 5/21/2018 whatsapp-131103060919-phpapp01

    7/42

    7%(8);%0- /& &;;);&( (&

  • 5/21/2018 whatsapp-131103060919-phpapp01

    8/42

    7%(8);%0- /& &;;);&( (&

  • 5/21/2018 whatsapp-131103060919-phpapp01

    9/42

    1;)7%2%.%)'&(

    Arabia Saud ha amenazado conprohibir aplicaciones como Skype,WhatsApp o Viber si no alcanza un acuerdocon las compaas propietarias para podercontrolar esas tecnologas de comunicacin,

    inform hoy el diario saud Al Hayat.

    La Comisin saud de Comunicaciones, responsablede la organizacin de las telecomunicaciones y

    tecnologas informticas en el pas, ha pedido a las

    compaas de comunicacin que se pongan encontacto con los propietarios de esas aplicaciones y

    estudien la posibilidad de aplicar la leylocal de seguridad.

  • 5/21/2018 whatsapp-131103060919-phpapp01

    10/42

    1;)7%2%.%)'&(

    El gobierno de la provincia de Sind en Pakistn hadevelado suplan de un bloqueo de tres mesessobre aplicaciones de mensajera comoViber, WhatsApp, Tango, Skype y otrasaplicaciones de llamadas y mensajera basadas en VoiceOver Internet Protocol en lo que los funcionarios

    llaman una interrupcin de las actividades terroristas ycriminales en la provincia, especialmente en las reasurbanas.

    El ministro de informacin de Sind, Sharjeel Memon,

    comparti esta noticia en una rueda de prensa [en] eljueves 4 de octubre de 2013 en la ciudad portuariasurea de Karachi. El gobierno de Sind estesperando aprobacin del gobierno federalen Islamabad.

  • 5/21/2018 whatsapp-131103060919-phpapp01

    11/42

    &(1%)'0=&- Los informes y documentos filtrados por Edward

    Snowden en junio de 2013 indican que PRISM seemplea como un medio para la vigilancia afondo de las comunicaciones y otras informacionesalmacenadas

    - Los datos que supuestamente la NSA es capaz de

    obtener gracias a PRISM incluyen correos electrnicos,vdeos, chat de voz, fotos, direcciones IP, notificaciones deinicio de sesin, transferencia de archivos y detalles sobreperfiles en redes sociales

    - Empresas de Internet como Microsoft, Google,

    Yahoo, Dropbox, Apple y Facebook se hanvisto implicadas.

    - Los objetivos son aquellos ciudadanos que vivan fuerade Estados Unidos, aunque tambin se incluyen a losciudadanos estadounidenses

  • 5/21/2018 whatsapp-131103060919-phpapp01

    12/42

    Ser WhatsAppuna de estas empresas?

    La Agencia Nacional de Seguridad estadounidense (NSA) espi

    60 millones y medio de llamadas en Espaatan sloentre el mes de diciembre de 2012 y principios de enero de

    este ao.

    El pinchazo incluira tanto llamadas telefnicascomo comunicaciones en internet: correos

    electrnicos, mensajes en redes sociales, etc

  • 5/21/2018 whatsapp-131103060919-phpapp01

    13/42

    -0 %/&0

  • 5/21/2018 whatsapp-131103060919-phpapp01

    14/42

    - El principal objetivo de esta investigacin es aadir una nueva capa de seguridad yprivacidad que garantice que en el intercambio de informacin entre los integrantes deuna conversacin tanto la integridad como la confidencialidad no puedan verseafectados por un atacante externo.

    - Se han definido diferentes pruebas de concepto sobre una jerarqua de niveles de

    seguridad:*El primer nivelde seguridad implica el cifrado, mediante clave privada, de losmensajes y los datos intercambiados entre dos usuarios.

    *En un segundo nivel, se dota de cierto nivel de anonimato a la conversacin,

    mediante la utilizacin de otras cuentas y proxys / nodos intermedios.

    * Por ltimo, se establece un tercer nivel al modificar el funcionamientointerno de la aplicacin, utilizando los servidores de la aplicacin como apoya paraengaar a la aplicacin y poder usar un servidor externo que queramos quegestione nuestros mensajes.

    )2=&8%>)(

  • 5/21/2018 whatsapp-131103060919-phpapp01

    15/42

    - Esta tcnica ha sido desarrollada para poder ser utilizada de formacompletamente transparente para el usuario.

    - Para ello es necesario disponer de un telfono rooteado, o en caso de otrasplataformas se ha desarrollado una plataforma basada en Raspberry que actuarcomo punto de acceso automatizado o se puede utilizar la una VPN.

    )2=&8%>)(

  • 5/21/2018 whatsapp-131103060919-phpapp01

    16/42

  • 5/21/2018 whatsapp-131103060919-phpapp01

    17/42

    ,$'?*11

    - WhatsApp utiliza una versin propia/modificada de XMPP (RFC 6120y RFC 6121)llamada FunXMPP.

    - Sin entrar en ms detalles tcnicos, es un protocolo de mensajera que utiliza comosintaxis el lenguaje XML:

    Hello

    - Al ser una aplicacin para mviles, la gente de WhatsApp ha intentado reducir eltamao de los mensajes y la carga del protocolo a lo mnimo.

    - Cmo lo han hecho?

    mailto:[email protected]:[email protected]
  • 5/21/2018 whatsapp-131103060919-phpapp01

    18/42

    ,);*08) 9 .)'>&;(%)'&(- Todas las palabras reservadas utilizadas, han sido sustitudas por un byte, logrando

    reducir considerablemente la carga.

    - FunXMPP utilizada una tabla de conversin para prcticamente todas las palabrasreservadas.

    - Basndonos en esto, utilizando bytes con el formato \xnn (nn representa unnmero hexadecimal), el ejemplo anterior quedara:

    Hello

    - Como podemos ver, las variables no pueden ser sustitudas por representaciones

    tipo byte al no ser palabras fijas/reservadas.

  • 5/21/2018 whatsapp-131103060919-phpapp01

    19/42

    298&(

    - Byte \xfc: sequencia de caracteres ASCII que ser utilizada como valor. La longitudde la cadena se encuentra en el siguiente byte (longitud mxima de 255).- Byte \xfd: sequencia de caracteres ASCII, con la diferencia de que la longitud vieneexpresada en los siguientes tres bytes (longitud mxima de 16777215).- Byte \xf8y \xf9: representacin de tipo especial lista. El nmero de elementos seencuentra a continuacin.

    Los objetos se cuentan de la siguiente forma: 1 2 3 | 10 | Hello |

    mailto:[email protected]:[email protected]:[email protected]
  • 5/21/2018 whatsapp-131103060919-phpapp01

    20/42

    57:41 => WA01: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

    f8:02:bb => 0xbb=> stream:featuresf8:04f8:03:70:31:ca => 0x70 => message_acks 0x31 => enable 0xca => TRUEf8:01:9c => 0x9c=> receipt_acksf8:03:e4:cb:0c

    => 0xe4=> w:profile:picture 0xcb => type 0x0c => allf8:03:b9:7c:ca => 0xb9=> status 0x7c => notification 0xca => TRUE

    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-1user=> 34XXXXXXXXX 0x31=> enable 0xe8=> xmlns

    0xcf=> urn:ietf:params:xml:ns:xmpp-sasl

    -)

  • 5/21/2018 whatsapp-131103060919-phpapp01

    21/42

    0$8&'8%.0.%@' 9 .%,;0/)- El acceso de un nuevo dipositivose produce de la siguiente manera:

    1) El telfono enva su nmero via HTTPS a una URL solicitando un cdigo2) El telfono recibe el cdigo va SMS3) El cdigo es utilizado, de nuevo sobre HTTPS, para obtener el password

    - Para acceder al sistema, el telfono enviar:

    - El servidor responder con un desafo:YYYYYYYYYYYYYYYYYYYY

    - El cliente, para responder al desafo, generar una clave usando PKBDF2 (16iteraciones) con el password, el desafo recibido como salt, y utilizar SHA1 comofuncin hash. Se utilizarn los 20 primeros bytes generados del tipo || || UNIX timestamp:

    ZZZZZZZZZZZZZ

    - A partir de este momento, los mensajes van cifrados.

  • 5/21/2018 whatsapp-131103060919-phpapp01

    22/42

    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 lamano

    Llega:

    NUNCA utilices el mismo keystream

    de RC4 para cifrar dos mensajesdiferentes ...

  • 5/21/2018 whatsapp-131103060919-phpapp01

    23/42

    0;& *9 *&((0

  • 5/21/2018 whatsapp-131103060919-phpapp01

    24/42

    .0/0 >&A #$& 0-%.& .%,;0 $' *&'(0=&

    Alice quiere enviar los mensajes cifrados de m1ym2a Bob sobre

    un canal pblico 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.

    Alica enva 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 !kc2 = m2 !k

    c1 !c2 = m1 !m2

    m1 = c1 !km2 = c2 !k

    REUSED KEY ATTACK

    B /%)( *080 $'

  • 5/21/2018 whatsapp-131103060919-phpapp01

    25/42

    080.0'/) &- .%,;0/) &' 6708(011- Tenemos m1 ! m2 (por la propiedad conmutativa hemos eliminado k de laecuacin).

    - Utilizando Crib-Dragging:1) Deduciremos una palabra que aparezca en los mensajes2) Codificamos esta palabra a hexadecimal

    3) Haremos el XOR de ambos mensajes cifrados4) Realizamos un XOR de la palabra en hexadecimal(paso 2) en cada posicin delresultado del XOR de ambos textos cifrados(paso 3)5) Cuando consideremos que el resultado anterior es texto legible,consideramos la palabra vlida y aumentamos nuestra bsqueda6) Si el resultado no es texto legible, probamos con la siguiente posicin.

    - Es importante hacer un anlisis en base al idiomaoriginal de los mensajes en claro.

    - Gracias a un anlisis de frecuencias, utilizaremos laspalabras ms frecuentes para realizar nuestro ataque.

  • 5/21/2018 whatsapp-131103060919-phpapp01

    26/42

    Orden Frec.absoluta Frec.normalizada

    1. de 9,999,518 65545.55

    2. la 6,277,560 41148.59

    3. que 4,681,839 30688.85

    4. el 4,569,652 29953.48

    5.

    en

    4,234,281 27755.166. y 4,180,279 27401.19

    7. a 3,260,939 21375.03

    8. los 2,618,657 17164.95

    9. se 2,022,514 13257.31

    10. del 1,857,225 12173.87

    11. las 1,686,741 11056.37

    12. un 1,659,827 10879.95

    13. por 1,561,904 10238.07

    14.

    con 1,481,607 9711.74 15. no 1,465,503 9606.18

    16. una 1,347,603 8833.36

    17. su 1,103,617 7234.06

    18. para1,062,152 6962.26

    19. es 1,019,669 6683.79

    20. al 951,054 6234.03

    21. lo 866,955 5682.77

    22. como 773,465 5069.96

    23.

    ms 661,696

    4337.33 24. o 542,284 3554.60

    25. pero 450,512 2953.04

    26. sus 449,870 2948.84

    27. le 413,241 2708.74

    28. ha 380,339 2493.07

    29.me 374,368 2453.93

    30. si 327,480 2146.58

    31. sin 298,383 1955.86

    32. sobre 289,704 1898.97

    33. este 285,461 1871.16

    34. ya 274,177 1797.19

    35. entre 267,493 1753.38

    36.

    cuando 257,272

    1686.38

    37. todo 247,340 1621.28

    38. esta 238,841 1565.57

    39. ser 232,924 1526.78

    40. son 232,415 1523.45

    41. dos 228,439 1497.38

    42. tambin 227,411 1490.64

    43. fue 223,791 1466.92

    44. haba 223,430 1464.55

    45.

    era

    219,933

    1441.63

    46.muy 208,540 1366.95

    47. aos 203,027 1330.81

    48. hasta 202,935 1330.21

    49. desde 198,647 1302.10

    50. est 194,168 1272.74

    51.mi 186,360 1221.56

    52. porque 185,700 1217.23

    53.

    qu 184,956

    1212.36 54. slo 170,552 1117.94

    55. han 169,718 1112.47

    56. yo 167,684 1099.14

    57. hay 164,940 1081.16

    58. vez 163,538 1071.97

    59. puede 161,219 1056.76

    60. todos 158,168 1036.77

    Fuente: http://corpus.rao.es/frec/1000_formas.TXT

    http://corpus.rao.es/frec/1000_formas.TXThttp://corpus.rao.es/frec/1000_formas.TXT
  • 5/21/2018 whatsapp-131103060919-phpapp01

    27/42

    "WhatsApp takes security seriouslyand is continually thinking ofways to improve our product. While we appreciate feedback, we're

    concerned that the blogger's story describes a scenario that is moretheoretical in nature. Also stating that all conversations should beconsidered compromised is inaccurate" the company said.

    68,3

    Respuesta oficial a https://blog.thijsalkema.de/blog/2013/10/08/piercing-through-whatsapp-s-encryption/

    https://blog.thijsalkema.de/blog/2013/10/08/piercing-through-whatsapp-s-encryption/https://blog.thijsalkema.de/blog/2013/10/08/piercing-through-whatsapp-s-encryption/
  • 5/21/2018 whatsapp-131103060919-phpapp01

    28/42

    *);& 87&);%.0-%' '08$;& CCC

  • 5/21/2018 whatsapp-131103060919-phpapp01

    29/42

  • 5/21/2018 whatsapp-131103060919-phpapp01

    30/42

    '$*&;)( >%;8$0-&(

  • 5/21/2018 whatsapp-131103060919-phpapp01

    31/42

    &'>%0;8&*% /'% ++

  • 5/21/2018 whatsapp-131103060919-phpapp01

    32/42

  • 5/21/2018 whatsapp-131103060919-phpapp01

    33/42

    ,$'.%)'0*%&'8)- Hemos comprobado que el cifrado utilizado

    para salvaguardar la informacin y la privacidad denuestras conversaciones es fcil de romper.

    - Qu podemos hacer ? Interceptaremos elmensaje de WhatsApp antes de que salga.Descifraremos el mensaje original con nuestraclave y le aplicaremos un algoritmo de cifrado, ydespus volveremos a cifrarlo con el algoritmo yclave original para no romper la aplicacin.

    - Nuestro esquema de funcionamiento de ahora

    en adelante ser:MODIFICACIN

    EN TIEMPO REAL

  • 5/21/2018 whatsapp-131103060919-phpapp01

    34/42

    - El mensaje Ola. Q ase se enva desde el cliente. Nuestro programa detecta el envo de untexto en claro, y utilizando la clave de sesin de RC4 usada por WhatsApp, descifra el mensaje yextrae 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 elfuncionamiento de WhatsApp:

    - Eliminamos HMAC en el decodificado y volvemos a calcularlo para el envo. Finalmente, elmensaje que abandonar nuestro telfono mvil. Podemos ver como el nuevo mensaje es

    diferente al original al llevar una nueva capa de cifrado implementada por nosotros:

    *&'(0=& &'>%0/)

    to

    to

    HMAC

    HMAC

  • 5/21/2018 whatsapp-131103060919-phpapp01

    35/42

    - El proceso de recepcinse realiza de forma inversa al de envo.

    - En la captura podemos observar como recibimos un mensaje, aparentemente normal, deWhatsApp, con la diferencia de que al descifrarlo con la clave RC4, el texto que nos encontramoses completamente ilegible.:

    - 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 nuestroWhatsApp sea capaz de procesarlo.

    - El mensaje final podemos ver que es completamente legible aqi cifrandi msnjes.

    *&'(0=& ;&.%2%/)

    HMAC

    HMAC

  • 5/21/2018 whatsapp-131103060919-phpapp01

    36/42

    (%' /&(.%,;0;B 9)$

  • 5/21/2018 whatsapp-131103060919-phpapp01

    37/42

  • 5/21/2018 whatsapp-131103060919-phpapp01

    38/42

    ).$-80'/) '$&(8;)( *&'(0=&(

    - El anterior mtodo nos permitir cifrar nuestrosmensajes para que otros atacantes capaces de interceptarnuestro trfico no sean capaces de adivinar el contenidode los mensajes.

    - Pero, y si queremos que el trficodirectamente no pase por los servidores deWhatsApp ?.

    SERVIDOR DEMENSAJERA XMPP

  • 5/21/2018 whatsapp-131103060919-phpapp01

    39/42

    &';$80'/) -)( *&'(0=&(- 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:

    - Inmediatamente se procede a enviar sustituir el texo original del mensje por el caracter derelleno que hayamos decidido utilizar.

    - De esta forma conseguimos que a travs de los servidores de mensajera de WhatsApp slopasen caracteres de relleno y nunca el texto original.

    - Este paso es necesario para poder recibir correctamente el mensaje en el WhatsApp de destino.

    to

    HMAC

  • 5/21/2018 whatsapp-131103060919-phpapp01

    40/42

    &- (&;>%/); ?*11- Los mensajes llegan al servidor XMPP:

    - Por si queda alguna duda, los mensajes recompuestos corresponden a los enviados desde

    nuestro mvil:

    - Finalmente en el destinatario se recibir el mensaje de los servidores de WhatsApp con los

    caracteres de relleno.

    - Automticamente proceder a bloquear el mensaje y consultar al servidor XMPP si existe algn

    mensaje con el correspondiente , para proceder a reensamblarlo y hacerselollegar al cliente.

  • 5/21/2018 whatsapp-131103060919-phpapp01

    41/42

    1); 6708(011 (@-) (& >& CCC

  • 5/21/2018 whatsapp-131103060919-phpapp01

    42/42