1858 palabras
9 minutos
Notas sobre hacking iOS
2025-08-11

Hacking iOS#


Índice#

  1. Teoría
  2. Jailbreak
  3. Instalación de herramientas necesarias
    • Iphone
    • Computadora
  4. Casos de uso
    • Extracción del IPA
    • Análisis estático de la aplicación
    • Evasión de la detección anti-jailbreak
    • Evasión de la protección SSL-Pinning

Teoría#

¿Por qué la gente hace Jailbreak?#

Las personas pueden optar por realizar el jailbreak de sus dispositivos para realizar acciones que no estén permitidas por Apple. Dos casos de uso pueden ser:

  1. Realizar pruebas de seguridad informática
  2. Agregar “Tweaks” (ajustes, personalizaciones) a su iPhone

Tipos de Jailbreak#

  • rootful
    • Da acceso completo al sistema, también al sistema raíz ”/”. Te da privilegios de root
  • rootless
    • No tienes acceso completo al sistema, no puedes acceder a raíz ”/”, pero sí a otros directorios. También tienes privilegios de root.

Tipos de persistencia#

  • Tethered
    • 📱 🔄 📵 💻 ✅
    • Requiere la conexión a una computadora cada vez que se reinica. Sin esto el teléfono no iniciará de manera correcta.
  • Untethered
    • 📱 🔄 ✅
    • El teléfono puede apagarse y reiniciarse sin perder funcionalidades ni su estado de jailbreak. Sin embargo, este tipo de jailbreak comenzó a desaparecer con iOS 9
  • Semi-tethered
    • 📱 🔄 📱🔒 💻 ✅
    • Si el teléfono se apaga o reinicia, el teléfono podrá seguir utilizandose pero perderá su estado de jailbreak. Este puede volver a activarse mediante el mismo proceso que le hizo jailbreak en un inicio.
    • Actualmente, este es el jailbreak más utilizado.
  • Semi-Untethered Jailbreak
    • 📱 🔄 📱🔒 📲 ✅
    • Si el teléfono se apaga o reinicia, el teléfono podrá seguir utilizandose pero perderá su estado de jailbreak. A diferencia del “semi-tethered” este puede volver a activarse mediante una aplicación que devuelva el estado de jailbreak.

Requisitos para jailbreak#

  • Iphone con procesador inferior al A12 (Iphone 8 Plus y anteriores. Iphone X, pero solo el X, ninguna de sus variantes)
  • iOS soportados y probados de primera mano:
    • iOS 15.6.1 probado con Iphone 8 - jailbreak con palera1n
      • Usando live usb. Desde Debian y winra1n no funciono
      • Usando un cable usb A desde una computadora con puertos USB 2.0
    • iOS 14.7.1 probado con Iphone 7 - jailbreak con checkra1n
      • Debian app
      • Usando un cable usb A desde una computadora con puertos USB 3.0
  • Notas generales
    • Es un proceso que puede tomar un par de intentos
    • Debes conocer cómo entrar al modo DFU
      • Puedes ensayar viendo qué modo detecta iTunes (conectado el celular a la computadora)
    • A través de un cables USB A es más fácil que se realice el proceso correctamente. USB C, puede fallar
    • Es más fácil a través de los puertos USB 2.0 de la computadora

Dispositivos probados y versión de iOS - ¿Cómo entrar al modo DFU?#

  • iOS 15.6.1 probado con Iphone 8 - jailbreak con palera1n (live usb)
    • Entrar al modo DFU
      • UP, DOWN, SIDE-hasta-apagar, SOLTAR_TODO, SIDE+DOWN-5segundos, DOWN-5segundos (o hasta que se comience el proceso)
      • PRESION_RAPIDA, PRESION_RAPIDA, SOSTENER, SOLTAR_TODO, PRESIONAR_AMBOS_SOSTENER, SOLTAR_SOLO_SIDE_BUTTON
  • iOS 14.7.1 probado con Iphone 7 - jailbreak con checkra1n (Debian app)
    • Entrar al modo DFU
      • SIDE+DOWN-10segundos, DOWN-10segundos (o hasta que se comience el proceso)
      • PRESIONAR_AMBOS, SOLTAR_SOLO_SIDE_BUTTON

