1477 palabras
7 minutos
Hacking iOS

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

Dependencias en PC#

Terminal window
sudo apt update && sudo apt install -y usbmuxd libimobiledevice-utils libimobiledevice6 ideviceinstaller

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 & Objection#

** 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

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#

Ya tenemos un post que habla solo de esto


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://

Transmisión de pantalla a computadora#


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#


Tutoriales#

Ingeniería reversa para evadir jailbreak detection

Casos de uso#

Cosas que podrían ser de utilidad#

Labs#

Frida#

Objection#

Info general#


Guardado de información en iOS#

Seguros:

  • Keychain => Clave-Valor Seguro => Información confidencial (contraseñas)

Bases de datos:

  • Couchbase Lite => Base de Datos NoSQL => Aplicaciones “offline-first” con sincronización
  • YapDatabase => Clave-Valor con SQL => Alto rendimiento para colecciones de objetos
  • Realm => Base de Datos Objeto => Alternativa de alto rendimiento a Core Data
  • Core Data => ORM (Object-Relational) => Gestión de datos complejos a gran escala

Otros:

  • Plist => Archivo de configuración => Datos estáticos, de solo lectura
  • UserDefaults => Clave-Valor => Preferencias y ajustes simples
  • Webkit Caching => Caché Temporal => Contenido de páginas web

Problemas & Soluciones#

Mi aplicación se cierra tras abrirla#

  1. Si has instalado desde Filza. Desinstala la aplicación e instalala desde TrollStore
Nota final

¡Gracias por terminar de leer este artículo! uwur

— El Capitán

¿Tienes alguna duda o te gustaría comentar algo sobre este artículo?

Puedes encontrarme en:

Hacking iOS
https://elcaza.github.io/posts/hacking/hacking_ios/
Autor
El Capitán
Publicado el
2024-07-13
Licencia
CC BY-NC-SA 4.0