13 KiB
Operaciones Básicas de Pruebas en iOS
Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF, consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.
Resumen de Identificación y Acceso de Dispositivos iOS
Identificación del UDID de un Dispositivo iOS
Para identificar de forma única un dispositivo iOS, se utiliza una secuencia de 40 dígitos conocida como UDID. En macOS Catalina o posterior, esto se puede encontrar en la aplicación Finder, ya que iTunes ya no está presente. Una vez conectado el dispositivo a través de USB y seleccionado en Finder, revela su UDID, entre otra información, al hacer clic en los detalles bajo su nombre.
Para versiones de macOS anteriores a Catalina, iTunes facilita la búsqueda del UDID. Se pueden encontrar instrucciones detalladas aquí.
Las herramientas de línea de comandos ofrecen métodos alternativos para recuperar el UDID:
- Usando la herramienta Explorador de Registro de E/S
ioreg
:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Usando
ideviceinstaller
en 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:"
- Utilizando
instruments
para listar dispositivos:
$ instruments -s devices
Accediendo al Shell del Dispositivo
El acceso SSH se habilita instalando el paquete OpenSSH después del jailbreak, lo que permite conexiones a través de ssh root@<dirección_ip_del_dispositivo>
. Es crucial cambiar las contraseñas predeterminadas (alpine
) de los usuarios root
y mobile
para asegurar el dispositivo.
SSH sobre USB se vuelve necesario en ausencia de Wi-Fi, utilizando iproxy
para mapear los puertos del dispositivo para conexiones SSH. Esta configuración permite el acceso SSH a través de USB ejecutando:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Aplicaciones de shell en el dispositivo, como NewTerm 2, facilitan la interacción directa con el dispositivo, especialmente útil para solucionar problemas. También se pueden establecer shells SSH inversas para acceder de forma remota desde la computadora host.
Restablecimiento de Contraseñas Olvidadas
Para restablecer una contraseña olvidada a la predeterminada (alpine
), es necesario editar el archivo /private/etc/master.passwd
. Esto implica reemplazar el hash existente con 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 a través de SSH y SCP: Es sencillo archivar el directorio de Datos de la aplicación usando tar
y luego transferirlo usando scp
. El siguiente comando archiva el directorio de Datos 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
Usando iFunbox e iExplorer: Estas herramientas de 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 sandbox de la aplicación a menos que el dispositivo esté jailbroken.
Usando Objection para la Gestión de Archivos
Shell Interactivo con Objection: Al iniciar objection se obtiene acceso al directorio Bundle de una aplicación. Desde aquí, puedes navegar hasta el directorio Documents de la aplicación y gestionar archivos, incluyendo la descarga y carga de archivos 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>
Obtención y Extracción de Aplicaciones
Obteniendo el Archivo IPA
Enlace de Distribución Over-The-Air (OTA): Las aplicaciones distribuidas para pruebas a través de OTA pueden descargarse utilizando la herramienta de descarga de activos de servicios ITMS, la cual se instala a través de npm y se utiliza para guardar el archivo IPA localmente.
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
Extrayendo el Binario de la Aplicación
- Desde un IPA: Descomprime el IPA para acceder al binario de la aplicación descifrado.
- Desde un Dispositivo con Jailbreak: Instala la aplicación y extrae el binario descifrado de la memoria.
Proceso de Descifrado
Resumen del Descifrado Manual: Los binarios de aplicaciones de iOS están encriptados por Apple utilizando FairPlay. Para realizar ingeniería inversa, es necesario volcar el binario descifrado de la memoria. El proceso de descifrado implica verificar la bandera PIE, ajustar las banderas de memoria, identificar la sección encriptada y luego volcar y reemplazar esta sección con su forma descifrada.
Verificación y Modificación de la Bandera PIE:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identificación de la Sección Encriptada y Volcado de Memoria:
Determine las direcciones de inicio y fin de la sección encriptada utilizando otool
y realice el volcado de memoria desde el dispositivo con jailbreak utilizando gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Sobrescribir la Sección Encriptada:
Reemplazar la sección encriptada en el binario de la aplicación original con el volcado desencriptado.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizando la Descifrado: Modifica los metadatos del binario para indicar la ausencia de cifrado utilizando herramientas como MachOView, estableciendo cryptid
en 0.
Descifrado (Automáticamente)
frida-ios-dump
La herramienta frida-ios-dump se emplea para descifrar y extraer aplicaciones automáticamente de dispositivos iOS. Inicialmente, se debe configurar dump.py
para conectarse al dispositivo iOS, lo cual se puede hacer a través de localhost en el puerto 2222 mediante iproxy o directamente a través de la dirección IP y puerto del dispositivo.
Las aplicaciones instaladas en el dispositivo se pueden listar con el comando:
$ python dump.py -l
Para volcar una aplicación específica, como Telegram, se utiliza el siguiente comando:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Este comando inicia la extracción de la aplicación, lo que resulta en la creación de un archivo Telegram.ipa
en el directorio actual. Este proceso es adecuado para dispositivos con jailbreak, ya que aplicaciones no firmadas o falsamente firmadas pueden ser reinstaladas utilizando herramientas como ios-deploy.
flexdecrypt
La herramienta flexdecrypt, junto con su envoltorio flexdump, permite la extracción de archivos IPA de aplicaciones instaladas. Los comandos de instalación para flexdecrypt en el dispositivo incluyen la descarga e instalación del paquete .deb
. flexdump se puede utilizar para listar y extraer aplicaciones, como se muestra en los comandos a continuación:
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 la desencriptación de aplicaciones:
bagbak --raw Chrome
r2flutch
r2flutch, utilizando tanto radare como frida, sirve para la descifrado y volcado de aplicaciones. Se puede encontrar más información en su página de GitHub.
Instalación de Aplicaciones
Sideloading se refiere a la instalación de aplicaciones fuera de la App Store oficial. Este proceso es manejado por el daemon installd y requiere que las aplicaciones estén firmadas con un certificado emitido por Apple. Los dispositivos con jailbreak pueden evitar esto a través de AppSync, lo que permite la instalación de paquetes IPA falsamente firmados.
Herramientas de Sideloading
-
Cydia Impactor: Una herramienta para firmar e instalar archivos IPA en iOS y archivos APK en Android. Se pueden encontrar guías y solución de problemas en yalujailbreak.net.
-
libimobiledevice: Una biblioteca para Linux y macOS para comunicarse con dispositivos iOS. Se proporcionan comandos de instalación y ejemplos de uso para ideviceinstaller para instalar aplicaciones a través de USB.
-
ipainstaller: Esta herramienta de línea de comandos permite la instalación directa de aplicaciones en dispositivos iOS.
-
ios-deploy: Para usuarios de macOS, ios-deploy instala aplicaciones de iOS desde la línea de comandos. Descomprimir el IPA y usar la bandera
-m
para el lanzamiento directo de la aplicación son parte del proceso. -
Xcode: Utiliza Xcode para instalar aplicaciones navegando a Window/Devices and Simulators y agregando la aplicación 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. Sin embargo, esta modificación requiere volver a firmar el archivo IPA debido a las verificaciones de validación de firma.
Nota: Este método podría fallar si la aplicación requiere capacidades exclusivas de modelos de iPad más nuevos mientras se utiliza 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/
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la ropa oficial de PEASS & HackTricks
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud github.