Jailbreak y Seguridad en iOS
El jailbreak es un proceso que elimina las restricciones de iOS impuestas por Apple, proporcionando acceso de superusuario (root) al sistema y permitiendo ejecutar código no firmado. Para un bug hunter, disponer de un dispositivo jailbreak ofrece un entorno de pruebas ampliado, donde analizar el comportamiento de las aplicaciones, inspeccionar el sandbox y evadir protecciones estándar.
1. Tipos de Jailbreak
Untethered: el dispositivo permanece jailbreakeado tras cada reinicio sin necesidad de conectar al equipo.
Tethered: requiere conexión al ordenador para arrancar en modo jailbreak cada vez que se reinicia.
Semi-untethered: el jailbreak persiste tras reinicio, pero la reactivación de funciones de jailbreak necesita ejecución de una app o herramienta en el dispositivo.
Semi-tethered: el dispositivo arranca sin jailbreak tras un reinicio; para reactivar, debe conectarse a un ordenador.
2. Herramientas Populares
checkra1n: usa vulnerabilidad de bootrom basada en checkm8; soporta dispositivos A5–A11.
unc0ver: compatible con versiones recientes de iOS (12–15.x); semi-untethered.
Taurine: jailbreak semi-untethered para iOS 14–15, basado en Odyssey Team.
Chimera: soporta iOS 12, con Sileo como gestor de paquetes.
3. Beneficios de Jailbreak para Pentesting
Acceso completo al sistema de archivos: permite inspeccionar carpetas de aplicación, preferences y bases de datos.
Desactivación de protecciones: bypass de code signing, deshabilitar ASLR y desactivar SIP en dispositivos de desarrollo.
Instalación de herramientas nativas: Frida-server, Cycript, tcpdump, mitmproxy directamente en iOS.
Inspección de procesos: uso de LLDB o lsof para listar procesos y puertos abiertos.
4. Configuración del Entorno Jailbreakeado
Instalar Cydia o Sileo como gestor de paquetes.
Añadir repositorios necesarios (por ejemplo,
https://apt.thebigboss.org/repofiles/cydia/
).Instalar herramientas:
OpenSSH: acceso remoto al dispositivo.
Darwin CC Tools: incluye otool, nm, strings.
Frida-server: instrumentación dinámica.
ldid: firma de binarios en el dispositivo.
Transferir Frida-server:
scp frida-server root@<IP>:/usr/sbin/
ssh root@<IP> "chmod +x /usr/sbin/frida-server && /usr/sbin/frida-server &"
5. Inspección del Sandbox y Sistema de Archivos
Ruta de sandbox de la app:
/var/mobile/Containers/Data/Application/<APP-UUID>/
Buscar datos sensibles:
find /var/mobile/Containers/Data/Application/<APP-UUID>/ -type f \
-exec grep -Il "password\|token\|key" {} \;
Examinar preferencias:
plutil -p /var/mobile/Containers/Data/Application/<APP-UUID>/Library/Preferences/*.plist
Listar puertos abiertos y procesos:
lsof -i
ps aux | grep <AppName>
6. Evadiendo Protecciones en iOS
Bypass de Code Signing: usar
ldid
para resignar binarios modificados.Deshabilitar ASLR: parchear dyld_shared_cache o usar tweak con MobileSubstrate.
Desactivar Sandbox: instalar tweak como
sandbox-patcher
disponible en Cydia.Saltar certificate pinning: con Frida inyectar hook en
NSURLSession
o librerías de pinning.
7. Uso de Frida para Privilegios Elevados
Iniciar Frida-server en modo root.
Conectar desde el host:
frida-ps -U # listar procesos
frida -U -n MyApp # inyectar script en MyApp
Ejemplo de script (bypass SSL pinning):
ObjC.classes.NSURLSessionConfiguration.sharedSessionConfiguration. \
setAllowsExpensiveNetworkAccess.implementation = function(flag) {
return true;
};
8. Consideraciones de Seguridad y Legalidad
Uso responsable: realizar jailbreak únicamente en dispositivos de prueba o con autorización.
Impacto de actualizaciones: Apple corrige vulnerabilidades que usan jailbreak; mantén herramientas actualizadas.
Riesgos iniciales: el jailbreak puede desestabilizar el dispositivo; realizar backups antes de empezar.
Este apunte ofrece una guía práctica para configurar y explotar un entorno jailbreak en iOS, esencial para un análisis profundo y la identificación de vulnerabilidades que no son accesibles en un dispositivo estándar.
Última actualización