Wie funktioniert das Rooten?

23

Oder wie rolle ich mein Gerät ohne einen Rooter?

Die Anweisungen zum Starten von Android-Geräten, die ich gesehen habe, haben normalerweise die folgende Form:

  1. Herunterladen Gingerbreak.apk
  2. Starte Gingerbreak und klicke auf "root device"
  3. Beobachten Sie, dass Superuser.apkdies, möglicherweise zusammen mit busyboxanderen Dingen, magisch installiert wurde , und genießen Sie Ihre wurzelnde Güte.

Was ich wissen möchte, ist Folgendes: Wie geschieht das Verwurzeln tatsächlich? Was macht Gingerbreak?

Ich verstehe das Endergebnis des Rootens:

  • su ist anwesend und arbeitet
  • Superuser.apk ist installiert und kontrolliert den Zugriff auf su
  • Es gibt verschiedene Dienstprogramme, die von BusyBox bereitgestellt werden (optional?)

Ich denke auch, dass ich die Grundidee verstehe, wie Gingerbreak gestartet wird - es nutzt eine lokale Sicherheitsanfälligkeit bezüglich der Eskalation von Berechtigungen aus und nutzt seine neu entdeckten Fähigkeiten, um Superuser und alles, was sonst noch nötig ist, bereitzustellen.

Wenn ich mich also nicht in dem oben dargelegten Verständnis irre, ist der Kern der Sache, die ich wissen möchte, was der Root-Installer tut, um den Superuser bereitzustellen und zu aktivieren. Es scheint, als Superuser.apkwürde es nicht ausreichen , den richtigen Ort zu wählen. Wie wird Root-Zugriff gewährt? Wie kommt es, dass der Zugriff für andere Anwendungen gemindert wird?

Was macht Gingerbreak nach dem Exploit, um den Root-Zugriff zu ermöglichen und zu sichern?

Michael Ekstrand
quelle

Antworten:

16

Die APK und der Exploit bewirken (normalerweise) Folgendes:

  • Das APK legt die richtigen Dateien am richtigen Ort ab, um den Exploit auszuführen
  • Die APK führt den Exploit aus
  • Der Exploit versucht, Root-Zugriff zu erlangen
  • Wenn dies erfolgreich ist, stellt der Exploit / system als Lese- / Schreibzugriff wieder her und führt das Installationsskript aus
  • Das Installationsskript versucht, das su-Binär- und Superuser-APK zu installieren, und startet neu

Als Beispiel wird auf dieser Seite beschrieben, wie der Angreifer versucht, erhöhte Berechtigungen zu erlangen.

Sparx
quelle
2
Vielen Dank. Ich denke, dies schränkt meine eigentliche Frage weiter ein - was genau macht das Installationsskript? Oder wo finde ich eine Kopie zum Lesen? Die meisten Dokumente, die ich sehe, sind sehr undurchsichtig - "lade dieses APK herunter, es funktioniert" mit einem Link zu einer zufälligen Dateifreigabeseite.
Michael Ekstrand
su ermöglicht die Erhöhung von Berechtigungen in Unix-ähnlichen Umgebungen (worauf Android basiert). Wenn die su-Binärdatei installiert ist, können Apps / Skripte die Befehle su und sudo verwenden, um Teile des Dateisystems auszuführen und auf diese zuzugreifen, die normalerweise für normale Benutzer beschränkt sind. Im Wesentlichen ist dies der Grund, warum man ein Telefon rootet - um Zugang zu "eingeschränkten" Teilen des Systems zu erhalten und Befehle ausführen zu können, die ein gewöhnlicher Benutzer nicht ausführen darf.
Sparx
9

Nachdem ich viel gegraben hatte, fand ich es endlich heraus. Ich habe mich geirrt, wo die Magie ist - sie ist nicht im Installationsskript; Alles, was Sie tun müssen, ist, die Binärdateien suund Superuser.apkan die richtige Stelle zu setzen und ihre Berechtigungen festzulegen. Es ist also wirklich so einfach wie das Ablegen von Dateien und das Festlegen von Berechtigungen. Keine magische Verkabelung.

Die Magie geschieht in der suBinärdatei (siehe die Quelle und auch diese Frage ). Ich habe (fälschlicherweise) gedacht, dass dies suein Standard suist und dass die Dinge irgendwie so verdrahtet sind, dass ein mäßiger Zugriff auf diese Binärdatei möglich ist Superuser.apk.

Falsch. Was tatsächlich passiert, ist weitaus einfacher: Superuser bietet eine benutzerdefinierte Implementierung su, die den Zugriff über Superuser und seine autorisierte Anwendungsdatenbank authentifiziert.

Das Rooten ist also so einfach, wie @Sparx gesagt hat. Die bereitgestellte Software enthält die Magie.

Michael Ekstrand
quelle
Ich denke, dies vermisst eine wichtige Sache: das suist selbst überhaupt keine Magie, die einzige Magie daran ist, dass das Betriebssystem es speziell behandelt. Alles, was es tun muss, ist "OK" oder "Nicht OK" zurückzugeben, wenn das Betriebssystem fragt, ob eine bestimmte Anwendung die Berechtigungen erhöhen darf. Wenn es fehlt oder immer "Nicht OK" zurückgibt, können normale Apps niemals root werden. Das Rooten ist also im Grunde der Vorgang des Platzierens einer suBinärdatei, die manchmal "OK" zurückgibt, an der geschützten Stelle auf einem System, auf dem dies nicht möglich sein soll.
RomanSt
4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionsals ob dies ohne einen Exploit einfach wäre, der Exploit ist die Magie.
Alex
1
@ Alex Nicht ganz. Ich habe speziell versucht herauszufinden, was ein Rooter nach dem Exploit macht . In diesem Fall, weil ich über ADB root-Zugriff hatte, wollte ich keinen Exploit unnötig ausführen.
Michael Ekstrand