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

86 lines
6.7 KiB
Markdown

# Tapjacking
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## **Informações Básicas**
**Tapjacking** é um ataque onde uma **aplicação maliciosa** é lançada e **se posiciona em cima de uma aplicação vítima**. Uma vez que obscurece visualmente o app vítima, sua interface de usuário é projetada de tal forma a enganar o usuário para interagir com ela, enquanto passa a interação para o app vítima.\
Na prática, está **cegando o usuário para que ele não perceba que está realmente realizando ações no app vítima**.
### Detecção
Para detectar apps vulneráveis a este ataque, você deve procurar por **atividades exportadas** no manifesto do Android (note que uma atividade com um intent-filter é automaticamente exportada por padrão). Uma vez que você encontrou as atividades exportadas, **verifique se elas requerem alguma permissão**. Isso porque a **aplicação maliciosa também precisará dessa permissão**.
### Proteção
#### Android 12 (API 31,32) e superiores
[**De acordo com esta fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** ataques de tapjacking são automaticamente prevenidos pelo Android a partir do Android 12 (API 31 & 32) em diante. Então, mesmo que a aplicação seja vulnerável, você **não será capaz de explorá-la**.
#### `filterTouchesWhenObscured`
Se **`android:filterTouchesWhenObscured`** estiver definido como **`true`**, a `View` não receberá toques sempre que a janela da view estiver obscurecida por outra janela visível.
#### **`setFilterTouchesWhenObscured`**
O atributo **`setFilterTouchesWhenObscured`** definido como verdadeiro também pode prevenir a exploração desta vulnerabilidade se a versão do Android for inferior.\
Se definido como **`true`**, por exemplo, um botão pode ser automaticamente **desativado se estiver obscurecido**:
```markup
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
```
## Exploração
### Tapjacking-ExportedActivity
A aplicação **Android mais recente** que realiza um ataque de **Tapjacking** (invocando antes 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 usá-lo**.
### FloatingWindowApp
Um projeto de exemplo implementando **FloatingWindowApp**, que pode ser usado para sobrepor outras atividades e realizar um ataque de clickjacking, pode ser encontrado em [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (um pouco antigo, boa sorte ao construir o apk).
### Qark
{% hint style="danger" %}
Parece que este projeto agora está sem manutenção e essa funcionalidade não está funcionando corretamente mais.
{% 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 está coberta por outra. Usando a [Referência para Desenvolvedores Android](https://developer.android.com/reference/android/view/View#security):
> Às vezes, é essencial que uma aplicação possa verificar que uma ação está sendo realizada com o conhecimento e consentimento total do usuário, como conceder uma solicitação de permissão, fazer uma compra ou clicar em um anúncio. Infelizmente, uma aplicação maliciosa poderia tentar enganar o usuário para realizar essas ações, sem o seu conhecimento, 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 verdadeiro. Quando habilitado, o framework descartará toques que são 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.
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas 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 [**material oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>