Consideraciones generales para el Jailbreak#

  • Otorgarle privilegios de root (Jailbreak) a tu celular requiere un celular físico
  • Rootful
    1. Nota: Cada dispositivo y versión de S.O. tiene su propio método, pero a grandes rasgos se debe hacer lo siguiente
    2. Quitar FaceID, passcode, TouchID, desactivar Find Iphone * Vease en un tutorial propio de la herramienta utilizada
    3. Tener espacio disponible en el celuar (10GB) * Vease en un tutorial propio de la herramienta utilizada
    4. Usar palera1n o checkra1n (según sea el caso)
      • Debes entrar al modo DFU * Vease en un tutorial propio del disposito
      • Instalar Cydia, Sileo, Zebra * Vease en un tutorial propio de la herramienta utilizada

Palera1n#

Notas#

  • Requieres 10GB libres de almacenamiento
  • Dale a Trust cuando lo conectes a la computadora

Proceso#

  • Crear USB Booteable
  • Iniciar con el ISO
  • Seleccionar Palera1n
  • Si es primera vez configurar las siguientes opciones
    • 1 Create FakeFS
    • 3 Verbose
    • 7 Debug
    • Arguments: -f -c -V -v
  • Conectar tu celular y ponerlo en modo DFU
  • Dejar que trabaje y, una vez terminado podás notar que tienes 10Gb menos en tu almacenamiento
  • Iniciar con el ISO
  • Seleccionar Palera1n
  • Seleccionar las siguientes opciones
    • 3 Verbose
    • 7 Debug
    • Arguments: -f -V -v
  • Conectar tu celular y ponerlo en modo DFU
  • Dejar que trabaje y, una vez terminado podás notar que tienes 10Gb menos en tu almacenamiento

Problemas y soluciones#

  • Reiniciar el programa
    • CTRL +C
    • exit

Herramientas para realizar pruebas de seguridad:#

Dependencias#

ElleKit - Instalar dependencias#

  • Abrir Sileo
  • Ir a sources => Añadir
    • https://ellekit.space/
  • Ir a Search y buscar ElleKit
  • Instalar ElleKit
    • En caso de que no instale presionar los botones: Get => Queque => Confirm => Done

Administración de IPAs#

Servidor SSH - Instalar un servidor SSH#

  • Abrir Sileo
  • Ir a Search y buscar Openssh
  • Instalar openssh y todas sus dependencias (4)
    • En caso de que no instale presionar los botones: Get => Queque => Confirm => Done
  • Obtener la IP del celular (Settings => WIFI => <your_red> => IP Address)
  • ssh mobile@192.168.x.x
    • El password es el que hayas preconfigurado al momento de rootear el celular

Filza - Gestor de archivos#

  • Abrir Sileo
  • Ir a sources => Añadir
    • https://tigisoftware.com/cydia/
  • Ir a Search y buscar Filza
  • Instalar Filza File Manager 64-bit
    • En caso de que no instale presionar los botones: Get => Queque => Confirm => Done

AppSync Unified - Instalar aplicaciones aunque no se puedan verificar sus firmas#

Intercepción de tráfico#

Certificado BurpSuite - Añadir certificado de BurpSuite para interceptar tráfico#

  • Configura tu celular para pasar por el proxy de BurpSuite
  • Visita: http://burpsuite
  • Da click en CA CERTIFICATE => Allow => Review the profile in Settings app if you want to install it
  • Instala el certificado
    • Settings => General => VPN & Device Managment => Downloaded profile | PortSwigger CA => Install
  • Habilita la confianza de raíz en el certificado
    • Settings => General => About => Certificate Trust Settings => Enable

SSL Kill Switch 3 - Remover SSL Pinning#

  • Descargar SSL Kill Switch 3
  • Abrir Sileo
  • Ir a Search y buscar SSL Kill Switch 3
  • Instalar SSL Kill Switch 3
  • Entrar a configuración => “SSL Kill Switch 3” => Disable Certificate Validation

