12 KiB
iOS Testing Environment
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Apple Developer Program
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 Apple Developer Program 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 --> Preferences --> Accounts --> + (Agregar nuevo Apple ID con tus credenciales) --> Haz clic en el Apple ID creado --> Manage Certificates --> + (Desarrollo de Apple) --> Done
__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 Settings --> General --> Profiles and Device Management --> Selecciona el perfil no confiable y haz clic en "Trust".
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
Simulator
{% 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 las funciones, pero no las utiliza realmente. {% endhint %}
Simulator
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 --> Open Developer tools --> Simulator
__En la siguiente imagen, al hacer clic en "iPod touch [...]" puedes seleccionar otro dispositivo para probar:
Applications in the Simulator
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:
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í. 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.
Jailbeaking
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 que se instalan está parcheada, por lo que es eludida.
{% hint style="info" %} A diferencia de Android, no puedes cambiar a "Modo Desarrollador" en iOS para ejecutar código no firmado/no confiable en el dispositivo. {% endhint %}
Android Rooting vs. iOS Jailbreaking
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 atados requieren una conexión a computadora para cada reinicio.
- Jailbreaks semi-atados permiten arrancar en modo no jailbroken sin una computadora.
- Jailbreaks semi-desatados requieren re-jailbreaking manual sin necesidad de una computadora.
- Jailbreaks desatados 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
{% 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 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
.
Evasión 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
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
{% hint style="success" %}
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)
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 los HackTricks y HackTricks Cloud repositorios de github.