iOS Testing Environment
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)
Programa de Desarrolladores de Apple
Una identidad de aprovisionamiento es una colección de claves públicas y privadas que están asociadas a una cuenta de desarrollador de Apple. Para firmar aplicaciones necesitas 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 para hacer esto es usar 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 nuevo ID de Aplicación con tus credenciales) --> Haz clic en el ID de Apple creado --> Administrar Certificados --> + (Desarrollo de Apple) --> Listo __Luego, para ejecutar tu aplicación en tu iPhone, primero necesitas indicar 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. Así que ve a Configuración --> General --> Perfiles y Gestión de Dispositivos --> Selecciona el perfil no confiable y haz clic en "Confiar".
Ten en cuenta que las aplicaciones firmadas por 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
Ten en cuenta que un simulador no es lo mismo que un emulador. El simulador solo simula el comportamiento del dispositivo y las funciones, pero no las utiliza realmente.
Simulador
Lo primero que necesitas saber es que realizar un pentest dentro de un simulador será mucho más limitado que hacerlo en un dispositivo con jailbreak.
Todas las herramientas necesarias para construir y soportar una aplicación de iOS son solo oficialmente soportadas en Mac OS. La herramienta de facto de Apple para crear/debuggear/instrumentar aplicaciones de iOS es Xcode. Se puede usar para descargar otros componentes como simuladores y diferentes versiones de SDK requeridas 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/<username>/Library/Developer/CoreSimulator/Devices
Para abrir el simulador, ejecuta Xcode, luego presiona en la pestaña de Xcode --> Abrir herramientas de desarrollador --> Simulador __En la siguiente imagen, al hacer clic en "iPod touch [...]" puedes seleccionar otro dispositivo para probar:
Aplicaciones en el Simulador
Dentro de /Users/<username>/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:
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í. Necesitas 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 SaaS empresarial con un modelo de licencia por usuario y no ofrece ninguna licencia de prueba.
No se necesita Jailbreak
Consulta esta publicación de blog sobre cómo hacer pentesting a una aplicación de iOS en un dispositivo no jailbroken: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Jailbreaking
Apple requiere 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 eludir tales restricciones y otros controles de seguridad impuestos por el sistema operativo. Por lo tanto, una vez que el dispositivo está jailbroken, la verificación de integridad que es responsable de verificar las aplicaciones instaladas se parchea, por lo que es eludida.
A diferencia de Android, no puedes cambiar a "Modo Desarrollador" en iOS para ejecutar código no firmado/no confiable en el dispositivo.
Rooting de Android vs. Jailbreaking de iOS
Aunque a menudo se comparan, rooting en Android y jailbreaking en iOS son procesos fundamentalmente diferentes. Rootear dispositivos Android puede implicar instalar el binario su
o reemplazar el sistema con un ROM personalizado con root, lo que no necesariamente requiere exploits si el bootloader está desbloqueado. Flashear ROMs personalizados reemplaza el sistema operativo del dispositivo después de desbloquear el bootloader, a veces requiriendo un exploit.
En contraste, los dispositivos iOS no pueden flashear ROMs personalizados debido a la restricción del bootloader de solo arrancar imágenes firmadas por Apple. Jailbreaking iOS tiene como objetivo eludir las protecciones de firma de código de Apple para ejecutar código no firmado, un proceso complicado por las continuas mejoras de seguridad de Apple.
Desafíos del Jailbreaking
Jailbreaking iOS es cada vez más difícil ya que Apple parchea las vulnerabilidades rápidamente. Downgrading iOS solo es posible por un tiempo limitado después de un lanzamiento, lo que hace que el jailbreaking sea un asunto sensible al tiempo. Los dispositivos utilizados para pruebas de seguridad no deben actualizarse a menos que se garantice el re-jailbreaking.
Las actualizaciones de iOS están controladas por un mecanismo de desafío-respuesta (blobs SHSH), permitiendo la instalación solo para respuestas firmadas por Apple. Este mecanismo, conocido como "ventana de firma", limita la capacidad de almacenar y usar más tarde paquetes de firmware OTA. El sitio web de descargas IPSW es un recurso para verificar las ventanas de firma actuales.
Variedades de Jailbreak
Jailbreaks tethered requieren una conexión a computadora para cada reinicio.
Jailbreaks semi-tethered permiten arrancar en modo no jailbroken sin una computadora.
Jailbreaks semi-untethered requieren re-jailbreaking manual sin necesidad de una computadora.
Jailbreaks untethered ofrecen una solución de jailbreak permanente sin necesidad de re-aplicación.
Herramientas y Recursos de Jailbreaking
Las herramientas de jailbreaking varían según la versión de iOS y el dispositivo. Recursos como ¿Puedo hacer Jailbreak?, The iPhone Wiki y Reddit Jailbreak proporcionan información actualizada. Ejemplos incluyen:
Checkra1n para dispositivos con chip A7-A11.
Palera1n para dispositivos Checkm8 (A8-A11) en iOS 15.0-16.5.
Unc0ver para versiones de iOS hasta 14.8.
Modificar tu dispositivo conlleva riesgos, y el jailbreaking debe abordarse con precaución.
Beneficios y Riesgos del Jailbreaking
El jailbreaking elimina el sandboxing impuesto por el sistema operativo, permitiendo que las aplicaciones accedan a todo el sistema de archivos. Esta libertad permite la instalación de aplicaciones no aprobadas y el acceso a más APIs. Sin embargo, para los usuarios regulares, el jailbreaking no se recomienda debido a los posibles riesgos de seguridad y la inestabilidad del dispositivo.
Después del Jailbreaking
iOS Basic Testing OperationsDetección de Jailbreak
Varias aplicaciones intentarán detectar si el móvil está jailbroken y en ese caso la aplicación no se ejecutará
Después de hacer jailbreak a un iOS, archivos y carpetas suelen ser instalados, estos pueden ser buscados para determinar si el dispositivo está jailbroken.
En un dispositivo jailbroken, las aplicaciones obtienen acceso de lectura/escritura a nuevos archivos fuera del sandbox.
Algunas llamadas de 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 el jailbreaking aquí.
Puedes intentar evitar estas detecciones usando objection's ios jailbreak disable
Bypass de Detección de Jailbreak
Puedes intentar evitar estas detecciones usando objection's
ios jailbreak disable
También podrías instalar la herramienta Liberty Lite (https://ryleyangus.com/repo/). Una vez que se agregue el repositorio, la aplicación debería aparecer en la pestaña ‘Buscar’
Referencias
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)
Last updated