iOS Pentesting without Jailbreak
Reading time: 5 minutes
tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
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.
Idea principal
Las aplicaciones firmadas con el derecho get_task_allow
permiten que aplicaciones de terceros ejecuten una función llamada task_for_pid()
con el ID de proceso de la aplicación inicial como argumento para obtener el puerto de tarea sobre ella (poder controlarla y acceder a su memoria).
Sin embargo, no es tan fácil como simplemente extraer el IPA, volver a firmarlo con el derecho y cargarlo de nuevo en tu dispositivo. Esto se debe a la protección FairPlay. Cuando la firma de la aplicación cambia, la clave DRM (Gestión de Derechos Digitales) es invalidada y la aplicación no funcionará.
Con un dispositivo antiguo con jailbreak, es posible instalar el IPA, desencriptarlo usando tu herramienta favorita (como Iridium o frida-ios-dump) y extraerlo del dispositivo. Aunque, si es posible, se recomienda pedir al cliente el IPA desencriptado.
Obtener IPA desencriptado
Obtenerlo de Apple
- Instala la aplicación a pentest en el iPhone.
- Instala y lanza Apple Configurator en tu macos.
- Abre
Terminal
en tu Mac y navega a/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
. El IPA aparecerá en esta carpeta más tarde. - Deberías ver tu dispositivo iOS. Haz doble clic en él y luego haz clic en Agregar + → Aplicaciones en la barra de menú superior.
- Después de hacer clic en Agregar, Configurator descargará el IPA de Apple e intentará enviarlo a tu dispositivo. Si seguiste mi recomendación anterior e instalaste el IPA ya, aparecerá un aviso pidiéndote que reinstales la aplicación.
- El IPA debería descargarse dentro de
/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
desde donde puedes obtenerlo.
Consulta https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed para obtener información más detallada sobre este proceso.
Desencriptar la aplicación
Para desencriptar el IPA, vamos a instalarlo. Sin embargo, si tienes un iPhone antiguo con jailbreak, potencialmente su versión no será compatible con la aplicación, ya que generalmente las aplicaciones solo soportan las versiones más recientes.
Así que, para instalarlo, simplemente descomprime el IPA:
unzip redacted.ipa -d unzipped
Verifica el Info.plist
para la versión mínima soportada y si tu dispositivo es más antiguo que eso, cambia el valor para que sea compatible.
Comprime de nuevo el IPA:
cd unzipped
zip -r ../no-min-version.ipa *
Luego, instala el IPA, por ejemplo, con:
ideviceinstaller -i no-min-version.ipa -w
Nota que podrías necesitar AppSync Unified tweak de Cydia para prevenir cualquier error de firma inválida
.
Una vez instalado, puedes usar Iridium tweak de Cydia para obtener el IPA descifrado.
Parchear derechos y volver a firmar
Para volver a firmar la aplicación con el derecho get-task-allow
, hay varias herramientas disponibles como app-signer
, codesign
e iResign
. app-signer
tiene una interfaz muy amigable que permite volver a firmar un archivo IPA de manera muy sencilla, indicando el IPA a volver a firmar, ponerlo en get-task-allow
y el certificado y perfil de aprovisionamiento a utilizar.
En cuanto al certificado y los perfiles de firma, Apple ofrece perfiles de firma de desarrollador gratuitos para todas las cuentas a través de Xcode. Solo crea una aplicación y configura uno. Luego, configura el iPhone para confiar en las aplicaciones de desarrollador navegando a Settings
→ Privacy & Security
, y haz clic en Developer Mode
.
Con el IPA vuelto a firmar, es hora de instalarlo en el dispositivo para realizar la prueba de penetración:
ideviceinstaller -i resigned.ipa -w
Hook
Podrías enganchar tu aplicación fácilmente usando herramientas comunes como frida y objection:
objection -g [your app bundle ID] explore
Referencias
tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
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.