hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

16 KiB

Entorno de Pruebas de iOS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Programa de Desarrolladores de Apple

Una identidad de aprovisionamiento es una colección de claves públicas y privadas asociadas a una cuenta de desarrollador de Apple. Para firmar aplicaciones, debes pagar 99$/año para registrarte en el Programa de Desarrolladores de Apple y obtener tu identidad de aprovisionamiento. Sin esto, no podrás ejecutar aplicaciones desde el código fuente en un dispositivo físico. Otra opción es utilizar un dispositivo con jailbreak.

A partir de Xcode 7.2, Apple ha proporcionado una opción para crear un perfil de aprovisionamiento de desarrollo de iOS gratuito que permite escribir y probar tu aplicación en un iPhone real. Ve a Xcode --> Preferencias --> Cuentas --> + (Agregar nueva ID de aplicación con tus credenciales) --> Haz clic en la ID de Apple creada --> Gestionar certificados --> + (Desarrollo de Apple) --> Hecho
__Luego, para ejecutar tu aplicación en tu iPhone, primero debes indicarle al iPhone que confíe en la computadora. Luego, puedes intentar ejecutar la aplicación en el móvil desde Xcode, pero aparecerá un error. Entonces ve a Configuración --> General --> Perfiles y administración de dispositivos --> Selecciona el perfil no confiable y haz clic en "Confiar".

Ten en cuenta que las aplicaciones firmadas con el mismo certificado de firma pueden compartir recursos de manera segura, como elementos del llavero.

Los perfiles de aprovisionamiento se almacenan dentro del teléfono en /Library/MobileDevice/ProvisioningProfiles

Simulador

{% hint style="info" %} Ten en cuenta que un simulador no es lo mismo que un emulador. El simulador solo simula el comportamiento del dispositivo y sus funciones, pero no las utiliza realmente. {% endhint %}

El simulador del SDK de iOS ofrece una simulación de nivel superior de un dispositivo iOS. Lo más importante es que los binarios del emulador se compilan en código x86 en lugar de código ARM. Las aplicaciones compiladas para un dispositivo real no se ejecutan, lo que hace que el simulador sea inútil para el análisis de caja negra y la ingeniería inversa.

Simulador

Lo primero que debes saber es que realizar una prueba de penetración dentro de un simulador será mucho más limitado que hacerlo en un dispositivo con jailbreak.

Todas las herramientas necesarias para construir y admitir una aplicación de iOS solo son oficialmente compatibles en Mac OS.
La herramienta de facto de Apple para crear/depurar/instrumentar aplicaciones de iOS es Xcode. Se puede utilizar para descargar otros componentes como simuladores y diferentes versiones de SDK necesarios para construir y probar tu aplicación.
Se recomienda encarecidamente descargar Xcode desde la tienda de aplicaciones oficial. Otras versiones pueden contener malware.

Los archivos del simulador se pueden encontrar en /Users/<nombre de usuario>/Library/Developer/CoreSimulator/Devices

Para abrir el simulador, ejecuta Xcode, luego presiona en la pestaña Xcode --> Abrir herramientas de desarrollo --> Simulador
__En la siguiente imagen, al hacer clic en "iPod touch [...]", puedes seleccionar otro dispositivo para probar:

Aplicaciones en el Simulador

Dentro de /Users/<nombre de usuario>/Library/Developer/CoreSimulator/Devices, puedes encontrar todos los simuladores instalados. Si deseas acceder a los archivos de una aplicación creada dentro de uno de los emuladores, puede ser difícil saber en cuál está instalada la aplicación. Una forma rápida de encontrar el UID correcto es ejecutar la aplicación en el simulador y ejecutar:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Una vez que conozcas el UID, las aplicaciones instaladas dentro de él se pueden encontrar en /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application.

Sin embargo, sorprendentemente no encontrarás la aplicación aquí. Debes acceder a /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/.

Y en esta carpeta puedes encontrar el paquete de la aplicación.

Emulador

Corellium es el único emulador de iOS disponible públicamente. Es una solución empresarial de SaaS con un modelo de licencia por usuario y no ofrece ninguna licencia de prueba.

