Logo du projet fl3xbl0w

Jailbreak d'Android - fl3xbl0w

Lancé le 28 mai 2022

Projet d'ingénierie inverse. A commencé avec le tapis de course Bowflex Treadmill 22 mais s'est généralisé pour tout appareil Android vendu par Nautilus Inc. (Nautilus, Bowflex, Schwinn).

Cette méthode dépend du fait que les spécifications de la console Bowflex sont trop lentes pour les logiciels d’aujourd’hui (elle n’a que 2 Go de RAM sur la carte Android). À cause de cela, et si nous sommes plus rapides que la tablette, nous pouvons effectuer un jailbreak depuis le AppMonitorService de Nautilus.

Est-ce qu’on pourrait appeler ça une attaque par force brute ?

Vous pouvez redémarrer la machine à tout moment du processus, et tout sera comme il se doit. Il n’y a aucun risque du côté logiciel à le faire. Essayez-le !

Exigences

  • Un clavier USB (filaire ou sans fil via un dongle USB) avec des “touches médias” pour Home, Back.
  • Des doigts rapides ! (la “partie intense” doit se produire en environ une seconde)
  • Un ordinateur avec adb (lien de téléchargement)

J’ai utilisé un Logitech K600, mais tout clavier avec ces touches devrait fonctionner :

Clavier Logitech K600

Il semble que les claviers Bluetooth ne peuvent pas être appairés via JRNY.

Conseils

  • Ne tentez pas de “bien faire” dès le début. Cela prendra quelques essais pour découvrir “où les boutons apparaissent sur l’écran”, afin que vous puissiez construire une certaine mémoire musculaire pour les actions de toucher.
  • NE FRAPPEZ PAS L’ÉCRAN FORT ! Être rapide ne signifie pas le casser. Je ne suis pas responsable des personnes qui frappent leurs écrans trop fort.

Instructions

D’abord, allumons la machine et connectons le clavier USB à la console Bowflex. Vous pouvez le trouver sur le côté droit :

Indique où se trouve le port USB de la console

Assurons-nous que le clavier fonctionne en appuyant sur le bouton “Home” du clavier. Cela devrait redémarrer l’application JRNY.

animation de la console

Android a un raccourci pour fermer l’application actuelle via le bouton “Back” si vous le maintenez enfoncé pendant une seconde ou quelque chose comme ça. Jouons un peu avec le bouton “Back” - fermons continuellement l’application JRNY dès qu’elle se rouvre jusqu’à ce qu’un nouveau dialogue commence à apparaître :

animation de la console

Ok, maintenant la partie amusante : Ce dialogue appartient au “système de vérification des erreurs” d’Android stock. Nous venons de “forcer Android à penser” que NautilusLauncher a un problème (super !). Exploitons ce dialogue.

Dès qu’il apparaît, touchez “App info”. En cliquant sur “App info”, nous allons ouvrir l’application Paramètres (qui est sur la liste des refus de AppMonitorService). Elle se fermera en environ une seconde, donc nous devons être rapides ! Touchez le bouton “FORCE STOP”, puis touchez “OK”.

animation de la console

Dès que vous pouvez cliquer sur “OK”, vous pouvez vous reposer (bon exercice, hein ?). Maintenant, procédons avec les découvertes sur Reddit. Activons adb en cliquant sur l’icône “loupe” dans le coin supérieur droit et en recherchant “Options pour développeurs” :

animation de la console

Trouvez l’adresse IP de la console. Le moyen le plus simple est via les paramètres Wi-Fi :

animation de la console

Maintenant que adb est activé et que nous avons l’adresse IP, passons à un ordinateur et connectons-nous avec adb. Ouvrez un terminal et exécutez adb connect <Adresse IP> (dans mon cas 10.0.0.205) :

> adb connect 10.0.0.205
connected to 10.0.0.205:5555

Il vous demandera une confirmation à l’écran la première fois que vous vous connecterez à distance via adb.

Créons un fichier vide dans /sdcard/Pictures/ appelé nautilus. Vous pouvez en savoir plus sur le “pourquoi” dans Curiosités de Bowflex.

> adb shell touch /sdcard/Pictures/nautilus

Maintenant, restaurons certaines fonctionnalités. Envoyez les commandes suivantes via votre terminal :

> adb shell settings put secure ntls_launcher_preference 0
> adb shell settings put secure navigationbar_switch 1
> adb shell settings put secure notification_switch 1
> adb shell settings put secure statusbar_switch 1

Vous verrez apparaître l’interface utilisateur :

animation de la console

Il y a une dernière étape - changer l’application de lancement par défaut. Recherchez “Applications par défaut” et définissez Quickstep comme application de démarrage :

animation de la console

Vous êtes maintenant libre !

Cet état se maintiendra tant que NautilusLauncher sera forcé de s’arrêter. Il persiste à travers les redémarrages.

Si vous voulez revenir à “stock”, il suffit d’ouvrir l’application NautilusLauncher (je vous suggère fortement d’avoir créé le fichier /sdcard/Pictures/nautilus au préalable) :

animation de la console

Notes sur le “Système de verrouillage”

NautilusLauncher est le “lanceur Android” par défaut, ce qui signifie que si l’application JRNY se ferme, elle se rouvrira immédiatement.

Il y a aussi un autre “verrou de sécurité”, un service en premier plan dans l’apk de NautilusLauncher, appelé AppMonitorService. En décompilant l’apk, vous pouvez voir trois variables intéressantes :

public static final int MonitorIntervalSeconds = 1;
// Quelques autres variables
private static String[] TargtedAppsToKill = {"com.android.vending", "com.android.settings", "com.android.chrome", "com.google.android.gm", "com.google.android.youtube"};
private static String[] TargtedAppsToBackground = {"com.google.android.googlequicksearchbox:interactor", "com.google.android.googlequicksearchbox:search", "com.google.android.googlequicksearchbox", "com.android.launcher3", "com.google.android.inputmethod.latin"};

Et ainsi ce service “protège activement” le verrouillage. À chaque fermeture de l’application (via le maintien du bouton “Back”), il y aura une tentative de rouvrir JRNY. En forçant sa fermeture, nous désactivons également tous les services en premier plan.

(les fautes de frappe que vous pourriez voir dans les extraits de code proviennent des développeurs de Nautilus eux-mêmes, pas de moi)

Contenu traduit par gpt-4-1106-preview

©2022-2024 Sebastián Barrenechea. Tous droits réservés.

Construit avec Astro v4.15.9.