sábado, julio 23, 2022

(Web)ScrAPIficar & Weaponizar WhatsApp (1 de 4)

Para la charla de OpenExpo Europe 2022, este año quise preparar un pequeño ejemplo para explicar cómo hacíamos la "Weaponización" de "Features" Client-Side mediante la construcción de un servidor de APIs que permitieran crear scripts para automatizar ataques. Vamos, continuar los trabajos que habíamos hecho anteriormente de explicar cómo los "leaks" y las "weaknesess" en plataformas se puede explotar incluso sin que existan APIs, utilizado herramientas de WebScrapping o de QA-Automation, como vamos a ver al final.
Pero todo este "mumbo jumbo", es mucho más sencillo de lo que parece, así que dejadme que resuma en estos tres artículos qué es lo que hay detrás, y luego podéis ver la charla en vídeo para entender mejor todos los ejemplos y consecuencias. Primero, vamos a empezar definiendo lo que vamos a utilizar, de forma muy simple, y luego vemos cómo utilizamos todo. Y como había que poner un ejemplo, pues lo vamos a ver todo con WhatsApp.

"Leak" o Filtración de Datos en WhatsApp

En el mundo de la seguridad, entendemos como "leak" o "Fuga/Filtración de Datos" cuando una herramienta, plataforma o servicio, deja que un dato que pertenece a otra persona, empresa o usuario de dicha plataforma, sea accedido sin control de un tercero. 
En el caso de WhatsApp, que le damos mucha caña ya que nos encanta el Hacking de iOS: iPhone & iPad donde WhatsApp es uno de los juguetes preferidos como vimos en el caso del Guided Access y las Fotos Hidden en iOS, existen algunos "leaks" muy conocidos de información, que la plataforma deberá arreglar en algún momento, pero que a día de hoy no ha corregido, como son:

- Conocer si una persona está online o no: Esto, el usuario de WhatsApp no puede controlarlo nunca. Siempre que esté online, todos los contactos de su agenda tendrán la capacidad de saberlo, lo que es peligroso.

Figura 3: Tus contactos siempre pueden saber cuándo estás Online.
Es una característica de "Engament" que fomenta el uso de WhatsApp

- Compartir el nombre configurado: De igual forma, con cualquier mensaje que se envíe de WhtasApp, siempre, siempre, siempre, va la información de tu usuario. No hay forma humana de evitar esta filtración, que algunos estafadores han utilizado. 


- El "leak" del corrector ortográfico: Realmente es más de iOS que de WhatsApp, pero lo cierto es que escribir en WhatsApp en iPhone mensajes, hace que por defecto comience en mayúscula, mientras que en la versión WhatsApp Web o WhatsApp Desktop no. Un pequeño leak que te la puede jugar.

- El cambio de móvil por las alertas de seguridad: Cuando cambias de terminal móvil, si tu contacto tiene las alertas de seguridad, siempre recibirá una alerta de seguridad que le avisará. Se supone que esta alerta debe ayudarte a evitar los ataques de "me he cambiado de número".

Estos casos anteriores, son dos ejemplos de "leaks" que no hay forma humana de controlar, pero luego existen otros que sí son controlables, pero que en la configuración por defecto no lo son, como por ejemplo que todos tus contactos pueden ver tu foto por defecto o ver la última hora de conexión.

Figura 5: Valores de Last-Seen en WhatsApp

A estas configuraciones por defecto, hay que sumar además, las configuraciones que NO deberían existir, como que "Everyone" pueda seleccionarse para ver tu foto de perfil, la información sobre ti, o cuando ha sido la última vez que has estado conectado. Seleccionar "Everybody" no tiene ningún valor positivo para un usuario, y si selecciona estas opciones, lo único que está haciendo es dar información a quién no debe. El único sitio donde puede tener algún sentido es en el uso de estas opciones para los canales de WhatsApp de empresas y compañías, pero para el usuario, no deberían existir nunca.

"Weaponizar Features" en WhatsApp

En el mundo de la seguridad hablamos mucho de utilizar una "Feature" o "Característica" para crear un esquema de ataque. En el mundo de WhtasApp se hace muchas veces, y ha llevado a construir algunos ataques muy curiosos sobre la plataforma, como los que hemos visto que han llevado a diferentes tipos de ataques, como son:

- Ataque de Denegación de Servicio a WhatsApp: Weaponizando el bloqueo de cuenta por robo y bloqueando el envío de mensajes de SMS para inicio de sesión de un usuario haciendo intentos infinitos desde una máquina virtual. Al final, se utilizan dos características de seguridad, como son, la de limitar el número de intento de sesiones fallidos bloqueando los SMS, y la de bloquear una cuenta de WhtasApp de un teléfono robado por medio de un mensaje de e-mail.

