hacktricks/mobile-pentesting/ios-pentesting/ios-app-extensions.md

5.8 KiB

Extensiones de aplicaciones iOS

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Las extensiones de aplicaciones mejoran la funcionalidad de las aplicaciones al permitirles interactuar con otras aplicaciones o el sistema, proporcionando funciones o contenido personalizado. Estas extensiones incluyen:

  • Teclado personalizado: Ofrece un teclado único en todas las aplicaciones, reemplazando el teclado iOS predeterminado.
  • Compartir: Permite compartir en redes sociales o con otros directamente.
  • Hoy (Widgets): Proporciona 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 mediante un método específico.
  • Se permite el acceso a datos compartidos dentro de un contenedor privado, pero se restringe el acceso directo.
  • Algunas API, incluida HealthKit, están fuera de los límites de las extensiones de aplicaciones, que tampoco pueden iniciar tareas de larga duración, acceder a la cámara o al micrófono, excepto las 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 admitidos

Verifica el archivo Info.plist de una extensión para NSExtensionActivationRule para identificar los tipos de datos admitidos. Esta configuración garantiza que solo los tipos de datos compatibles activen la extensión en las aplicaciones anfitrionas.

Compartir datos

El intercambio de datos entre una aplicación y su extensión requiere un contenedor compartido, configurado mediante "Grupos de aplicaciones" y accedido a través de NSUserDefaults. Este espacio compartido es necesario para transferencias en segundo plano iniciadas por las extensiones.

Restricción de extensiones

Las aplicaciones pueden restringir ciertos tipos de extensiones, especialmente los 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: Engancha en NSExtensionContext - inputItems para ver los tipos de datos compartidos y sus orígenes.
  • Identificación de extensiones: Descubre qué extensiones procesan tus datos observando mecanismos internos, como NSXPCConnection.

Herramientas como frida-trace pueden ayudar a comprender los procesos subyacentes, especialmente para aquellos interesados en los detalles técnicos de la comunicación entre procesos.

Referencias

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!

Otras formas de apoyar a HackTricks: