Extensiones de Aplicaciones iOS
Reading time: 3 minutes
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.
Las extensiones de aplicaciones mejoran la funcionalidad de las aplicaciones al permitirles interactuar con otras aplicaciones o el sistema, proporcionando características o contenido personalizados. Estas extensiones incluyen:
- Teclado Personalizado: Ofrece un teclado único en todas las aplicaciones, reemplazando el teclado predeterminado de iOS.
- Compartir: Permite compartir en redes sociales o con otros directamente.
- Hoy (Widgets): Entrega contenido o realiza tareas rápidamente desde la vista Hoy del Centro de Notificaciones.
Cuando un usuario interactúa con estas extensiones, como compartir texto desde una aplicación anfitriona, la extensión procesa esta entrada dentro de su contexto, aprovechando la información compartida para realizar su tarea, como se detalla en la documentación de Apple.
Consideraciones de Seguridad
Los aspectos clave de seguridad incluyen:
- Las extensiones y sus aplicaciones contenedoras se comunican a través de comunicación entre procesos, no directamente.
- El widget Hoy es único en que puede solicitar que su aplicación se abra a través de un método específico.
- El acceso a datos compartidos está permitido dentro de un contenedor privado, pero el acceso directo está restringido.
- Ciertas API, incluyendo HealthKit, están prohibidas para las extensiones de aplicaciones, que tampoco pueden iniciar tareas de larga duración, acceder a la cámara o al micrófono, excepto para extensiones de iMessage.
Análisis Estático
Identificación de Extensiones de Aplicaciones
Para encontrar extensiones de aplicaciones en el código fuente, busca NSExtensionPointIdentifier
en Xcode o inspecciona el paquete de la aplicación en busca de archivos .appex
que indiquen extensiones. Sin código fuente, utiliza grep o SSH para localizar estos identificadores dentro del paquete de la aplicación.
Tipos de Datos Soportados
Revisa el archivo Info.plist
de una extensión para NSExtensionActivationRule
para identificar los tipos de datos soportados. Esta configuración asegura que solo los tipos de datos compatibles activen la extensión en las aplicaciones anfitrionas.
Compartición de Datos
La compartición de datos entre una aplicación y su extensión requiere un contenedor compartido, configurado a través de "Grupos de Aplicaciones" y accesible a través de NSUserDefaults
. Este espacio compartido es necesario para transferencias en segundo plano iniciadas por extensiones.
Restricción de Extensiones
Las aplicaciones pueden restringir ciertos tipos de extensiones, particularmente teclados personalizados, asegurando que el manejo de datos sensibles se alinee con los protocolos de seguridad.
Análisis Dinámico
El análisis dinámico implica:
- Inspeccionar Elementos Compartidos: Engancharse a
NSExtensionContext - inputItems
para ver tipos de datos y orígenes compartidos. - Identificación de Extensiones: Descubrir qué extensiones procesan tus datos observando mecanismos internos, como
NSXPCConnection
.
Herramientas como frida-trace
pueden ayudar a entender los procesos subyacentes, especialmente para aquellos interesados en los detalles técnicos de la comunicación entre procesos.
Referencias
- https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/
tip
Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a HackTricks y HackTricks Cloud repos de github.