7.9 KiB
Tapjacking
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 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 !
- Découvrez The PEASS Family, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
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, 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 :
<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.
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 (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 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 :
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)
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.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 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 !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.