- Averiguar la ubicación de una persona por los estados de WhatsApp: Se trata de averiguar desde qué dirección IP - y su geolocalización aproximada -  se conecta un contacto tuyo que pulsa en un enlace los Estados de WhatsApp. Se aprovecha de que WhatsApp da la hora exacta a la que un contacto ha visto un estado tuyo.

- Averiguar la ubicación de una persona por una canción compartida en un chat: Se aprovecha de que WhatsApp hace preview de enlaces y se puede crear un enlace que simule perfectamente ser una canción de Spotify. Por ejemplo, Facebook, cuando haces clic en un enlace externo avisa claramente de a donde va el enlace y te deja decidir si estas seguro o no.

Figura 8: La primera URL hace el Preview de la canción porque:
1) Tiene un dominio y 2) no lleva parámetros

- Desbloquear un usuario por medio de un grupo de WhatsApp: Aprovechando que la configuración de WhatsApp no permitía evitar que te añadieran a grupos usuarios que no están en tus contactos, se podía crear una plataforma como Desbloqueame que permitiera a cualquiera desbloquearse de una persona y enviarle mensajes otra vez.

En todos estos casos estamos hablando de "features" o "características" de la plataforma, en este caso de WhatsApp, que no son seguras, y que alguien puede automatizar para realizar un ataque, o como se dice en el mundo anglosajón del hacking "Weaponizar" para conseguir un objetivo. 

"Weaknesses" o "Debilidades" vs. "Bugs" en WhatsApp

Por supuesto, en los casos anteriores, donde se "Weaponiza" una o varias "Features" inseguras, estamos hablando de un problema de seguridad. En muchos casos no hablamos de que pueda ser un "Bug" o "Fallo" de seguridad, pero sí una "Weakness" o "Debilidad" en la seguridad de la plataforma. Me explico para que lo entendáis. 

En el caso de WhatsApp o Telegram se puede configurar una protección para que nadie, sin poner el Passcode, el Verificación en Dos Pasos o la cara con FaceID, pueda ver tus conversaciones de mensajes. En Instagram, no. Es decir, si una persona accede a tu terminal de teléfono y entra en tu cuenta de Instagram, podrá ver todas tus conversaciones, mientras que en WhatsApp o Telegram, si has configurado esa opción de protección no podrá.  ¿Tiene un fallo de seguridad Instagram? No, porque han decidido que sea así, pero sí que podríamos decir que tiene una "Weakness" o debilidad de seguridad.

En los ejemplos anteriores, cuando ya estas debilidades se han mostrado útiles para la automatización de ataques, es cuando las subimos de "Weakness" a "Bug" y se añaden protecciones extras, que ayuden a proteger a los usuarios contra ese tipo de esquemas de ataque. En el caso de WhatsApp, para entender la diferencia entre una "Weakness" y un "Bug" podemos estudiar dos casos diferentes que se pueden entender.

- WhatsApp Screen Lock FaceID ByPass: Este fue un bug que encontré yo en WhatsApp, y que permitía a un usuario saltarse la protección de Screen Lock con FaceID en WhtasApp. La idea era tan simple que, haciendo una re-lllamada a un contacto de WhatsApp desde la lista de llamada de iPhone, se podía saltar la protección de WhatsApp Screen Lock con FaceID y sin autenticarte, ver en la pantalla de la llamada todos los mensajes de todos los chats de WhatsApp que estaban llegando. Esto era un bug, lo notifiqué a WhtasApp y lo corrigieron en la siguiente versión.


Figura 10: WhatsApp for iPhone Screen Lock ByPass PoC

- Comó pueden espiar tus horarios con WhatsApp: En este caso es tan fácil cómo mirar cuándo un contacto está "Online", como hemos visto antes, este es un "leak", porque los usuarios de WhatsApp no tenemos capacidad de evitar que el resto lo sepan, y se podría monitorizar - como vimos en el caso que publicamos en el blog - y como vamos a ver en este articulo. 

Figura 11: Monitorización constante de contactos para hacer un
Time-Line de conexiones de un contacto entre Online y Last-Seen.

¿Es un "bug"? No. ¿Es un "leak"? Sí. ¿Es una "Weakness"? Sí. ¿Es "Weaponizable"? Pues también, como vamos a ver en este artículo. ¿Debe arreglarse esto? Definitivamente.

¡Saludos Malignos!

******************************************************************************************
******************************************************************************************

Autor: Chema Alonso (Contactar con Chema Alonso)  


No hay comentarios:

Publicar un comentario