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

108 lines
8.1 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 20:35:28 +02:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- 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) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
# Tâche, pile arrière et activités en premier plan
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
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**.
2023-06-03 13:10:46 +00:00
Voici un flux d'activité simple :
2023-06-03 13:10:46 +00:00
* Il n'y a que l'activité 1 en premier plan.
* 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.
![](<../../.gitbook/assets/image (548).png>)
2023-06-03 13:10:46 +00:00
## Multitâche Android - Une tâche
2023-06-03 13:10:46 +00:00
Une tâche est composée de plusieurs activités
![](<../../.gitbook/assets/image (549).png>)
2023-06-03 13:10:46 +00:00
## Multitâche Android - Plusieurs tâches
2023-06-03 13:10:46 +00:00
Android gère généralement plusieurs tâches
![](<../../.gitbook/assets/image (550).png>)
2023-06-03 13:10:46 +00:00
# Boutons de contrôle de tâche
![](<../../.gitbook/assets/image (551).png>)
2023-06-03 13:10:46 +00:00
# Attaque d'affinité de tâche
2023-06-03 13:10:46 +00:00
## Affinité de tâche et modes de lancement
2023-06-03 13:10:46 +00:00
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**.
2023-06-03 13:10:46 +00:00
Nous utiliserons cela lors de la création de notre application PoC.
```markup
<activity android:taskAffinity=""/>
```
2023-06-03 13:10:46 +00:00
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 :
2023-06-03 13:10:46 +00:00
1. standard (par défaut)
2. singleTop
3. **singleTask**
4. singleInstance
2023-06-03 13:10:46 +00:00
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 :
2023-06-03 13:10:46 +00:00
* **Si l'instance de l'activité existe déjà** :\
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.
2023-06-03 13:10:46 +00:00
## Attaque
2023-06-03 13:10:46 +00:00
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**.
2023-06-03 13:10:46 +00:00
**Vous pouvez trouver une attaque mise en œuvre ici :** [**https://github.com/az0mb13/Task\_Hijacking\_Strandhogg**](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)
2023-06-03 13:10:46 +00:00
# Prévention du détournement de tâches
2023-06-03 13:10:46 +00:00
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.
2023-06-03 13:10:46 +00:00
# **Références**
2022-04-05 18:24:52 -04:00
* [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
* [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 20:35:28 +02:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- 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) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.
2022-04-28 16:01:33 +00:00
</details>