Pruebas dinámicas#

Frida#

Frida requiere dos aplicaciones:

  1. Frida server (instalado en el celular)
  2. Frida client (Instalado en la computadora)
  • Nota: Ambos deben tener la misma versión instalada. Por ejemplo: 16.7.13

Instalar cliente de Frida en Debian 12#

Terminal window
# Instalar pipx
sudo apt install pipx
# Instalar frida-tools
pipx install frida-tools
# Solamente si no lo detecta el PATH
pipx ensurepath
# Note: '/home/user/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run `pipx ensurepath` to automatically add it, or manually
# Obtener la versión de Frida
frida --version
# 16.7.13
# Actualizar Frida
pipx upgrade frida-tools
# 17.2.11
# Quitar Frida
pipx uninstall frida-tools

Instalar Frida Server en iOS#

  1. Frida
    • Abrir Sileo
    • Ir a sources => Añadir
      • https://build.frida.re
    • Ir a Search y buscar Frida
    • Instalar Frida
      • En caso de que no instale presionar los botones: Get => Queque => Confirm => Done

Corroborando que todo funcione de manera adecuada#

  1. Conectas el iPhone a la computadora
  2. Desde tu computadora abres la terminal
Terminal window
# Show devices
frida-ls-devices
# Connect Frida to an iPad over USB and list running processes
frida-ps -U
# List running applications
frida-ps -Ua
# List installed applications
frida-ps -Uai
# Connect Frida to the specific device
frida-ps -D 0216027d1d6d3a03

** En caso del error:

  • Failed to enumerate processes: no viable transport found
    • Corrobora que el dispositivo confie en la computadora
    • Corrobora que ambos dispositivos corran la misma versión de Frida
    • Corrobora que el servicio usbmuxd se encuentre activo
Terminal window
# Corroborar que el servicio usbmuxd este activo
sudo systemctl status usbmuxd
# En caso de que no este activo, iniciarlo
sudo systemctl start usbmuxd

Objection#

Instalar Objection#

  • Es requerido contar con Frida para hacer uso de este módulo
Terminal window
# Instalar pipx
sudo apt install pipx
# Instalar Objection
pipx install objection
# Actualizar objection
pipx upgrade objection
# Quitar objection
pipx uninstall objection

Start Objection and Attach to a Process#

  1. Conectas el iPhone a la computadora
  2. Desde tu computadora abres la terminal
Terminal window
# Show devices
frida-ls-devices
# Indentify installed apps
frida-ps -Uai
# Start Objection and Attach to a Process
objection -g com.app.name explore
##################################################3
# Obtener información
# obtain some binary infos about the app
ios info binary
# dump the iOS key chain
ios keychain dump
# list the app's bundled files
ls
# inspect an app's bundle file
file cat <filename.extension>
# dump iOS shared credentials cache
ios nsurlcredentialstorage dump
# inspect NSUserDefaults class
ios nsuserdefaults get
# dump stored cookies
ios cookies get

ByPass Jailbreak Detection#

Por probar:


Comandos útiles#

Encontrar aplicaciones dentro de iOS a través de una conexión ssh#

Terminal window
find . 2>/dev/null | grep "app_name"

Extracción de IPA#

Terminal window
# Te conectas al Iphone
ssh root@<iPhone_IP>
# Entras al directorio de aplicaciones
cd /var/containers/Bundle/Application/
# Encuentras el UUID Folder de tu aplicación
find | grep "<APP_NAME>" | cut -d "/" -f2 | sort -u
# Entras UUID-Folder
cd <UUID_Folder>
# Creas una carpeta para almacenar tu app
mkdir Payload
# Copia la app a la carpeta temporal
cp -r <APP_NAME>.app/ Payload/
# Crear tu archivo .ipa
zip -r /var/root/<NAME_TO_EXTRACT_IPA>.ipa Payload/
# Descargas la aplicación
sftp root@<iPhone-IP>
get -r /var/root/<NAME_TO_EXTRACT_IPA>.ipa

Notas:

