Sie sind auf Seite 1von 42

DEFEATING WHATSAPPS

Defeating
`
s
Lack of Privacy
Defeating WhatsApps Lack of Privacy
NoConName 2013
! #$%&'&( ()*)( +
Jaime Snchez
- Security Researcher
- Executive MBA, CISSP, CISA y CISM
- Ponente en Rootedcon, Nuit du Hack, BH
Arsenal, 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
Defeating WhatsApps Lack of Privacy
NoConName 2013
,&-%.%/0/&( 102-)3 45
Defeating WhatsApps Lack of Privacy
NoConName 2013
- WhatsApp es una apl i caci n de mensaj er a
multiplataforma que permite enviar y recibir
mensajes a travs Internet de manera gratuita.
- Ha sustituido a los servicios tradicionales de mensajes
cortos 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 Android
permiten el uso de WhatsApp en Windows, Mac o un
Navegador web e implementaciones abiertas en python
(Yowsup) y php (WhatsAPI).
- Se sincroniza automticamente con la agenda.
6708(011
Defeating WhatsApps Lack of Privacy
NoConName 2013
/08)( 9 &(80/:(8%.0(
Defeating WhatsApps Lack of Privacy
NoConName 2013
/08)( 9 &(80/:(8%.0(
Ms usuarios que Twitter ...
Defeating WhatsApps Lack of Privacy
NoConName 2013
7%(8);%0- /& &;;);&( (&<$;%/0/
- Mensajes en claro (WhatsApp Sniffer)
- Password MD5 basado en IMEI o MAC del telfono utilizado (espa y
suplantacin de usuarios)
- Almacenamiento de cualquier contenido en sus servidores (virus, html etc.) :)
- Vulnerabilidad crtica que permita tomar el control de cualquier cuenta, leer
mensajes de otro usuario o enviarlo en su nombre
- Almacenamiento en claro de la base de datos
- WhatsApp Status: permita cambiar el estado de cualquier usuario del que se
conociera el nmero de telfono
Defeating WhatsApps Lack of Privacy
NoConName 2013
7%(8);%0- /& &;;);&( (&<$;%/0/
- El 13 de Enero de 2012 la aplicacin fue retirada 4 das de la App Store
- Aparicin de Priyanka para Android
- WhatsApp Voyeur: Obtener datos del perl de un usuario, sin necesidad de usar
tu telfono mvil
- No se necesita autorizacin para enviar mensajes, por lo que cualquier usuario/
bot puede enviarte spam.
- Problemas actuales con el cifrado RC4
- etc.
Defeating WhatsApps Lack of Privacy
NoConName 2013
1;)7%2%.%)'&(
Arabi a Saud ha amenazado con
prohibir aplicaciones como Skype,
WhatsApp o Viber si no alcanza un acuerdo
con las compaas propietarias para poder
controlar esas tecnologas de comunicacin,
inform hoy el diario saud Al Hayat.
La Comisin saud de Comunicaciones, responsable
de la organizacin de las telecomunicaciones y
tecnologas informticas en el pas, ha pedido a las
compaas de comunicacin que se pongan en
contacto con los propietarios de esas aplicaciones y
estudien la posibilidad de aplicar la ley
local de seguridad.
Defeating WhatsApps Lack of Privacy
NoConName 2013
1;)7%2%.%)'&(
El gobierno de la provincia de Sind en Pakistn ha
develado su plan de un bloqueo de tres meses
sobre aplicaciones de mensajera como
Viber, WhatsApp, Tango, Skype y otras
aplicaciones de llamadas y mensajera basadas en Voice
Over Internet Protocol en lo que los funcionarios
llaman una interrupcin de las actividades terroristas y
criminales en la provincia, especialmente en las reas
urbanas.
El ministro de informacin de Sind, Sharjeel Memon,
comparti esta noticia en una rueda de prensa [en] el
jueves 4 de octubre de 2013 en la ciudad portuaria
surea de Karachi. El gobierno de Sind est
esperando aprobacin del gobierno federal
en Islamabad.
Defeating WhatsApps Lack of Privacy
NoConName 2013
&(1%)'0=&
- Los informes y documentos ltrados 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 electrnicos,
vdeos, chat de voz, fotos, direcciones IP, noticaciones de
inicio de sesin, transferencia de archivos y detalles sobre
perles 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 tambin se incluyen a los
ciudadanos estadounidenses
Defeating WhatsApps Lack of Privacy
NoConName 2013
Ser WhatsApp una de estas empresas?
La Agencia Nacional de Seguridad estadounidense (NSA) espi
60 millones y medio de llamadas en Espaa tan slo
entre el mes de diciembre de 2012 y principios de enero de
este ao.
El pinchazo incluira tanto llamadas telefnicas
como comunicaciones en internet: correos
electrnicos, mensajes en redes sociales, etc
Defeating WhatsApps Lack of Privacy
NoConName 2013
-0 %/&0
Defeating WhatsApps Lack of Privacy
NoConName 2013
- El principal objetivo de esta investigacin es aadir una nueva capa de seguridad y
privacidad que garantice que en el intercambio de informacin entre los integrantes de
una conversacin tanto la integridad como la condencialidad no puedan verse
afectados por un atacante externo.
- Se han denido diferentes pruebas de concepto sobre una jerarqua de niveles de
seguridad:
* El primer nivel de seguridad implica el cifrado, mediante clave privada, de los
mensajes 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 modicar el funcionamiento
interno de la aplicacin, utilizando los servidores de la aplicacin como apoya para
engaar a la aplicacin y poder usar un servidor externo que queramos que
gestione nuestros mensajes.
)2=&8%>)(
Defeating WhatsApps Lack of Privacy
NoConName 2013
- Esta tcnica ha sido desarrollada para poder ser utilizada de forma
completamente transparente para el usuario.
- Para ello es necesario disponer de un telfono rooteado, o en caso de otras
plataformas se ha desarrollado una plataforma basada en Raspberry que actuar
como punto de acceso automatizado o se puede utilizar la una VPN.
)2=&8%>)(
Defeating WhatsApps Lack of Privacy
NoConName 2013
%'(%/& 87& 6);-/ ),
6708(011
Defeating WhatsApps Lack of Privacy
NoConName 2013
,$'?*11
- WhatsApp utiliza una versin propia/modicada de XMPP (RFC 6120 y RFC 6121)
llamada FunXMPP.
- Sin entrar en ms detalles tcnicos, es un protocolo de mensajera 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 aplicacin para mviles, la gente de WhatsApp ha intentado reducir el
tamao de los mensajes y la carga del protocolo a lo mnimo.
- Cmo lo han hecho?
Defeating WhatsApps Lack of Privacy
NoConName 2013
,);*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 palabras
reservadas.
- Basndonos en esto, utilizando bytes con el formato \xnn (nn representa un
nmero hexadecimal), el ejemplo anterior quedara:
<\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 sustitudas por representaciones
tipo byte al no ser palabras jas/reservadas.
Defeating WhatsApps Lack of Privacy
NoConName 2013
298&(
- Byte \xfc: sequencia de caracteres ASCII que ser utilizada como valor. La longitud
de 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 viene
expresada en los siguientes tres bytes (longitud mxima de 16777215).
- Byte \xf8 y \xf9: representacin de tipo especial lista. El nmero de elementos se
encuentra a continuacin.
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>
Defeating WhatsApps Lack of Privacy
NoConName 2013
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 />
-)<%'
Defeating WhatsApps Lack of Privacy
NoConName 2013
0$8&'8%.0.%@' 9 .%,;0/)
- El acceso de un nuevo dipositivo se produce de la siguiente manera:
1) El telfono enva su nmero via HTTPS a una URL solicitando un cdigo
2) El telfono recibe el cdigo va SMS
3) El cdigo es utilizado, de nuevo sobre HTTPS, para obtener el password
- Para acceder al sistema, el telfono enviar:
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" user="XXXXXXXXXXXX"
mechanism="WAUTH-1" />
- El servidor responder con un desafo:
<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">YYYYYYYYYYYYYYYYYYYY
</challenge>
- El cliente, para responder al desafo, generar una clave usando PKBDF2 (16
iteraciones) con el password, el desafo recibido como salt, y utilizar SHA1 como
funcin hash. Se utilizarn los 20 primeros bytes generados del tipo <numero telfono>
|| <20 bytes de respuesta> || UNIX timestamp:
<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">ZZZZZZZZZZZZZ</response>
- A partir de este momento, los mensajes van cifrados.
Defeating WhatsApps Lack of Privacy
NoConName 2013
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 la
mano
Llega:
NUNCA utilices el mismo keystream
de RC4 para cifrar dos mensajes
diferentes ...
Defeating WhatsApps Lack of Privacy
NoConName 2013
0;& *9 *&((0<&( (&.$;& +
- El algoritmo de cifrado utilizado por WhatsApp es RC4, diseado por Ron Rivest
de la RSA Security en 1987, utilizando la misma clave de cifrado en ambos sentidos.
- Es el Stream Cipher ms utilizado y fue excludo de los estandares de alta
seguridad. Consiste en 2 algoritmos: Key Scheduling Algorithm (KSA) y Pseudo-
Random Generation Algorithm (PRGA).
Y dnde dices que est el problema ?
Defeating WhatsApps Lack of Privacy
NoConName 2013
.0/0 >&A #$& 0-%.& .%,;0 $' *&'(0=&
Alice quiere enviar los mensajes cifrados de m1 y m2 a 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 ! k
c2 = m2 ! k
c1 ! c2 = m1 ! m2
m1 = c1 ! k
m2 = c2 ! k
REUSED KEY ATTACK
B /%)( *080 $' <08%8) CCC
Defeating WhatsApps Lack of Privacy
NoConName 2013
080.0'/) &- .%,;0/) &' 6708(011
- Tenemos m1 ! m2 (por la propiedad conmutativa hemos eliminado k de la
ecuacin).
- Utilizando Crib-Dragging:
1) Deduciremos una palabra que aparezca en los mensajes
2) Codicamos esta palabra a hexadecimal
3) Haremos el XOR de ambos mensajes cifrados
4) Realizamos un XOR de la palabra en hexadecimal(paso 2) en cada posicin del
resultado 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 bsqueda
6) Si el resultado no es texto legible, probamos con la siguiente posicin.
- Es importante hacer un anlisis en base al idioma
original de los mensajes en claro.
- Gracias a un anlisis de frecuencias, utilizaremos las
palabras ms frecuentes para realizar nuestro ataque.
Defeating WhatsApps Lack of Privacy
NoConName 2013
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.16
6. 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. para 1,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
Defeating WhatsApps Lack of Privacy
NoConName 2013
"WhatsApp takes security seriously and is continually thinking of
ways to improve our product. While we appreciate feedback, we're
concerned that the blogger's story describes a scenario that is more
theoretical in nature. Also stating that all conversations should be
considered compromised is inaccurate" the company said.
68,3
Respuesta ocial a https://blog.thijsalkema.de/blog/2013/10/08/piercing-through-whatsapp-s-encryption/
Defeating WhatsApps Lack of Privacy
NoConName 2013
*);& 87&);%.0-
%' '08$;& CCC
Defeating WhatsApps Lack of Privacy
NoConName 2013
0')'%*08)
Defeating WhatsApps Lack of Privacy
NoConName 2013
'$*&;)( >%;8$0-&(
Defeating WhatsApps Lack of Privacy
NoConName 2013
&'>%0;8&
*% /'% ++
Defeating WhatsApps Lack of Privacy
NoConName 2013
.%,;0/)
0/%.%)'0-
Defeating WhatsApps Lack of Privacy
NoConName 2013
,$'.%)'0*%&'8)
- Hemos comprobado que el cifrado utilizado
para salvaguardar la informacin y la privacidad de
nuestras conversaciones es fcil 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
despus volveremos a cifrarlo con el algoritmo y
clave original para no romper la aplicacin.
- Nuestro esquema de funcionamiento de ahora
en adelante ser:
MODIFICACIN
EN TIEMPO REAL
Defeating WhatsApps Lack of Privacy
NoConName 2013
- El mensaje Ola. Q ase se enva desde el cliente. Nuestro programa detecta el envo de un
texto en claro, y utilizando la clave de sesin de RC4 usada por WhatsApp, descifra el mensaje y
extrae 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 el
funcionamiento de WhatsApp:
- Eliminamos HMAC en el decodicado y volvemos a calcularlo para el envo. Finalmente, el
mensaje 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
Defeating WhatsApps Lack of Privacy
NoConName 2013
- El proceso de recepcin se realiza de forma inversa al de envo.
- En la captura podemos observar como recibimos un mensaje, aparentemente normal, de
WhatsApp, con la diferencia de que al descifrarlo con la clave RC4, el texto que nos encontramos
es 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 nuestro
WhatsApp sea capaz de procesarlo.
- El mensaje nal podemos ver que es completamente legible aqi cifrandi msnjes.
*&'(0=& ;&.%2%/)
HMAC
HMAC
Defeating WhatsApps Lack of Privacy
NoConName 2013
(%' /&(.%,;0;B 9)$ <)''0 <&8 CCC
Defeating WhatsApps Lack of Privacy
NoConName 2013
(&;>%/);&(
&?8&;')(
Defeating WhatsApps Lack of Privacy
NoConName 2013
).$-80'/) '$&(8;)( *&'(0=&(
- El anterior mtodo nos permitir cifrar nuestros
mensajes para que otros atacantes capaces de interceptar
nuestro trco no sean capaces de adivinar el contenido
de los mensajes.
- Pero, y si queremos que el trco
directamente no pase por los servidores de
WhatsApp ?.
SERVIDOR DE
MENSAJERA XMPP
Defeating WhatsApps Lack of Privacy
NoConName 2013
&';$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:
<destinatario><message_id><mensaje_a_enviar>
- Inmediatamente se procede a enviar sustituir el texo original del mensje por el caracter de
relleno que hayamos decidido utilizar.
- De esta forma conseguimos que a travs de los servidores de mensajera de WhatsApp slo
pasen 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
Defeating WhatsApps Lack of Privacy
NoConName 2013
&- (&;>%/); ?*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 <message_id>, para proceder a reensamblarlo y hacerselo
llegar al cliente.
Defeating WhatsApps Lack of Privacy
NoConName 2013
1); 6708(011 (@-) (& >& CCC
Defeating WhatsApps Lack of Privacy
NoConName 2013

Das könnte Ihnen auch gefallen