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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
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.
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
- Installation de l'Application Malveillante : La victime installe l'application de l'attaquant sur son appareil.
- Activation Initiale : La victime ouvre d'abord l'application malveillante, préparant l'appareil pour l'attaque.
- Tentative de Lancement de l'Application Cible : La victime tente d'ouvrir l'application cible.
- 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.
- 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
- https://blog.dixitaditya.com/android-task-hijacking/
- https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.