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

114 lines
9.3 KiB
Markdown
Raw Normal View History

# Android Task Hijacking
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
* 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) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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).
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menace proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Tâche, pile arrière et activités en premier plan
2022-04-28 16:01:33 +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 d'ouverture de chaque activité.
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é, seule **une tâche en premier plan est visible à l'écran**.
Voici un exemple simple de flux d'activité :
2023-06-03 13:10:46 +00:00
* Il n'y a que l'activité 1 en premier plan.
* L'activité 2 est lancée, ce qui pousse l'activité 1 dans la pile arrière. Maintenant, l'activité 2 est en premier plan.
* L'activité 3 est lancée, ce qui pousse à la fois l'activité 1 et 2 dans 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 sur Android.
![](<../../.gitbook/assets/image (548).png>)
### Multitâche Android - Une tâche
Une tâche est composée de plusieurs activités.
![](<../../.gitbook/assets/image (549).png>)
### Multitâche Android - Plusieurs tâches
Android gère généralement plusieurs tâches.
![](<../../.gitbook/assets/image (550).png>)
## Contrôle des tâches
![](<../../.gitbook/assets/image (551).png>)
## Attaque par affinité de tâche
### Affinité de tâche et modes de lancement
L'**affinité de tâche** est un attribut défini dans chaque balise `<activity>` du fichier `AndroidManifest.xml`. Il décrit à quelle tâche une activité préfère se joindre.\
2023-06-03 13:10:46 +00:00
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=""/>
```
**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.\
2023-06-03 13:10:46 +00:00
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
Lorsque le `launchMode` 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.
2023-06-03 13:10:46 +00:00
* **Si la création d'une nouvelle instance d'activité est nécessaire** :\
Le service de gestion des activités (AMS) sélectionne une tâche pour héberger la nouvelle instance créée en recherchant une tâche "correspondante" parmi 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/pirate afin qu'elle se lance dans leur tâche au lieu de créer la sienne**.
* **Sans trouver de tâche "correspondante"** :\
Le 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.
### Attaque
La victime doit avoir l'**application malveillante** installée sur son appareil. Ensuite, elle 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 écran de connexion** que l'application vulnérable, **l'utilisateur n'aura aucun moyen de savoir qu'il saisit ses identifiants dans une application malveillante**.
**Vous pouvez trouver une attaque implémentée ici** : [**https://github.com/az0mb13/Task\_Hijacking\_Strandhogg**](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg)
## Prévention du détournement de tâche
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 souhaite pas que d'autres activités rejoignent les tâches qui lui appartiennent. Une fonction **onBackPressed()** personnalisée peut également être ajoutée pour remplacer le comportement par défaut.
## **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
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
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
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-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) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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).
2022-04-28 16:01:33 +00:00
</details>