7.7 KiB
Tapjacking
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
Informações Básicas
Tapjacking é um ataque em que um aplicativo malicioso é lançado e posiciona-se sobre um aplicativo vítima. Uma vez que ele obscurece visivelmente o aplicativo vítima, sua interface de usuário é projetada de forma a enganar o usuário para interagir com ele, enquanto ele está passando a interação para o aplicativo vítima.
Na prática, ele impede o usuário de saber que está realmente realizando ações no aplicativo 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, os ataques de tapjacking são automaticamente impedidos pelo Android a partir do Android 12 (API 31 e 30) e superior. Portanto, mesmo que o aplicativo seja vulnerável, você não poderá explorá-lo.
filterTouchesWhenObscured
Se android:filterTouchesWhenObscured
for 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 impedir a exploração dessa 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:
<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 mais recente do Android 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.
Siga as instruções do README para utilizá-la.
FloatingWindowApp
Um projeto de exemplo que implementa o FloatingWindowApp, que pode ser usado para colocar em cima de outras atividades e realizar um ataque de clickjacking, pode ser encontrado em FloatingWindowApp (um pouco antigo, boa sorte para construir o apk).
Qark
{% hint style="danger" %} Parece que este projeto não está mais sendo mantido e essa funcionalidade não está funcionando corretamente. {% endhint %}
Você pode usar o qark com os parâmetros --exploit-apk
--sdk-path /Users/username/Library/Android/sdk
para criar um aplicativo malicioso 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. Usando a Referência do Desenvolvedor Android:
Às vezes, é essencial que um aplicativo possa verificar se uma ação está sendo realizada com o 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 pode 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 das visualizações que fornecem acesso a funcionalidades sensíveis.
Para habilitar a filtragem de toque, chame
setFilterTouchesWhenObscured(boolean)
ou defina o atributo de layout android:filterTouchesWhenObscured como true. Quando habilitado, o framework descartará os toques 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.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Gostaria de ver sua empresa anunciada no HackTricks? Ou gostaria de ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e o repositório hacktricks-cloud.