Análisis de Seguridad de Aplicaciones iOS con Objection
Cuándo Usarlo
Utiliza este skill cuando:
- Realices evaluaciones de seguridad en tiempo de ejecución de aplicaciones iOS durante pruebas de penetración autorizadas.
- Inspecciones el llavero de iOS, el sistema de archivos y la memoria para detectar exposición de datos sensibles.
- Eludas controles de seguridad del lado del cliente (SSL Pinning, detección de jailbreak) durante pruebas de seguridad.
- Evalúes el comportamiento de una aplicación iOS en tiempo de ejecución sin acceso al código fuente.
No uses este skill en dispositivos de producción sin autorización explícita: Objection modifica el comportamiento de la aplicación en tiempo de ejecución y puede activar sistemas de monitoreo de seguridad.
Requisitos Previos
- Python 3.10+ con pip
- Objection instalado:
pip install objection - Frida instalado:
pip install frida-tools - Dispositivo iOS de destino (jailbroken con servidor Frida, o no jailbroken con IPA reempaquetado)
- Para dispositivos no jailbroken:
objection patchipapara inyectar el gadget de Frida en el IPA - macOS recomendado para pruebas iOS (Xcode, ideviceinstaller)
- Conexión USB al dispositivo de destino o servidor Frida en red
Flujo de Trabajo
Paso 1: Preparar el Entorno de Pruebas
Para dispositivos jailbroken:
# Instalar el servidor Frida en el dispositivo a través de Cydia/Sileo
# Conectarse por SSH al dispositivo e iniciar el servidor Frida
ssh root@<ip_dispositivo> "/usr/sbin/frida-server -D"
# Verificar la conectividad con Frida
frida-ps -U # Listar procesos en dispositivo conectado por USB
Para dispositivos no jailbroken (pruebas autorizadas):
# Parchear el IPA con Frida Gadget
objection patchipa --source destino.ipa --codesign-signature "Apple Development: [email protected]"
# Instalar el IPA parcheado
ideviceinstaller -i destino-parcheado.ipa
Paso 2: Adjuntar Objection a la Aplicación de Destino
# Adjuntarse a una aplicación en ejecución por su ID de paquete
objection --gadget "com.aplicacion.destino" explore
# O iniciar la aplicación desde cero
objection --gadget "com.aplicacion.destino" explore --startup-command "ios hooking list classes"
Una vez adjuntado, Objection proporciona un REPL interactivo para la exploración en tiempo de ejecución.
Paso 3: Evaluar la Seguridad del Almacenamiento de Datos (MASVS-STORAGE)
# Volcar elementos del llavero de iOS accesibles por la aplicación
ios keychain dump
# Listar archivos en la sandbox de la aplicación
ios plist cat Info.plist
env # Mostrar rutas de entorno de la aplicación
# Inspeccionar NSUserDefaults en busca de datos sensibles
ios nsuserdefaults get
# Listar bases de datos SQLite
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Verificar datos sensibles en el portapapeles
ios pasteboard monitor
Paso 4: Evaluar la Seguridad de la Red (MASVS-NETWORK)
# Deshabilitar el anclaje de certificados SSL/TLS
ios sslpinning disable
# Verificar que el anclaje se ha eludido observando el tráfico en el proxy Burp Suite
# Monitorear llamadas a métodos de clase relacionados con la red
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
Paso 5: Inspeccionar la Autenticación y Autorización (MASVS-AUTH)
# Listar todas las clases Objective-C
ios hooking list classes
# Buscar clases relacionadas con la autenticación
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Interceptar métodos de autenticación para observar parámetros
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Monitorear llamadas de autenticación biométrica
ios hooking watch class LAContext
Paso 6: Evaluar las Protecciones Binarias (MASVS-RESILIENCE)
# Verificar la implementación de detección de jailbreak
ios jailbreak disable
# Simular la evasión de detección de jailbreak
ios jailbreak simulate
# Listar frameworks y bibliotecas cargadas
memory list modules
# Buscar cadenas sensibles en la memoria
memory search "contraseña" --string
memory search "api_key" --string
memory search "Bearer" --string
# Volcar regiones de memoria específicas
memory dump all dump_output/
Paso 7: Revisar la Interacción con la Plataforma (MASVS-PLATFORM)
# Listar esquemas URL registrados por la aplicación
ios info binary
ios bundles list_frameworks
# Interceptar manejadores de esquemas URL
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# Monitorear el acceso al portapapeles
ios pasteboard monitor
# Verificar restricciones de teclado personalizado
ios hooking search classes UITextField
Conceptos Clave
| Término | Definición |
|---|---|
| Objection | Herramienta de exploración móvil en tiempo de ejecución construida sobre Frida que proporciona scripts predefinidos para tareas comunes de pruebas de seguridad |
| Frida Gadget | Biblioteca compartida inyectada en el proceso de la aplicación para habilitar la instrumentación de Frida sin necesidad de jailbreak |
| Llavero (Keychain) | Sistema de almacenamiento seguro de credenciales de iOS; Objection puede volcar elementos accesibles para el grupo de acceso al llavero de la aplicación de destino |
| Anulación de SSL Pinning | Modificación en tiempo de ejecución de la lógica de validación de certificados para permitir la interceptación de tráfico HTTPS a través de un proxy |
| Intercepción de Métodos | Interceptación de llamadas a métodos Objective-C/Swift en tiempo de ejecución para observar argumentos, valores de retorno y modificar el comportamiento |
Herramientas y Sistemas
- Objection: Kit de herramientas de exploración de seguridad móvil de alto nivel basado en Frida con comandos predefinidos
- Frida: Marco de instrumentación dinámica que permite la inyección de JavaScript en procesos de aplicaciones nativas
- Frida-tools: Utilidades de línea de comandos para Frida, incluyendo frida-ps, frida-trace y frida-discover
- ideviceinstaller: Herramienta multiplataforma para instalar/gestionar aplicaciones iOS a través de USB
- Burp Suite: Proxy HTTP para interceptar tráfico después de anular el SSL Pinning
Errores Comunes
- La aplicación se bloquea al adjuntarse: Algunas aplicaciones implementan detección de Frida. Usa
--startup-commandpara interceptar las comprobaciones anti-Frida al inicio del ciclo de vida de la aplicación. - Alcance del acceso al llavero: Objection solo puede volcar elementos del llavero dentro del grupo de acceso de la aplicación. Los elementos del llavero del sistema requieren herramientas separadas a nivel de jailbreak.
- Ofuscación de nombres en Swift: Los nombres de métodos Swift están ofuscados en tiempo de ejecución. Usa
ios hooking list classescon grep para encontrar nombres desofuscados. - Cambios no persistentes: Todas las modificaciones de Objection son solo en tiempo de ejecución y se restablecen al reiniciar la aplicación. Documenta los hallazgos inmediatamente.