Jailbreaking

Apple exige estrictamente que el código que se ejecuta en el iPhone debe estar firmado por un certificado emitido por Apple. Jailbreaking es el proceso de sortear activamente estas restricciones y otros controles de seguridad establecidos por el sistema operativo. Por lo tanto, una vez que el dispositivo está jailbroken, la verificación de integridad que se encarga de verificar las aplicaciones instaladas se parchea y se bypassa.

{% hint style="info" %} A diferencia de Android, no puedes cambiar al "Modo de desarrollador" en iOS para ejecutar código no firmado/no confiable en el dispositivo. {% endhint %}

Comparación con el acceso root en Android

El jailbreaking de iOS se compara a menudo con el acceso root en Android, pero el proceso es en realidad bastante diferente. Para explicar la diferencia, primero revisaremos los conceptos de "rooting" y "flashing" en Android.

  • Rooting: Esto generalmente implica instalar el binario su en el sistema o reemplazar todo el sistema con una ROM personalizada con acceso root. No se requieren exploits para obtener acceso root siempre que el gestor de arranque sea accesible.
  • Flashing de ROMs personalizadas: Esto te permite reemplazar el sistema operativo que se ejecuta en el dispositivo después de desbloquear el gestor de arranque. El gestor de arranque puede requerir un exploit para desbloquearlo.

En los dispositivos iOS, es imposible flashear una ROM personalizada porque el gestor de arranque de iOS solo permite el arranque y el flasheo de imágenes firmadas por Apple. Es por eso que incluso las imágenes oficiales de iOS no se pueden instalar si no están firmadas por Apple, y esto hace que las versiones anteriores de iOS solo sean posibles mientras la versión anterior de iOS aún esté firmada.

El propósito del jailbreaking es desactivar las protecciones de iOS (especialmente los mecanismos de firma de código de Apple) para que se pueda ejecutar código no firmado arbitrario en el dispositivo (por ejemplo, código personalizado o descargado de tiendas de aplicaciones alternativas como Cydia o Sileo). La palabra "jailbreak" es una referencia coloquial a las herramientas todo en uno que automatizan el proceso de desactivación.

Consideraciones sobre el jailbreaking

El jailbreaking de un dispositivo iOS se está volviendo cada vez más complicado porque Apple sigue fortaleciendo el sistema y parcheando las vulnerabilidades explotadas. El jailbreaking se ha convertido en un procedimiento muy sensible al tiempo porque Apple deja de firmar estas versiones vulnerables relativamente pronto después de lanzar una corrección (a menos que el jailbreak se beneficie de vulnerabilidades basadas en hardware, como el exploit limera1n que afecta al BootROM del iPhone 4 y el iPad 1). Esto significa que no puedes volver a una versión específica de iOS una vez que Apple deja de firmar el firmware.

Si tienes un dispositivo jailbroken que utilizas para pruebas de seguridad, consérvalo tal como está a menos que estés 100% seguro de que puedes volver a hacerle jailbreak después de actualizar a la última versión de iOS.

Las actualizaciones de iOS se basan en un proceso de desafío-respuesta (generando los llamados SHSH blobs como resultado). El dispositivo solo permitirá la instalación del sistema operativo si la respuesta al desafío está firmada por Apple. Esto es lo que los investigadores llaman una "ventana de firma", y es la razón por la cual no puedes simplemente almacenar el paquete de firmware OTA que descargaste y cargarlo en el dispositivo cuando quieras. Durante las actualizaciones menores de iOS, es posible que Apple firme dos versiones (la más reciente y la versión anterior). Esta es la única situación en la que puedes volver a una versión anterior de iOS. Puedes verificar la ventana de firma actual y descargar el firmware OTA desde el sitio web de IPSW Downloads.

{% hint style="danger" %} Actualizar el sistema operativo elimina el efecto del jailbreaking. {% endhint %}

