Comment fonctionne l'enracinement?

23

Ou, comment rooter mon appareil sans rooteur?

Les instructions d'enracinement pour les appareils Android que j'ai vus sont généralement sous la forme suivante:

  1. Télécharger Gingerbreak.apk
  2. Exécutez Gingerbreak, cliquez sur "appareil racine"
  3. Observez ce qui Superuser.apka été installé comme par magie, éventuellement avec busyboxet d'autres choses, et profitez de votre bonté rooty.

Ce que je veux savoir, c'est ceci: comment l'enracinement se produit-il réellement? Que fait Gingerbreak?

Je comprends le résultat final de l'enracinement:

  • su est présent et travaille
  • Superuser.apk est installé et contrôle l'accès à su
  • Divers utilitaires sont présents, fournis par BusyBox (en option?)

Je pense également que je comprends l'idée de base de la façon dont Gingerbreak démarre - il exploite une vulnérabilité d'escalade de privilèges locale et utilise ses nouveaux pouvoirs pour déployer le superutilisateur et tout ce qui est nécessaire.

Donc, à moins que je ne me trompe dans une partie de la compréhension que j'ai exposée ci-dessus, l'essentiel de ce que je veux savoir est ce que fait le programme d'installation racine pour déployer et activer le superutilisateur. Il semble que le simple placement Superuser.apkau bon endroit ne suffirait pas - comment obtenir un accès root autorisé? Comment est-il connecté pour modérer cet accès pour d'autres applications?

Que fait Gingerbreak après l'exploitation pour activer et sécuriser l'accès root?

Michael Ekstrand
la source

Réponses:

16

Ce que l'APK et l'exploit font (généralement) sont les suivants:

  • L'APK met les bons fichiers au bon endroit pour exécuter l'exploit
  • L'APK exécute l'exploit
  • L'exploit tente d'accéder à l'accès root
  • S'il réussit, l'exploit remonte / système en lecture-écriture et exécute le script d'installation
  • Le script d'installation tente d'installer le fichier APK binaire et superutilisateur et redémarre

À titre d'exemple, cette page détaille comment l'exploit rageastainecage tente d'obtenir des privilèges élevés.

Sparx
la source
2
Merci. Je pense que cela réduit ma vraie question - que fait exactement le script d'installation? Ou où puis-je en trouver une copie à lire? La plupart des documents que je vois sont très opaques - «téléchargez ce fichier APK, cela fonctionne» avec un lien vers un site de partage de fichiers aléatoire.
Michael Ekstrand
su permet une élévation des privilèges dans les environnements de type Unix (sur lesquels Android est basé). Lorsque le binaire su est installé, les applications / scripts peuvent ensuite utiliser les commandes su et sudo pour exécuter et accéder aux parties du système de fichiers qui sont normalement réservées aux utilisateurs ordinaires. Essentiellement, c'est pourquoi on enracine un téléphone - pour pouvoir accéder à des parties "restreintes" du système et pour pouvoir exécuter des commandes qu'un utilisateur ordinaire n'est pas autorisé à exécuter.
Sparx
9

Après avoir creusé beaucoup, j'ai finalement compris. J'avais tort sur l'endroit où se trouve la magie - ce n'est pas dans le script d'installation; il suffit de placer les binaires suet Superuser.apkau bon endroit et de définir leurs autorisations. C'est donc aussi simple que de déposer des fichiers en place et de définir des autorisations. Pas de câblage magique.

La magie opère dans le subinaire (voir la source et aussi cette question ). Je pensais (à tort) que suc'était une norme su, et que les choses étaient en quelque sorte câblées pour un accès modéré à ce binaire Superuser.apk.

Faux. Ce qui se passe réellement est beaucoup plus simple: Superuser fournit une implémentation personnalisée suqui authentifie l'accès via Superuser et sa base de données d'application autorisée.

Le processus d'enracinement est donc aussi simple que l'a dit @Sparx. Le logiciel déployé contient la magie.

Michael Ekstrand
la source
Je pense que cela manque une chose importante: ce sun'est pas du tout de la magie, la seule magie à ce sujet est que l'OS le traite spécialement. Tout ce qu'il a à faire est de retourner "OK" ou "Pas OK" lorsque le système d'exploitation lui demande s'il autorise une application particulière à élever les autorisations. S'il est manquant ou renvoie toujours "Pas OK", les applications normales ne pourront jamais être rootées. L'enracinement est donc essentiellement le processus de placement d'un subinaire qui peut parfois retourner "OK", à l'emplacement protégé sur un système qui n'est pas censé permettre que cela soit fait.
RomanSt
4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionscomme si ce serait facile sans exploit, l'exploit est la magie.
Alex
1
@Alex Pas tout à fait. J'essayais spécifiquement de comprendre ce qu'un rooter fait après l'exploitation . Dans ce cas, parce que j'avais un accès root via ADB, je ne voulais donc pas exécuter inutilement un exploit.
Michael Ekstrand