Contournement du code d'accès et récupération de données sur iPad A5 sans réinitialisation

Ce guide technique détaille la procédure de contournement du verrouillage par code d'accès sur les anciens appareils iOS équipés de puces A5/A5X (comme l'iPad 2) afin d'extraire ou de récupérer des données sans effectuer de réinitialisation d'usine. La méthode repose sur l'exploitation de la vulnérabilité matérielle checkm8 via un microcontrôleur Arduino pour accéder au mode pwnDFU, suivi du chargement d'un Ramdisk personnalisé pour modifier la configuraiton de verrouillage du système.

Prérequis matériels et logiciels

  • Arduino UNO (de préférence original) avec un module d'extension USB Host Shield.
  • Un Mac sous macOS (Catalina, Big Sur, Monterey ou versions ultérieures).
  • Arduino IDE.
  • L'outil de contournement Sliver.
  • Client SFTP (ex: Cyberduck ou FileZilla) et éditeur de plist (ex: PlistEdit Pro ou Xcode).
  • Câbles USB appropriés (USB-A vers 30-pin pour les anciens iPad).

Avertissement : Cette procédure est strictement destinée à la récupération de données sur des appareils dont vous êtes le propriétaire légitime.

1. Préparation du microcontrôleur Arduino

Le module USB Host Shield nécessite une modification matérielle mineure : souder trois points de connexion spécifiques pour assurer la communication USB. Une fois l'Arduino et le shield assemblés, configurez l'environnement de développement.

Téléchargez le patch checkm8-a5 de synackuk. Clonez la bibliothèque USB Host Shield et appliquez le patch via le terminal :

# Configuration de l'espace de travail Arduino
WORKSPACE="$HOME/Arduino_Projects/libraries"
mkdir -p "$WORKSPACE" && cd "$WORKSPACE"

# Récupération de la bibliothèque USB à une version spécifique
git clone https://github.com/felis/USB_Host_Shield_2.0.git usb_host_lib
cd usb_host_lib
git checkout cd87628af4a693eeafe1bf04486cf86ba01d29b8

# Application du patch checkm8
git apply "$HOME/Downloads/checkm8-a5/usb_host_library.patch"

Ouvrez le fichier checkm8-a5.ino dans l'IDE Arduino. Avant de téléverser le code, ajustez la définition du processeur cible selon votre appareil :

  • iPad 2 (A5) / iPhone 4S : #define A5_8940 (valeur par défaut)
  • iPad 3 (A5X) : #define A5_8945
  • iPad 2 (Rev A) / iPad mini 1 : #define A5_8942

Sélectionnez le port COM correspondant à l'Arduino et téléversez le sketch.

2. Transition vers le mode pwnDFU

Placez d'abord l'iPad en mode DFU stadnard :

  1. Connectez l'iPad à l'ordinateur et éteignez-le.
  2. Maintenez les boutons Power et Home enfoncés pendant exactement 10 secondes.
  3. Relâchez le bouton Power tout en maintenant le bouton Home enfoncé pendant 10 secondes supplémentaires.

L'écran doit rester noir. Déconnectez l'iPad de l'ordinateur et branchez-le sur le port USB du shield Arduino. Alimentez l'Arduino via son port USB. Si une LED est connectée, elle clignotera rapidement avant de rester allumée, indiquant que l'exploit a réussi et que l'appareil est en mode pwnDFU.

3. Chargement du Ramdisk via Sliver

Sur les versions récentes de macOS, l'application Sliver peut être bloquée par Gatekeeper. Supprimez l'attribut de quarantaine :

sudo xattr -cr /Applications/Sliver.app

Assurez-vous que les dépendances système sont installées via Homebrew :

# Installation des dépendances USB et de récupération
brew install libusb libirecovery

Lancez Sliver, naviguez vers Ramdisk iCloud Bypass > Bypass A5 iDevices et sélectionnez votre modèle. Choisissez Alternate RD (recommandé pour macOS Catalina et versions ultérieures) et cliquez sur Load Ramdisk. Suivez les instructions à l'écran pour débrancher et rebrancher l'appareil. Le logo de chargement devrait apparaître sur l'écran de l'iPad.

4. Montage des partitions et modification du Plist

Une fois le Ramdisk chargé, l'appareil expose un serveur SSH sur le port 2222. Connectez-vous via le terminal :

# Connexion SSH au Ramdisk
ssh -o StrictHostKeyChecking=no root@localhost -p 2222
# Mot de passe par défaut : alpine

Dans la session SSH, montez les partitions du système de fichiers :

mount.sh

Utilisez un client SFTP pour accéder au système de fichiers monté. Connectez-vous à localhost sur le port 2222 avec l'utilisateur root et le mot de passe alpine. Naviguez vers le répertoire suivant :

/mnt2/mobile/Library/Preferences/

Téléchargez le fichier com.apple.springboard.plist sur votre machine locale et ouvrez-le avec un éditeur de plist. Localisez la clé SBDeviceLockFailedAttempts. Cette valeur détermine le nombre de tentatives de saisie du code d'accès avant que l'appareil ne soit désactivé. Modifiez cette valeur en un nombre négatif (par exemple, -9999) pour désactiver le mécanisme de verrouillage progressif.

Enregistrez le fichier et téléversez-le à nouveau dans le répertoire /mnt2/mobile/Library/Preferences/ via SFTP, en écrasant le fichier original. Redémarrez l'appareil via SSH :

reboot_bak

Après le redémarrage, l'iPad ne se bloquera plus après plusieurs tentatives erronées. Vous pouvez alors procéder à des tentatives de saisie du code d'accès de manière itérative jusqu'à accéder à l'interface utilisateur et extraire les données.

Étiquettes: iOS pwnDFU checkm8 arduino Ramdisk

Publié le 22 août à 15h19