Come funziona il rooting?


23

Oppure, come posso effettuare il root del mio dispositivo senza un rooter?

Le istruzioni di rooting per i dispositivi Android che ho visto sono in genere nel seguente formato:

  1. Scaricare Gingerbreak.apk
  2. Esegui Gingerbreak, fai clic su "dispositivo root"
  3. Osserva che Superuser.apkè stato installato magicamente, possibilmente insieme ad busyboxaltre cose, e goditi la tua bontà radicale.

Quello che voglio sapere è questo: come avviene realmente il rooting? Cosa fa Gingerbreak?

Capisco il risultato finale del rooting:

  • su è presente e funzionante
  • Superuser.apk è installato e controlla l'accesso a su
  • Sono presenti varie utility, fornite da BusyBox (opzionale?)

Penso anche di aver compreso l'idea di base di come Gingerbreak ha iniziato: sfrutta alcune vulnerabilità di escalation di privilegi locali e utilizza i suoi nuovi poteri per distribuire Superuser e qualsiasi altra cosa sia necessaria.

Quindi, a meno che non mi sbagli in alcune delle intese che ho esposto sopra, il nocciolo della cosa che voglio sapere è cosa fa il root installer per distribuire e attivare Superuser. Sembra che il solo posto Superuser.apknel posto giusto non sia sufficiente: come si ottiene l'accesso root? Come viene collegato per moderare l'accesso per altre applicazioni?

Cosa fa Gingerbreak post-exploit per abilitare e proteggere l'accesso root?


Risposte:


16

Ciò che l'APK e l'exploit fanno (di solito) è il seguente:

  • L'APK mette i file giusti nel posto giusto per eseguire l'exploit
  • L'APK esegue l'exploit
  • L'exploit tenta di ottenere l'accesso come root
  • Se ha esito positivo, l'exploit rimonta / sistema come lettura / scrittura ed esegue lo script di installazione
  • Lo script di installazione tenta di installare l'APK su binario e superutente e si riavvia

Ad esempio, questa pagina descrive in dettaglio come l'exploit rageagainstthage tenta di ottenere privilegi elevati.


2
Grazie. Penso che questo restringa ulteriormente la mia vera domanda: cosa fa esattamente lo script di installazione? O dove posso trovarne una copia da leggere? La maggior parte dei documenti che vedo sono molto opachi: "scarica questo APK, funziona" con un link ad un sito di condivisione file casuale.
Michael Ekstrand,

su consente l'elevazione dei privilegi in ambienti simili a Unix (su cui si basa Android). Quando è installato il binario su, le app / gli script possono quindi utilizzare i comandi su e sudo per eseguire e accedere a parti del file system che sono normalmente limitate per gli utenti ordinari. In sostanza, questo è il motivo per cui si fa il root di un telefono: essere in grado di accedere a parti "limitate" del sistema ed eseguire comandi che un utente ordinario non può eseguire.
Sparx,

9

Dopo aver scavato molto, ho finalmente capito. Ho sbagliato su dove si trova la magia - non è nello script di installazione; tutto quello che deve fare è mettere i binari sue Superuser.apknel posto giusto e impostare i loro permessi. Quindi è davvero semplice come eliminare i file sul posto e impostare le autorizzazioni. Nessun cablaggio magico.

La magia avviene nel subinario (vedi la fonte e anche questa domanda ). Stavo (erroneamente) pensando che sufosse uno standard sue che le cose fossero in qualche modo collegate per moderare l'accesso a quel binario Superuser.apk.

Sbagliato. Ciò che effettivamente accade è molto più semplice: Superuser fornisce un'implementazione personalizzata suche autentica l'accesso tramite Superuser e il suo database di applicazioni autorizzato.

Quindi il processo di rooting è semplice come ha detto @Sparx. Il software distribuito contiene la magia.


Penso che manchi una cosa importante: la sustessa non è affatto magia, l'unica magia a riguardo è che il sistema operativo la tratta in modo speciale. Tutto ciò che deve fare è restituire "OK" o "Non OK" quando viene richiesto dal sistema operativo se consentire a una particolare applicazione di elevare le autorizzazioni. Se manca o restituisce sempre "Non OK", le app normali non potranno mai ottenere root. Quindi il rooting è fondamentalmente il processo di posizionamento di un subinario che a volte può restituire "OK", nella posizione protetta su un sistema che non dovrebbe consentire che ciò venga fatto.
Roman,

4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionscome se ciò fosse facile senza un exploit, l'exploit è la magia.
Alex,

1
@Alex Non proprio. Stavo specificamente cercando di capire cosa fa un post-sfruttatore . In questo caso, poiché avevo accesso root tramite ADB, quindi non volevo eseguire inutilmente un exploit.
Michael Ekstrand,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.