hacktricks/mobile-pentesting/android-app-pentesting/android-task-hijacking.md

6.4 KiB

Android Task Hijacking

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Groupe de sécurité Try Hard

{% embed url="https://discord.gg/tryhardsecurity" %}


Tâche, Pile arrière 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 une tâche spécifique, organisées dans une pile arrière. Cette pile classe les activités en fonction de leur ouverture, l'activité la plus récente étant affichée en haut comme activité au premier plan. À tout moment, seule cette activité est visible à l'écran, faisant partie de la tâche au premier plan.

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

  • Activité 1 démarre comme seule activité au premier plan.
  • Le lancement de l'Activité 2 pousse l'Activité 1 dans la pile arrière, 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 la pile, avec l'Activité 3 maintenant en premier plan.
  • La fermeture de l'Activité 3 ramène l'Activité 2 au premier plan, mettant en valeur 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é, correspondant généralement au nom du package de l'application. Cette configuration est essentielle pour créer une application de preuve de concept (PoC) démontrant l'attaque.

Modes de lancement

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

Étapes détaillées de l'attaque

  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 de détournement : 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.

Pour une mise en œuvre pratique de cette attaque, consultez le 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 sur une chaîne vide et opter pour le mode de lancement singleInstance, assurant l'isolation de leur application par rapport aux autres. Personnaliser la fonction onBackPressed() offre une protection supplémentaire contre le détournement de tâche.

Références

Groupe de sécurité Try Hard

{% embed url="https://discord.gg/tryhardsecurity" %}

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :