# Tapjacking
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras maneiras de apoiar o HackTricks: * Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
## **Informações Básicas** **Tapjacking** é um ataque em que um **aplicativo malicioso** é lançado e **se posiciona sobre um aplicativo da vítima**. Uma vez que ele obscurece visualmente o aplicativo da vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto está passando a interação para o aplicativo da vítima.\ Na prática, ele **cega o usuário, fazendo com que ele não saiba que está realmente realizando ações no aplicativo da vítima**. ### Detecção Para detectar aplicativos vulneráveis a esse ataque, você deve procurar por **atividades exportadas** no manifesto do Android (observe que uma atividade com um intent-filter é automaticamente exportada por padrão). Depois de encontrar as atividades exportadas, **verifique se elas requerem alguma permissão**. Isso ocorre porque o **aplicativo malicioso também precisará dessa permissão**. ### Proteção #### Android 12 (API 31,32) e superior [**De acordo com esta fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** os ataques de tapjacking são automaticamente impedidos pelo Android a partir do Android 12 (API 31 e 30) e superiores. Portanto, mesmo que o aplicativo seja vulnerável, você **não conseguirá explorá-lo**. #### `filterTouchesWhenObscured` Se **`android:filterTouchesWhenObscured`** estiver definido como **`true`**, a `View` não receberá toques sempre que a janela da visualização estiver obscurecida por outra janela visível. #### **`setFilterTouchesWhenObscured`** O atributo **`setFilterTouchesWhenObscured`** definido como true também pode prevenir a exploração dessa vulnerabilidade se a versão do Android for mais antiga.\ Se definido como **`true`**, por exemplo, um botão pode ser automaticamente **desativado se estiver obscurecido**: ```xml ``` ## Exploração ### Tapjacking-ExportedActivity A aplicação **Android mais recente** que realiza um ataque de Tapjacking (+ invocando antes de uma atividade exportada da aplicação atacada) pode ser encontrada em: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity). Siga as **instruções do README para utilizá-la**. ### FloatingWindowApp Um projeto de exemplo que implementa **FloatingWindowApp**, o qual pode ser utilizado para colocar em cima de outras atividades para realizar um ataque de clickjacking, pode ser encontrado em [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (um pouco antigo, boa sorte construindo o apk). ### Qark {% hint style="danger" %} Parece que este projeto não está mais sendo mantido e esta funcionalidade não está mais funcionando corretamente {% endhint %} Você pode usar [**qark**](https://github.com/linkedin/qark) com os parâmetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para criar uma aplicação maliciosa para testar possíveis vulnerabilidades de **Tapjacking**. A mitigação é relativamente simples, pois o desenvolvedor pode optar por não receber eventos de toque quando uma visualização é coberta por outra. Utilizando a [Referência do Desenvolvedor Android](https://developer.android.com/reference/android/view/View#security): > Às vezes é essencial que um aplicativo seja capaz de verificar que uma ação está sendo realizada com pleno conhecimento e consentimento do usuário, como conceder uma solicitação de permissão, fazer uma compra ou clicar em um anúncio. Infelizmente, um aplicativo malicioso poderia tentar enganar o usuário para realizar essas ações, sem saber, ocultando o propósito pretendido da visualização. Como remédio, o framework oferece um mecanismo de filtragem de toque que pode ser usado para melhorar a segurança de visualizações que fornecem acesso a funcionalidades sensíveis. > > Para habilitar a filtragem de toque, chame [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) ou defina o atributo de layout android:filterTouchesWhenObscured como true. Quando habilitado, o framework descartará toques que forem recebidos sempre que a janela da visualização estiver obscurecida por outra janela visível. Como resultado, a visualização não receberá toques sempre que um toast, diálogo ou outra janela aparecer acima da janela da visualização.