iOS Operaciones básicas de prueba
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.
Resumen de identificación y acceso de dispositivos iOS
Identificando el UDID de un dispositivo iOS
Para identificar un dispositivo iOS de forma única, se utiliza una secuencia de 40 dígitos conocida como UDID. En macOS Catalina o versiones posteriores, esto se puede encontrar en la Finder app, ya que iTunes ya no está presente. El dispositivo, una vez conectado vía USB y seleccionado en Finder, muestra su UDID entre otra información al hacer clic en los detalles bajo su nombre.
Para versiones de macOS anteriores a Catalina, iTunes facilita el descubrimiento del UDID. Instrucciones detalladas se pueden encontrar aquí.
Las herramientas de línea de comandos ofrecen métodos alternativos para recuperar el UDID:
- Usando la herramienta I/O Registry Explorer
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Usando
ideviceinstallerpara macOS (y Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Utilizando
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Empleando
instrumentspara listar dispositivos:
$ instruments -s devices
Accediendo al shell del dispositivo
Acceso SSH se habilita instalando el OpenSSH package post-jailbreak, permitiendo conexiones vía ssh root@<device_ip_address>. Es crucial cambiar las contraseñas por defecto (alpine) de los usuarios root y mobile para asegurar el dispositivo.
SSH over USB resulta necesario en ausencia de Wi-Fi, usando iproxy para mapear los puertos del dispositivo y permitir conexiones SSH. Esta configuración permite el acceso SSH a través de USB ejecutando:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, como NewTerm 2, facilitan la interacción directa con el dispositivo, especialmente útil para troubleshooting. Reverse SSH shells también pueden establecerse para acceso remoto desde el host.
Restablecer contraseñas olvidadas
Para restablecer una contraseña olvidada al valor por defecto (alpine), es necesario editar el archivo /private/etc/master.passwd. Esto implica reemplazar el hash existente por el hash de alpine junto a las entradas de usuario root y mobile.
Técnicas de transferencia de datos
Transferencia de archivos de datos de la aplicación
Archivado y recuperación vía SSH y SCP: Es sencillo archivar el directorio Data de la aplicación usando tar y luego transferirlo con scp. El comando siguiente archiva el directorio Data en un archivo .tgz, que luego se extrae del dispositivo:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Herramientas de interfaz gráfica de usuario
Using iFunbox and iExplorer: Estas herramientas GUI son útiles para gestionar archivos en dispositivos iOS. Sin embargo, a partir de iOS 8.4, Apple restringió el acceso de estas herramientas al application sandbox a menos que el dispositivo esté jailbroken.
Using Objection for File Management
Interactive Shell with Objection: Al lanzar Objection se accede al Bundle directory de una app. Desde aquí puedes navegar al Documents directory de la app y gestionar archivos, incluyendo descargarlos y subirlos hacia y desde el dispositivo iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Obtener y extraer aplicaciones
Adquisición del archivo IPA
Enlace de distribución Over-The-Air (OTA): Las aplicaciones distribuidas para pruebas vía OTA pueden descargarse usando la herramienta ITMS services asset downloader, que se instala mediante npm y se utiliza para guardar localmente el archivo IPA.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Extracción del binario de la app
- From an IPA: Descomprime el IPA para acceder al binario de la app descifrado.
- From a Jailbroken Device: Instala la app y extrae el binario descifrado desde la memoria.
Proceso de descifrado
Descripción general del descifrado manual: Los binarios de las apps iOS son cifrados por Apple usando FairPlay. Para realizar ingeniería inversa, es necesario volcar el binario descifrado desde la memoria. El proceso de descifrado implica comprobar el PIE flag, ajustar los flags de memoria, identificar la sección cifrada y luego volcar y reemplazar esa sección por su forma descifrada.
Comprobación y modificación del PIE flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identificando la sección cifrada y volcando la memoria:
Determina las direcciones de inicio y fin de la sección cifrada usando otool y vuelca la memoria desde el dispositivo con jailbreak usando gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Sobrescribir la Encrypted Section: Reemplaza la Encrypted Section en el app binary original con el decrypted dump.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizing Decryption: Modifica los metadatos del binario para indicar la ausencia de cifrado usando herramientas como MachOView, estableciendo el cryptid a 0.
Decryption (Automatically)
frida-ios-dump
The frida-ios-dump tool is employed for automatically decrypting and extracting apps from iOS devices. Initially, one must configure dump.py to connect to the iOS device, which can be done through localhost on port 2222 via iproxy or directly via the device’s IP address and port.
Las aplicaciones instaladas en el dispositivo se pueden listar con el comando:
$ python dump.py -l
Para dump una aplicación específica, como Telegram, se usa el siguiente comando:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Este comando inicia el volcado de la app, resultando en la creación de un archivo Telegram.ipa en el directorio actual. Este proceso es adecuado para dispositivos jailbroken, ya que apps unsigned o fake-signed pueden reinstalarse usando herramientas como ios-deploy.
frida-ipa-extract
Extractor de IPA basado en Frida para dispositivos jailbroken; usa sesiones Frida por USB y SSH/SFTP opcional para extracciones más rápidas.
- Requisitos: Python 3.9+,
frida,paramiko, dispositivo jailbroken con frida-server (OpenSSH para modo SSH). - Configuración:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Uso:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- Flags:
-f <bundle>spawns/attaches (o--pidpara PID);-oestablece el nombre de salida.-Uusa USB;-H/-P/-u/-pabre un túnel SSH afrida-server27042 y extrae vía SFTP (se puede combinar con-U).--sandboxvuelca el sandbox;--no-resumemantiene la app suspendida para evitar fallos y reintentos por parte de un proceso del sistema si la sesión se interrumpe. - Troubleshooting:
Frida attach timed out→ usa-fo--no-resume;script has been destroyed→--no-resumeo transferencia por SSH;No running apps found→ inicia o lanza (spawn) la app.
flexdecrypt
The flexdecrypt tool, along with its wrapper flexdump, allows for the extraction of IPA files from installed applications. Installation commands for flexdecrypt on the device include downloading and installing the .deb package. flexdump can be used to list and dump apps, as shown in the commands below:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, otra herramienta basada en Frida, requiere un dispositivo con jailbreak para el descifrado de la aplicación:
bagbak --raw Chrome
r2flutch
r2flutch, utilizando tanto radare como frida, sirve para el descifrado y volcado de aplicaciones. Más información en su GitHub page.
Instalación de aplicaciones
Sideloading se refiere a instalar aplicaciones fuera del App Store oficial. Este proceso lo maneja el installd daemon y requiere que las apps estén firmadas con un certificado emitido por Apple. Los dispositivos Jailbroken pueden eludir esto mediante AppSync, permitiendo la instalación de paquetes IPA con firma falsa (fake-signed).
Herramientas de Sideloading
-
Cydia Impactor: Una herramienta para firmar e instalar archivos IPA en iOS y APK en Android. Guías y solución de problemas están disponibles en yalujailbreak.net.
-
libimobiledevice: Una librería para Linux y macOS para comunicarse con dispositivos iOS. Se proporcionan comandos de instalación y ejemplos de uso para ideviceinstaller para instalar aplicaciones por USB.
-
ipainstaller: Esta herramienta de línea de comandos permite la instalación directa de apps en dispositivos iOS.
-
ios-deploy: Para usuarios de macOS, ios-deploy instala apps iOS desde la línea de comandos. Descomprimir la IPA y usar la bandera
-mpara el lanzamiento directo de la app forman parte del proceso. -
Xcode: Utiliza Xcode para instalar apps navegando a Window/Devices and Simulators y añadiendo la app a Installed Apps.
Permitir la instalación de aplicaciones en dispositivos que no son iPad
Para instalar aplicaciones específicas de iPad en dispositivos iPhone o iPod touch, el valor UIDeviceFamily en el archivo Info.plist debe cambiarse a 1. Esta modificación, sin embargo, requiere volver a firmar el archivo IPA debido a las comprobaciones de validación de firma.
Nota: Este método podría fallar si la aplicación requiere capacidades exclusivas de modelos más nuevos de iPad al usar un iPhone o iPod touch más antiguo.
Referencias
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
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.