Tipos de jailbreak

  • Los jailbreaks tethered no persisten después de reiniciar, por lo que es necesario conectar (tether) el dispositivo a una computadora en cada reinicio para volver a aplicar el jailbreak. El dispositivo puede no reiniciarse en absoluto si no está conectado a la computadora.
  • Los jailbreaks semi-tethered no se pueden volver a aplicar a menos que el dispositivo esté conectado a una computadora durante el reinicio. El dispositivo también puede arrancar en modo sin jailbreak por sí solo.
  • Los jailbreaks semi-untethered permiten que el dispositivo arranque por sí solo, pero los parches del kernel (o las modificaciones en el espacio de usuario) para deshabilitar la firma de código no se aplican automáticamente. El usuario debe volver a hacerle jailbreak al dispositivo iniciando una aplicación o visitando un sitio web (sin necesidad de una conexión a una computadora, de ahí el término untethered).
  • Los jailbreaks untethered son la opción más popular para los usuarios finales porque solo necesitan aplicarse una vez, después de lo cual el dispositivo estará permanentemente jailbroken.

Herramientas de jailbreaking

Diferentes versiones de iOS requieren técnicas de jailbreaking diferentes. Determina si hay un jailbreak público disponible para tu versión de iOS. Ten cuidado con las herramientas falsas y el spyware, que a menudo se esconden detrás de nombres de dominio similares al nombre del grupo/autor del jailbreak.

Ejemplos de versiones:

  • Checkra1n: Funciona en dispositivos con el chip A7 y tan nuevos como el chip A11, por ejemplo, iPhone 5S hasta iPhone X.
  • Palera1n: Dispositivos Checkm8 (A8-A11) en iOS 15.0-16.5.
  • Unc0ver: Solo funciona para versiones de iOS hasta 14.8, ya que Apple parcheó los problemas que permitían que Unc0ver se ejecutara.

La escena del jailbreak de iOS evoluciona tan rápidamente que proporcionar instrucciones actualizadas es difícil. Sin embargo, podemos señalarte algunas fuentes que son actualmente confiables:

Ten en cuenta que cualquier modificación que realices en tu dispositivo es bajo tu propio riesgo. Si bien el jailbreaking suele ser seguro, las cosas pueden salir mal y puedes terminar bloqueando tu dispositivo. Ninguna otra parte, excepto tú mismo, puede ser considerada responsable de cualquier daño.

Beneficios

El efecto secundario más importante de hacer Jailbreak es que elimina cualquier aislamiento de seguridad establecido por el sistema operativo. Por lo tanto, cualquier aplicación en el dispositivo puede leer cualquier archivo en el sistema de archivos, incluyendo archivos de otras aplicaciones, cookies y el llavero.

Un dispositivo con Jailbreak permite a los usuarios instalar aplicaciones no aprobadas y aprovechar más APIs, a las cuales no se puede acceder de otra manera.

{% hint style="warning" %} No se recomienda hacer Jailbreak en el dispositivo móvil para usuarios regulares {% endhint %}

Después de hacer Jailbreak

{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}

Detección de Jailbreak

Varias aplicaciones intentarán detectar si el dispositivo móvil tiene Jailbreak y, en ese caso, la aplicación no se ejecutará

  • Después de hacer Jailbreak en un dispositivo iOS, generalmente se instalan archivos y carpetas, los cuales se pueden buscar para determinar si el dispositivo tiene Jailbreak.
  • En un dispositivo con Jailbreak, las aplicaciones obtienen acceso de lectura/escritura a nuevos archivos fuera del aislamiento de seguridad.
  • Algunas llamadas a API se comportarán de manera diferente
  • La presencia del servicio OpenSSH
  • Llamar a /bin/sh devolverá 1 en lugar de 0

Más información sobre cómo detectar Jailbreak aquí.

Puedes intentar evitar estas detecciones utilizando la opción ios jailbreak disable de objection.

Bypass de Detección de Jailbreak

  • Puedes intentar evitar estas detecciones utilizando la opción ios jailbreak disable de objection.
  • También puedes instalar la herramienta Liberty Lite (https://ryleyangus.com/repo/). Una vez que se haya agregado el repositorio, la aplicación debería aparecer en la pestaña de 'Búsqueda'
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