domingo, noviembre 20, 2022

AppScrAPIng iMessage: Lanzando Spam-Malware a iPhone y MacOS

Como sabéis, durante este año hemos estado jugando con el (Web)ScrAPIng & Weaponizing de WhatsApp parar poder hacer todo tipo de cosas, incluidas las que tienen que ver con OSINT u APTs, que publicamos en la charla de WhatsApp Intelligence (WhatsINT) no hace mucho. Pero no solo se puede hacer con WhatsApp, y como somos unos amantes del Hacking de iPhone, queríamos hacer el mismo trabajo con iMessage.

Figura 1: AppScrAPIng iMessage: Lanzando Spam-Malware a iPhone y MacOS 

En este caso no se trataba de hacer un WebScraping Client-Side, porque no teníamos cliente Web de iMessage, así que, igual que hicimos con WhatsApp, nos planteamos hacer un AppScapping de iMessage, y luego convertir las funciones en APIs que pudieran ser consumidas por scripts para hacer hacking de iPhone, iPad o MacOS (MacOS Hacking),  aprovechando que iMessage se consume en todas esas plataformas de Apple.
Para ello, lo primero que queríamos era añadir la función de saber si un número de teléfono está asociado a una cuenta de iMessage, y así poder meterlo dentro de nuestra herramienta de OSINT de Dirty Business Card, que busca información de nombres, cuentas, direcciones de e-mail y números de teléfono de personas a partir de la información que hay en una tarjeta de visita.


Lo siguiente, como prueba de concepto rápido, era AppScrAPIficar la función de enviar mensajes desde una cuenta de iMessage asociada a nuestra API a un número concreto o a una lisa de números de teléfono. La gracia está en que, si ya sabemos que tiene asociado iMessage, se podría componer un mensaje más complejo. Eso sí, utilizando las opciones de la App, y de nuevo ScrAPIficadas.

Figura 4: Libros de Python para Pentesters y Hacking con Python
de Daniel Echeverri publicados en 0xWord.

Para hacer este trabajo, el equipo de Ideas Locas utilizó el cliente de iMessages en MacOS 12.5, nuestro querido Python 3.10 con la librería PyAutoGUI que permite controlar el ratón y el teclado, lo que nos serviría para automatizar, como si fuera un Test-Monkey las funciones que queríamos AppScrAPIficar

Figura 5: El funcionamiento simple a automatizar

Para saber si un número de teléfono tiene asociado iMessage, basta con componer un nuevo mensaje en el cliente de iMessage de MacOS 12.5, y dejar que el cliente haga la verificación por sí mismo y nos de el el color resultante. Mientras que está el icono del aspa, es que aún no se ha ejecutado la verificación, así que no hay respuesta concluyente.

Figura 6: Cliente en MacOS 12.5 consultando si el teléfono tiene iMessage

Una vez desaparece el icono del aspa, en el cliente de iMessage es bastante fácil descubrir si un usuario tiene o no asociado iMessage. En cada cliente se hace de una forma diferente, pero en el de MacOS es tan sencillo como que si el usuario tiene asociado iMessage, el fondo se pinta de color azul, mientras que si no lo tiene asociado, lo pinta de color rosadito.

Figura 7: Número de teléfono asociado a iMessage

Lo curioso de iMessage es que, Apple, saltándose todos los estándares de la GSMA, cuando un destinatario de un mensaje no tiene iMessage, hace una transición a SMS, cuando el el estándar que la GSMA ha pedido a todos los teléfonos móviles del mundo es RCS, pero... Apple y los estándares no ha sido precisamente su mejor asignatura.

Figura 8: Número de teléfono NO asociado a iMessage

Saber si un número de teléfono tiene asociado iMessage, RCS o simplemente un SMS, es una buena opción también para los servicios de comunicación o marketing, que pueden elegir qué formato es el más adecuado para cada uno de sus clientes.
En nuestro caso, el objetivo era simplemente poner API a un servicio que no lo tiene, mediante un proceso de AppScrAPIng. Y como punto final, automatizar el envío de una lista de mensajes a una lista de números, siguiente una lógica bastante sencilla. Si tiene iMessage le enviamos el mensaje. Listo.

Figura 10: Herramienta de Spam-APTs para iMessage

Para eso, creamos una herramienta muy sencilla que recibe un fichero con una lista de números de teléfono y un fichero con un mensaje a enviar. Se lanza, y el script en Python hace todo el trabajo que tiene que realizar.  

Figura 11: PoC de enviar "links malignos" por Spam-Imessage

El resultado es que, al final, como podéis ver en el vídeo, los mensajes se van enviando cuando el número  de teléfono tiene asociado el servicio de iMessages en Apple.  Aunque va más despacio, al igual que como los SMS, o como los RCS, se puede enviar Spam-Phishing, Spam-Malware, Spam-Exploits, etcétera. Y se pueden crear mensajes muy bonitos con iMessage, como veremos más adelante en otro artículo.
Apple, para luchar contra esto, le permite a los usuarios tres opciones de seguridad, que debes conocer si eres usuario de iPhone, o iMessage en iPad o MacOS. Son las siguientes:
  • Bloquear un número de teléfono: Si alguien te está enviando Spam, malware o mensajes molestos por iMessages, cuando bloqueas el número, dejará de poder comunicarse contigo.
  • Bloquear iMessages para NO contactos: Esto permite que solo te puedan enviar iMessage usuarios que estén en tu lista de contactos de iPhone.
Figura 13: Solo iMessage para contactos
  • Reportar un número como Spam: Igual que en RCS o en los servicios de Spam, puedes reportar que un número de teléfono ha estado enviado Spam, y los equipos de seguridad  de Apple lo revisarán. Nota, en cada versión de iOS se hace de una manera distinta.
En siguientes artículos os publicaremos más cosas curiosas que se pueden hacer con iMessage en Apple haciendo AppScrAPIficación. Además, puedes hacer algo similar a esto utilizando AppleScripts con iMessages.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


No hay comentarios:

Publicar un comentario