iOS UIPasteboard
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
El intercambio de datos dentro y entre aplicaciones en dispositivos iOS se facilita mediante el mecanismo UIPasteboard
, que se divide en dos categorías principales:
Portapapeles general del sistema: Este se utiliza para compartir datos con cualquier aplicación y está diseñado para persistir datos a través de reinicios del dispositivo y desinstalaciones de aplicaciones, una característica que está disponible desde iOS 10.
Portapapeles personalizados / nombrados: Estos son específicamente para compartir datos dentro de una aplicación o con otra aplicación que comparte el mismo ID de equipo, y no están diseñados para persistir más allá de la vida del proceso de la aplicación que los crea, siguiendo los cambios introducidos en iOS 10.
Consideraciones de seguridad juegan un papel significativo al utilizar portapapeles. Por ejemplo:
No hay un mecanismo para que los usuarios gestionen los permisos de las aplicaciones para acceder al portapapeles.
Para mitigar el riesgo de monitoreo no autorizado en segundo plano del portapapeles, el acceso se restringe a cuando la aplicación está en primer plano (desde iOS 9).
Se desaconseja el uso de portapapeles nombrados persistentes a favor de contenedores compartidos debido a preocupaciones de privacidad.
La función Portapapeles Universal introducida con iOS 10, que permite compartir contenido entre dispositivos a través del portapapeles general, puede ser gestionada por los desarrolladores para establecer la expiración de datos y deshabilitar la transferencia automática de contenido.
Asegurarse de que la información sensible no se almacene inadvertidamente en el portapapeles global es crucial. Además, las aplicaciones deben diseñarse para prevenir el uso indebido de los datos del portapapeles global para acciones no intencionadas, y se alienta a los desarrolladores a implementar medidas para evitar la copia de información sensible al portapapeles.
Para el análisis estático, busque en el código fuente o binario:
generalPasteboard
para identificar el uso del portapapeles general del sistema.
pasteboardWithName:create:
y pasteboardWithUniqueName
para crear portapapeles personalizados. Verifique si la persistencia está habilitada, aunque esto está en desuso.
El análisis dinámico implica enganchar o rastrear métodos específicos:
Monitorear generalPasteboard
para el uso general.
Rastrear pasteboardWithName:create:
y pasteboardWithUniqueName
para implementaciones personalizadas.
Observar las llamadas al método setPersistent:
en desuso para verificar la configuración de persistencia.
Detalles clave a monitorear incluyen:
Nombres de portapapeles y contenidos (por ejemplo, verificar cadenas, URLs, imágenes).
Número de elementos y tipos de datos presentes, aprovechando las verificaciones de tipos de datos estándar y personalizados.
Opciones de expiración y solo local inspeccionando el método setItems:options:
.
Un ejemplo del uso de herramientas de monitoreo es el monitor de portapapeles de objection, que consulta el generalPasteboard cada 5 segundos en busca de cambios y muestra los nuevos datos.
Aquí hay un ejemplo simple de script en JavaScript, inspirado en el enfoque de objection, para leer y registrar cambios del portapapeles cada 5 segundos:
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)