Détournement de Tâches Android

Reading time: 4 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Tâches, Back Stack et Activités au Premier Plan

Dans Android, une tâche est essentiellement un ensemble d'activités avec lesquelles les utilisateurs interagissent pour accomplir un travail spécifique, organisées dans un back stack. Ce stack ordonne les activités en fonction de leur ouverture, l'activité la plus récente étant affichée en haut comme l'activité au premier plan. À tout moment, seule cette activité est visible à l'écran, faisant partie de la tâche au premier plan.

Voici un aperçu rapide des transitions d'activités :

  • Activité 1 commence comme l'unique activité au premier plan.
  • Le lancement de l'Activité 2 pousse l'Activité 1 dans le back stack, amenant l'Activité 2 au premier plan.
  • Le démarrage de l'Activité 3 déplace l'Activité 1 et l'Activité 2 plus loin dans le stack, avec l'Activité 3 maintenant devant.
  • La fermeture de l'Activité 3 ramène l'Activité 2 au premier plan, mettant en avant le mécanisme de navigation des tâches simplifié d'Android.

https://developer.android.com/images/fundamentals/diagram_backstack.png

Attaque par Affinité de Tâche

Aperçu de l'Affinité de Tâche et des Modes de Lancement

Dans les applications Android, l'affinité de tâche spécifie la tâche préférée d'une activité, s'alignant généralement avec le nom du package de l'application. Cette configuration est essentielle pour créer une application de preuve de concept (PoC) pour démontrer l'attaque.

Modes de Lancement

L'attribut launchMode dirige le traitement des instances d'activités au sein des tâches. Le mode singleTask est crucial pour cette attaque, dictant trois scénarios basés sur les instances d'activités existantes et les correspondances d'affinité de tâche. L'exploitation repose sur la capacité de l'application de l'attaquant à imiter l'affinité de tâche de l'application cible, induisant le système Android en erreur pour lancer l'application de l'attaquant au lieu de la cible prévue.

Étapes D'Attaque Détaillées

  1. Installation de l'Application Malveillante : La victime installe l'application de l'attaquant sur son appareil.
  2. Activation Initiale : La victime ouvre d'abord l'application malveillante, préparant l'appareil pour l'attaque.
  3. Tentative de Lancement de l'Application Cible : La victime tente d'ouvrir l'application cible.
  4. Exécution du Détournement : À un moment donné, l'application essaie d'ouvrir la vue singleTask. En raison de l'affinité de tâche correspondante, l'application malveillante est lancée à la place de l'application cible.
  5. Tromperie : L'application malveillante présente un faux écran de connexion ressemblant à l'application cible, trompant l'utilisateur pour qu'il saisisse des informations sensibles.

tip

Notez que pour que cette attaque fonctionne, la vue vulnérable n'a pas besoin d'être exportée à true ni d'être l'activité principale.

Pour une mise en œuvre pratique de cette attaque, référez-vous au dépôt Task Hijacking Strandhogg sur GitHub : Task Hijacking Strandhogg.

Mesures de Prévention

Pour prévenir de telles attaques, les développeurs peuvent :

  • Définir **taskAffinity de la vue singleTask sur une chaîne vide (android:taskAffinity="")
  • Opter pour le mode de lancement singleInstance, garantissant l'isolement de leur application par rapport aux autres.
  • Personnaliser la fonction onBackPressed() pour offrir une protection supplémentaire contre le détournement de tâches.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks