Tapjacking
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
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 aveugle l'utilisateur sur le fait 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 permission. Cela est dû au fait que l'application malveillante aura également besoin de cette permission.
Vous pouvez également vérifier la version SDK minimale de l'application, en vérifiant la valeur de android:minSdkVersion
dans le fichier AndroidManifest.xml
. Si la valeur est inférieure à 30, l'application est vulnérable au Tapjacking.
Protection
Android 12 (API 31,32) et supérieur
Selon cette source, les attaques de tapjacking sont automatiquement empĂȘchĂ©es par Android Ă partir d'Android 12 (API 31 & 30) et supĂ©rieur. 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 de touches chaque fois que 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.
S'il est 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 derniĂšre application Android effectuant une attaque Tapjacking (+ invocation avant une activitĂ© exportĂ©e de l'application attaquĂ©e) peut ĂȘtre trouvĂ©e ici : https://github.com/carlospolop/Tapjacking-ExportedActivity.
Suivez les instructions du README pour l'utiliser.
FloatingWindowApp
Un projet exemple implĂ©mentant FloatingWindowApp, qui peut ĂȘtre utilisĂ© pour se superposer Ă d'autres activitĂ©s afin d'effectuer une attaque clickjacking, peut ĂȘtre trouvĂ© dans FloatingWindowApp (un peu ancien, bonne chance pour construire l'apk).
Qark
caution
Il semble que ce projet ne soit plus maintenu et que cette fonctionnalité ne fonctionne plus correctement
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.\
L'atténuation est relativement simple car le développeur peut choisir de ne pas recevoir d'événements tactiles lorsqu'une vue est recouverte par une autre. En utilisant la Référence des développeurs 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 de permission, effectuer un achat ou cliquer sur une publicitĂ©. Malheureusement, une application malveillante pourrait essayer de tromper l'utilisateur pour qu'il effectue ces actions, Ă son insu, en dissimulant le but prĂ©vu de la vue. En remĂšde, le framework offre un mĂ©canisme de filtrage des touches 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 des touches, appelez
setFilterTouchesWhenObscured(boolean)
ou dĂ©finissez l'attribut de mise en page android:filterTouchesWhenObscured sur true. Lorsqu'il est activĂ©, le framework rejettera les touches reçues chaque fois que la fenĂȘtre de la vue est obscurcie par une autre fenĂȘtre visible. En consĂ©quence, la vue ne recevra pas de touches chaque fois qu'un toast, un dialogue ou une autre fenĂȘtre apparaĂźt au-dessus de la fenĂȘtre de la vue.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.