hacktricks/mobile-pentesting/android-app-pentesting/tapjacking.md

83 lines
7.9 KiB
Markdown
Raw Normal View History

# Tapjacking
<details>
<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>
* 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 [**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).
</details>
## **Informations de base**
**Tapjacking** est une attaque où une **application malveillante** est lancée et **se positionne au-dessus d'une application victime**. Une fois qu'elle obscurcit visiblement l'application victime, son interface utilisateur est conçue de manière à tromper l'utilisateur pour qu'il interagisse avec elle, tout en transmettant l'interaction à l'application victime.\
En effet, cela **empêche l'utilisateur de savoir qu'il effectue réellement des actions sur l'application victime**.
### Détection
Pour détecter les applications vulnérables à cette attaque, vous devez rechercher des **activités exportées** dans le manifeste Android (notez qu'une activité avec un intent-filter est automatiquement exportée par défaut). Une fois que vous avez trouvé les activités exportées, **vérifiez si elles nécessitent une autorisation**. C'est parce que l'**application malveillante aura également besoin de cette autorisation**.
### Protection
#### Android 12 (API 31,32) et versions supérieures
[**Selon cette source**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** les attaques de tapjacking sont automatiquement empêchées par Android à partir d'Android 12 (API 31 et 30) et versions supérieures. Donc, même si l'application est vulnérable, vous **ne pourrez pas l'exploiter**.
#### `filterTouchesWhenObscured`
Si **`android:filterTouchesWhenObscured`** est défini sur **`true`**, la `View` ne recevra pas les touches lorsque la fenêtre de la vue est obscurcie par une autre fenêtre visible.
#### **`setFilterTouchesWhenObscured`**
L'attribut **`setFilterTouchesWhenObscured`** défini sur true peut également empêcher l'exploitation de cette vulnérabilité si la version d'Android est inférieure.\
Si défini sur **`true`**, par exemple, un bouton peut être automatiquement **désactivé s'il est obscurci** :
```markup
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
```
## Exploitation
### Tapjacking-ExportedActivity
La plus **récente application Android** réalisant une **attaque Tapjacking** (+ invocation avant une **activité exportée** de l'application attaquée) peut être trouvée sur [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
Suivez les **instructions du README pour l'utiliser**.
### FloatingWindowApp
Un projet d'exemple implémentant **FloatingWindowApp**, qui peut être utilisé pour placer une fenêtre flottante au-dessus d'autres activités afin de réaliser une attaque de clickjacking, peut être trouvé sur [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un peu ancien, bonne chance pour construire l'APK).
### Qark
{% hint style="danger" %}
Il semble que ce projet ne soit plus maintenu et que cette fonctionnalité ne fonctionne plus correctement.
{% endhint %}
Vous pouvez utiliser [**qark**](https://github.com/linkedin/qark) avec les paramètres `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` pour créer une application malveillante afin de tester les vulnérabilités potentielles de **Tapjacking**.
La mitigation est relativement simple car le développeur peut choisir de ne pas recevoir les événements tactiles lorsque une vue est recouverte par une autre. En utilisant la [Référence du développeur Android](https://developer.android.com/reference/android/view/View#security) :
> Parfois, il est essentiel qu'une application puisse vérifier qu'une action est effectuée avec la pleine connaissance et le consentement de l'utilisateur, comme accorder une demande d'autorisation, effectuer un achat ou cliquer sur une publicité. Malheureusement, une application malveillante pourrait essayer de tromper l'utilisateur en effectuant ces actions, sans le savoir, en dissimulant l'objectif réel de la vue. Pour remédier à cela, le framework propose un mécanisme de filtrage tactile qui peut être utilisé pour améliorer la sécurité des vues qui fournissent un accès à des fonctionnalités sensibles.
>
> Pour activer le filtrage tactile, appelez [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) ou définissez l'attribut de mise en page android:filterTouchesWhenObscured sur true. Lorsqu'il est activé, le framework ignorera les touches reçues chaque fois que la fenêtre de la vue est recouverte par une autre fenêtre visible. Par conséquent, la vue ne recevra pas de touches chaque fois qu'un toast, une boîte de dialogue ou une autre fenêtre apparaît au-dessus de la fenêtre de la vue.
<details>
<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>
* 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 [**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).
</details>