Logo del progetto fl3xbl0w

Jailbreak di Android - fl3xbl0w

Pubblicato il 28 mag 2022

Progetto di ingegneria inversa. È iniziato con il tapis roulant Bowflex Treadmill 22 ma si è poi generalizzato per qualsiasi macchina con Android venduta da Nautilus Inc. (Nautilus, Bowflex, Schwinn).

Questo metodo dipende dal fatto che le specifiche della console Bowflex siano troppo lente per il software odierno (ha solo 2Gb di RAM sulla scheda Android). A causa di ciò, e se siamo più veloci del tablet, possiamo effettuare il jailbreak dal AppMonitorService di Nautilus.

Si potrebbe chiamare un attacco di forza bruta?

Puoi riavviare la macchina in qualsiasi momento del processo, e tutto sarà come dovrebbe. Non c’è rischio sul lato del software per farlo. Dàgli una prova!

Requisiti

  • Una tastiera USB (cablata o wireless tramite un dongle USB) con “tasti multimediali” per Home, Back.
  • Dita veloci! (la “parte intensa” deve avvenire in circa un secondo)
  • Un computer con adb (link per il download)

Ho usato un Logitech K600, ma qualsiasi tastiera con quei tasti dovrebbe funzionare:

Tastiera Logitech K600

Le tastiere Bluetooth sembrano non poter essere accoppiate tramite JRNY.

Consigli

  • Non cercare di “farlo bene” fin dall’inizio. Ci vogliono alcuni tentativi per capire “in quali parti dello schermo appaiono i pulsanti”, così puoi costruire un po’ di memoria muscolare per le azioni di tocco.
  • NON PREMERE FORTEMENTE SULLO SCHERMO! Essere veloci non significa romperlo. Non sono responsabile per persone che premono troppo forte sui loro schermi.

Istruzioni

Prima di tutto, accendiamo la macchina e colleghiamo la tastiera USB alla console Bowflex. La puoi trovare sul lato destro:

Indica dove si trova la porta USB della console

Assicuriamoci che la tastiera funzioni premendo il pulsante “Home” sulla tastiera. Dovrebbe far riavviare l’app JRNY.

animazione della console

Android ha una scorciatoia per chiudere l’app corrente tramite il pulsante “Back” se lo tieni premuto per un secondo o giù di lì. Giochiamo un po’ con il pulsante “Back” - continuiamo a chiudere l’app JRNY non appena si riapre fino a quando non inizia a comparire un nuovo dialogo:

animazione della console

Ok, ora la parte divertente: Quel dialogo appartiene al “sistema di verifica dei guasti” di Android stock. Abbiamo appena “forzato Android a pensare” che NautilusLauncher non va bene (bene!). Sfruttiamo quel dialogo.

Non appena appare, tocca su “Informazioni app”. Cliccando su “Informazioni app” apriremo l’app Impostazioni (che è nella lista dei negati di AppMonitorService). Si chiuderà in circa un secondo, quindi dobbiamo essere veloci! Tocca il pulsante “FORCE STOP”, e poi tocca su “OK”.

animazione della console

Non appena puoi cliccare su “OK”, puoi riposarti (bel esercizio, eh?). Ora procediamo con le scoperte su Reddit. Abilitiamo adb cliccando sull’icona della “lente di ingrandimento” nell’angolo in alto a destra e cercando “Opzioni sviluppatore”:

animazione della console

Trova l’indirizzo IP della Console. Il modo più semplice è tramite le Impostazioni Wi-Fi:

animazione della console

Ora che adb è abilitato e abbiamo l’indirizzo IP, passiamo a un computer e connettiamoci con adb. Apri un terminale ed esegui adb connect <Indirizzo IP> (nel mio caso 10.0.0.205):

> adb connect 10.0.0.205
connected to 10.0.0.205:5555

Ti verrà chiesta una conferma sullo schermo la prima volta che ti connetti in remoto tramite adb.

Creiamo un file vuoto all’interno di /sdcard/Pictures/ chiamato nautilus. Puoi leggere di più sul “perché” in Curiosità di Bowflex.

> adb shell touch /sdcard/Pictures/nautilus

Ora ripristiniamo alcune funzionalità. Invia i seguenti comandi tramite il tuo terminale:

> 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

Vedrai apparire l’interfaccia utente:

animazione della console

C’è un passo finale - cambiare l’app di avvio predefinita. Cerca “App predefinite” e imposta Quickstep come app di avvio:

animazione della console

Ora sei libero!

Questo stato si manterrà finché NautilusLauncher sarà forzato a fermarsi. Persiste attraverso i riavvii.

Se vuoi tornare a “stock” basta aprire l’app NautilusLauncher (ti suggerisco fortemente di aver creato il file /sdcard/Pictures/nautilus in anticipo):

animazione della console

Note sul “Sistema di blocco”

NautilusLauncher è il “launcher di Android” predefinito, il che significa che se l’app JRNY si chiude, si riaprirà immediatamente.

C’è anche un altro “blocco di sicurezza”, un servizio in primo piano nell’apk di NautilusLauncher, chiamato AppMonitorService. Decompilando l’apk, puoi vedere tre variabili interessanti:

public static final int MonitorIntervalSeconds = 1;
// Altre variabili
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"};

E così quel servizio sta “proteggendo attivamente” il blocco. Ad ogni chiusura dell’app (attraverso il mantenimento premuto del pulsante “Back”), ci sarà un tentativo di riaprire JRNY. Forzando la sua chiusura, disattiviamo anche tutti i servizi in primo piano.

(gli errori di battitura che potresti vedere nei frammenti di codice provengono dagli stessi sviluppatori di Nautilus, non miei)

Contenuto tradotto da gpt-4-1106-preview

©2022-2024 Sebastián Barrenechea. Tutti i diritti riservati.

Costruito con Astro v4.16.13.