Pablo San Emeterio López & Jaime Sánchez – WhatsApp, mentiras y cintas de video [Rooted CON 2014]
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. 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. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!3
¿
POR
QUE
TANTA
MENSAJERÍA
INSTANTÁNEA
?
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. 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
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. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!10
ESTADÍSTICAS
ALGUNAS
ESTADÍSTICAS
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. 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
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. 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
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. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!22
FACEBOOK
COMPRA
WHATSAPP
…
23. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!23
…
Y
ALGUNAS
COSAS
NO
CAMBIAN
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. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!25
CRECIMIENTO
METEÓRICO
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. 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. 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. 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. 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. 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>
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. 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. 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. 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
38. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!38
ATACANDO
EL
CLIENTE
39. Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
!39
FALSEANDO
REMITENTES
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
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