- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
Une tâche est une collection d'activités avec lesquelles les utilisateurs interagissent lorsqu'ils effectuent une certaine tâche. Les activités sont organisées dans une pile - la _**pile arrière**_ - dans l'ordre dans lequel chaque activité est ouverte.
L'activité qui est **affichée** à l'écran est appelée une **activité en premier plan** et sa **tâche** est appelée la **tâche en premier plan**. À un moment donné, **une seule tâche en premier plan est visible à l'écran**.
* L'activité 2 est démarrée, ce qui pousse l'activité 1 vers la pile arrière. Maintenant, l'activité 2 est en premier plan.
* L'activité 3 est démarrée, ce qui pousse les activités 1 et 2 vers la pile arrière.
* Maintenant, lorsque l'activité 3 est fermée, l'activité précédente, c'est-à-dire 2, est automatiquement ramenée en premier plan. C'est ainsi que fonctionne la navigation des tâches dans Android.
L'**affinité de tâche** est un attribut défini dans chaque balise `<activity>` dans le fichier `AndroidManifest.xml`. Il décrit à quelle tâche une activité préfère se joindre.\
Par défaut, chaque activité a la même affinité que le nom du **package**.
Les **modes de lancement** vous permettent de définir comment une nouvelle instance d'une activité est associée à la tâche en cours. L'attribut [`launchMode`](https://developer.android.com/guide/topics/manifest/activity-element#lmode) spécifie une instruction sur la façon dont l'activité doit être lancée dans une tâche.\
Il existe quatre **modes de lancement** différents :
Lorsque le mode de lancement est défini sur `singleTask`, le système Android évalue trois possibilités et l'une d'entre elles est la raison pour laquelle notre attaque est possible. Les voici :
Android reprend l'instance existante au lieu d'en créer une nouvelle. Cela signifie qu'il y a au plus une instance d'activité dans le système sous ce mode.
* **Si la création d'une nouvelle instance d'activité est nécessaire** :\
Le service de gestionnaire d'activité (AMS) sélectionne une tâche pour héberger la nouvelle instance créée en trouvant une tâche « **correspondante** » dans toutes les tâches existantes. **Une activité « correspond » à une tâche si elles ont la même affinité de tâche**. C'est la raison pour laquelle nous pouvons **spécifier la même affinité de tâche que l'application vulnérable dans notre application malveillante/attaquante afin qu'elle se lance dans leur tâche au lieu de créer la sienne**.
* **Sans trouver de tâche « correspondante »** :\
L'AMS crée une nouvelle tâche et fait de la nouvelle instance d'activité l'activité racine de la tâche nouvellement créée.
La victime doit avoir l'**application malveillante** **installée** sur son appareil. Ensuite, il doit **l'ouvrir****avant** d'ouvrir l'**application vulnérable**. Ensuite, lorsque l'**application vulnérable** est **ouverte**, l'**application malveillante** sera **ouverte****à la place**. Si cette application malveillante présente le **même****login** que l'application vulnérable, **l'utilisateur n'aura aucun moyen de savoir qu'il saisit ses informations d'identification dans une application malveillante**.
**Vous pouvez trouver une attaque mise en œuvre ici :** [**https://github.com/az0mb13/Task\_Hijacking\_Strandhogg**](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)
Définir `taskAffinity=""` peut être une solution rapide à ce problème. Le mode de lancement peut également être défini sur **singleInstance** si l'application ne veut pas que d'autres activités rejoignent les tâches qui lui appartiennent. Une fonction personnalisée **onBackPressed()** peut également être ajoutée pour remplacer le comportement par défaut.
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au repo [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.