jueves, febrero 02, 2023

macOS Hacking: Cómo automatizar el envío de iMessages con AppleScript

AppleScript es un lenguaje de programación desarrollado por Apple para automatizar tareas en macOS y en aplicaciones de Apple (y compatibles de terceros). Con AppleScript, los usuarios pueden crear scripts para automatizar tareas comunes como abrir aplicaciones, enviar correos electrónicos o modificar documentos de texto. Y también le puedes sacar partido para hacer algo de macOS Hacking.

Figura 1: macOS Hacking - Cómo automatizar el envío de iMessages con AppleScript
Imagen Dall-e 2 "happy hacker in Van Gogh style"

Lo que vamos a ver hoy difiere un poco del trabajo que hicimos con AppScrapping iMessages, donde lo que usamos es un modelo para APIficar al app de iMessages para poder utilizarla desde scripts de pentesting, como por ejemplo para saber si un número de teléfono estaba asociado a una cuenta de iMessages o no.
En el ejemplo de hoy, para interactuar con las distintas partes del sistema y las aplicaciones existen los llamados diccionarios. Los diccionarios son documentos especiales que contienen información sobre la sintaxis, los comandos y los objetos de una aplicación específica. Al utilizar estos diccionarios en conjunto con el editor de scripts de AppleScript, los desarrolladores pueden obtener información detallada sobre cómo interactuar con una aplicación en particular mediante scripts.

Figura 3: Libro de macOS Hacking en 0xWord

Los diccionarios de las aplicaciones son una herramienta muy valiosa para los desarrolladores ya que les proporciona información sobre los comandos y objetos disponibles para una aplicación específica. Esto es especialmente útil para aquellos que no están familiarizados con la estructura interna de una aplicación o que buscan documentación detallada sobre cómo utilizar una aplicación con AppleScript.

Figura 4: Algunos diccionarios posibles en las aplicaciones instaladas en macOS

Los diccionarios de aplicaciones están compuestos por cuatro elementos principales: comandos, clases, propiedades y elementos.
  • Los comandos: son acciones que se pueden realizar en una aplicación, como abrir una ventana o enviar un mensaje. Los comandos (se indican con una C dentro de un círculo azul) se pueden enviar a una aplicación mediante la sintaxis de "tell" de AppleScript.
  • Las clases: (se representan con una C dentro de un cuadrado morado) son tipos de objetos en una aplicación, como una ventana o un mensaje. Las clases proporcionan información sobre los objetos con los que se puede trabajar y las propiedades y comandos disponibles para esos objetos.
  • Las propiedades: (aparecen como una P dentro de un cuadrado morado) son características o valores de un objeto, como el título de una ventana o el contenido de un mensaje. Las propiedades se pueden leer y, en algunos casos, modificar.
  • Los elementos: (una E dentro de un cuadrado amarillo) son objetos individuales dentro de una clase, como una ventana específica o un mensaje específico. Los elementos se pueden seleccionar y trabajar mediante AppleScript.
En definitiva, los diccionarios, junto con el editor de scripts de AppleScript y otros diccionarios del sistema, hacen que sea fácil automatizar tareas y trabajar con aplicaciones en macOS.

Automatización de envío de iMessages con AppleScript

El diccionario de la aplicación de Mensajes de Apple para enviar iMessages proporciona información sobre la sintaxis, los comandos y los objetos disponibles para trabajar con la aplicación de Mensajes en AppleScript. Con este diccionario, los desarrolladores pueden automatizar tareas como enviar y recibir mensajes, gestionar chats y contactos, y realizar otras acciones en la aplicación de Mensajes.

Figura 5: Diccionario de la aplicación iMessage (que se usa también en iOS)

Para automatizar el envío de un mensaje a un usuario en particular con AppleScript, se podrá usar el comando "send" del objeto "message" del diccionario de la aplicación de Mensajes. El código sería algo similar a esto:
set messageBody to "Hola, ¿cómo estás?"
set recipient to "+1234567890"

tell application "Messages"
    set theBuddy to buddy recipient
    send messageBody to theBuddy
end tell
En este ejemplo, se establece el texto del mensaje como "Hola, ¿cómo estás?" y el destinatario como un número de teléfono (también podría ser una cuenta de email registrada). Luego, el script utiliza el comando "tell" para especificar que se está trabajando con la aplicación de Mensajes. Dentro del bloque "tell", se establece una variable para el destinatario del mensaje utilizando el comando "buddy", y, por último, se utiliza el comando "send" para enviar el mensaje.

Figura 6: Libro de Hacking iOS:iPhone & iPad (2ª Edición) en 0xWord de
Chema AlonsoIoseba PalopPablo González y Alejandro Ramos entre otros.

Hay que tener en cuenta que para enviar mensajes mediante este método es necesario que en el dispositivo se encuentre configurado el servicio de iMessage y se haya iniciado sesión en la cuenta de iMessage, ademas si el usuario a quien quieres mandar el mensaje no tiene configurado iMessage o no tiene una conexión activa no podrás mandarle el mensaje a menos que uses un método diferente, por ejemplo, SMS.

Integración con Python

Como ocurre con otros muchos proyectos, es posible trabajar conjuntamente con AppleScripts y Python. Para ello existen librerías como py-applescript o applescript.py que ayudan a realizar esta integración de manera sencilla. El siguiente ejemplo muestra el mismo código anterior pero adaptado a Python:

Figura 7: Código en Python para usar AppleScript en iMessages

Antes de su ejecución se debe instalar la librería applescript.py haciendo uso del comando pip
  • pip install applescript.
La variable r almacena el resultado de la ejecución, pudiendo acceder a r.code para obtener el código de salida (0 si se ha ejecutado bien), r.out para obtener el texto de salida (si lo hubiera, por ejemplo, al utilizar un AppleScript contra la terminal y lanzar un comando que muestre salida por pantalla), o r.error para obtener un mensaje de error en caso de que se produzca. Como puede verse, es bastante sencilla la integración con Python aunque esto no quita que sea necesario saber como se construyen los AppleScripts.

En definitiva, en macOS hay distintas formas para automatizar acciones, como Automator, los nuevos Atajos del sistema o los mencionados AppleScripts. Es cierto que para poder escribir AppleScripts hay que tener un mayor conocimiento técnico, así como conocer el lenguaje, la sintaxis y el uso de AppleScripts, pero también permite realizar acciones más complejas como la interacción con partes del sistema, aplicaciones nativas y aplicaciones de terceros compatibles.


No hay comentarios:

Entrada destacada

Tu Latch "Hack Your Innovation Contest": Haz un PoC & Hack por 1.000 €

El pasado Telefónica Innovation Day 2024 lanzamos oficialmente el " Tu Latch Hack Your Innovation Contest " en el que repartimos ...

Entradas populares