Hace no demasiado tiempo se generó una buena polémica con el servicio de
Apple iMessage al descubrirse que existían formas de fastidiar a los usuarios con diferentes
ataques para hacer Spam y Denegación de Servicio. La ventaja para el atacante de
Apple iMessage era que podrían utilizarse cuentas no necesariamente asociadas a números de teléfonos, y automatizar el ataque desde equipos
Mac OS X con sencillos
scripts. Los ataques para hacer un
D.O.S. eran tan sencillos como hacer mensajes muy largos, o costosos de
renderizar, haciendo uso de codificaciones complejas como
Zalgo.
 |
Figura 1: Mensajes D.O.S. para Apple iMessage enviado en Zalgo |
Como
Apple no tenía la opción de
bloquear contactos en iOS 6 - fue introducida en iOS 7 -, decidió poner un sistema antispam bastante curioso:
Enviar un correo electrónico a Apple para decir quién te estaba spameando o haciendo D.O.S. por Apple iMessage para que ellos lo comprobaran y tomaran medidas.
Como
Apple iMessage y
WhatsApp son similares, decidí comprobar si esto era posible hacerlo también de alguna forma en la popular
app de mensajería. Sí, sé que todo el mundo quiere saber
cómo espiar WhatsApp, pero supongo que el poder hacer un
D.O.S. como broma a algún amigo pesado de esos que se pasa todo el día enviándote chorradas podría ser un buen escarmiento, así que perdí un poco de tiempo revisando estas cosas.
 |
Figura 2: ¿Mensajes de tamaño ilimitado en WhatsApp? |
Lo primero fue mirar en
Internet a ver si se conocían los límites de los mensajes de
WhatsApp, y no resulta fácil encontrarlos, ya que todo el mundo parece pensar que son ilimitados. Evidentemente, el término ilimitado cuando hablamos con tecnología no parece demasiado científico, ya que al final siempre acaba apareciendo un límite.
Si miramos la estructura de una base de datos de
WhatsApp con
SQLite Data Browser, por ejemplo, se puede ver que los campos que almacenan el contenido de los mensajes son de tipo
BLOB y TEXT, así que sólo hay que mirar el tamaño de estos tipos de datos en
SQLite, que pueden consultarse en
SQLite Limits.
 |
Figura 3: Estructura de la tabla messages de WhatsApp |
Como se puede ver, el tamaño de mensaje, salvo que la
app haya establecido algún límite por el
GUI puede ser mucho más grande que lo que un terminal pueda soportar con soltura, así que decidí probar a crear unos mensajes de gran tamaño a ver cómo se comportaban un
iPhone, una
Blackberry de las antiguas, y unos terminales con
Android con los que contaba a mano.
 |
Figura 4: Máximo tamaño para un BLOB. Para un TEXT el límite lo pone SQLITE_ MAX_SQL_LENGHT |
Para hacer el ataque se podría haber creado algún
script un poco más elaborado haciendo uso de
Yowsup, pero como la idea se me ocurrió mientras andaba tirado en el sofá, lo único que tuve que hacer es crear un mensaje copiando en el portapapeles una frase muy larga y pengándola sucesivas veces durante 10 minutos hasta que construí un mensaje lo suficientemente largo - por supuesto muy lejos de los límites de
SQLite -.
BlackBerry con Whatsapp 2.11.528
Tras enviárselo a mi pobre Blackberry e intentar abrir la app de WhatsApp, el terminal se quedó bloqueado totalmente y tuve que reiniciarlo y borrar todos los datos antes de poder volver a abrir WhatsApp. La versión exacta de WhatsApp para BlackBerry que tengo instalada en este terminal, por si alguien quiere probar más, es la 2.11.528.
Android con WhatsApp 2.11.152
En los terminales Android, mi Nexus 4, mi HTC Desire y mi HTC One soportaron que la app de WhatsApp, versión 2.11.152, se quedara en un estado de thrashing que hace imposible su manejo. Es necesario esperar durante varios minutos a hacer cada nueva acción y conseguir eliminar el mensaje envenenado, o por supuesto, desinstalar la app y volver a instalarla.
La "gracia" de este mensaje es enviarlo a una lista de amigos que tengan Android, ya que cuando se visualiza la lista de conversaciones intenta hacer una previsualización de 20 caracteres y parece que para ello carga todo el mensaje en memoria del tirón sin hacer alguna lectura con RTRIM o similares. Aún así, la app entra en thrashing pero no cae, aunque los destinatarios con los que he probado han acabado todos desinstalando y volviendo a instalar la app.
iPhone 5 con iOS 7
El que mejor resultado obtuvo fue el terminal iPhone 5, que aunque iba a tirones, podía manejarse con relativa facilidad y conseguir borrar el mensaje, lo que hace suponer que la app de iOS esté mejor diseñada y cuente con algún control a la hora de manejar límites en mensajes de gran tamaño.
La app de iOS es la que mejor parada sale, bloqueándose durante unos instantes al recibir, pero luego al hacer scroll la app - aunque da algún tirón - consigue moverse sin bloquearse demasiado. Creo que WhatsApp para iOS tiene algún limite de mensaje a la hora de manejarlos por el GUI que Android y Blackberry no tienen.
Con estas sencillas pruebas se puede ver que sí que parece posible hacer un
DOS a
WhatsApp y molestar a los usuarios normales de este sistema, y que tanto los detalles sutiles de la implementación de las
apps en las diferentes arquitecturas, como los sistemas operativos y la calidad del hardware en el que corran, tienen importancia a la hora de diseñar un sistema robusto. De todas formas, si te toda un amigo "
guasón" que te hace estas cosas, lo más fácil es que le bloquees en
WhatsApp, que se puede hacer fácilmente.
Saludos y.... ¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
¡Buen año!
...
Autor: Pau González