Why “Payload”? The name ‘Payload’ is part of the standard iOS app bundle structure required for the iOS operating system to correctly recognize and install the app. In the .ipa file format, the app bundle must be placed inside a ‘Payload’ folder containing the .app directory. Failure to follow this structure may prevent the app from being recognized or executed.
Capital letter is important: "Payload" not "payload"

Fuente:

Extracción de IPA automatizada#

  • Este script se debe correr con bash, no con zsh
Terminal window
# Te conectas al Iphone
ssh root@<iPhone_IP>
# Instala zip, solamente es necesario correrlo la primera vez
apt install zip
# Indentifica el nombre de tu app. Este debe ser único
find /var/containers/Bundle/Application/ -iname "*.app" | cut -d "/" -f7 | sort
# Script Automatizado, reemplaza el valor de APPNAME
APPNAME="NAME"; cd /var/containers/Bundle/Application/; if [ $(find | grep $APPNAME | cut -d "/" -f2 | sort -u | wc -l) == "1" ]; then echo "Comenzando respaldo" && UUID_Folder=$(find | grep $APPNAME | cut -d "/" -f2 | sort -u); cd $UUID_Folder; rm -rf Payload; mkdir Payload; ls | grep .app; NAME_TO_EXTRACT_IPA=$(ls | grep .app); cp -r $NAME_TO_EXTRACT_IPA Payload/; IPA_FINAL=$(printf '%s' $(cut -d. -f1 <<< $NAME_TO_EXTRACT_IPA)).ipa; zip -r /var/root/$IPA_FINAL Payload && echo "Guardado como:"; ls /var/root/ | grep "ipa"; echo -e "Para descargar:\n"; echo "scp root@IP:/var/root/$IPA_FINAL ."; sleep 5; exit; else echo "Too many apps with that name"; fi;
# Para descargar el IPA se te mostrará el comando que debes introducir. Similar a
scp root@IP:/var/root/$IPA_FINAL

Análisis de código estático y otros#

Hopper debbuger

MobSF

Class Dump

xCode

Mobile-Security-Framework-MobSF#

By Docker install

Terminal window
# To run for first time
sudo docker run -it --name mobsf -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
# Visit your localhost or IP on 8000 port
localhost:8000
## Default user and password
mobsf:mobsf
# To stop container
sudo docker stop mobsf
# To start again the container
sudo docker start mobsf
# More info
## To lists all containers
sudo docker ps -a
## To lists active containers
sudo docker ps
## To remove container
docker rm <id_contenedor>
## To remove container image
sudo docker rmi <id_imagen>

Defenses againts hacking#

These measures include:

  • encrypting sensitive data stored within the app
  • testing for local authentication
  • evaluating API vulnerabilities (such as URL schemes, WebViews, etc)
  • safeguarding against manipulation, one of which is the implementation of jailbreak detection mechanisms.

Tipos de detección de jailbreak#

  1. File-based Detection
    • /Applications/Cydia.app
    • /bin/bash, /usr/sbin/sshd
    • Dynamic libraries like Substrate
  2. Process-based Detection
    • frida-server
  3. Directory Permissions Detection
  4. URI Schemes Detection
    • cydia://

Anexo - Más información#

Teoría#

Penetration testing in rootless

Para hacer jailbreak#

Información en general#

Palera1n#

Palera1n Iphone 8#

Checkra1n#

Dopamine#

RootHide Dopamine#

TrollStore#

Acceder a modo DFU#

DFU Iphone 8

Herramientas útiles para realizar pruebas de seguridad#

Instalar Filza#

CA BurpSuite#

SSL Kill Switch 2#

SSL Kill Switch 3#

ElleKit#

AppSync Unified#

Frida#

Objection#

Extraer IPA#


Tutoriales#

Ingeniería reversa para evadir jailbreak detection

Casos de uso#

Cosas que podrían ser de utilidad#

Labs#

Frida#

Objection#

Info general#

Notas sobre hacking iOS
https://elcaza.github.io/posts/apuntes/hacking_ios/
Autor
El Capitán
Publicado el
2025-08-11
Licencia
CC BY-NC-SA 4.0