Tapjacking
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Tapjacking é um ataque onde um aplicativo malicioso é lançado e se posiciona em cima de um aplicativo vítima. Uma vez que ele obscurece visivelmente o aplicativo vítima, sua interface de usuário é projetada de tal forma a enganar o usuário para interagir com ele, enquanto passa a interação para o aplicativo vítima. Na prática, isso cega o usuário para saber que ele está realmente realizando ações no aplicativo vítima.
Para detectar aplicativos 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ê tenha encontrado as atividades exportadas, verifique se elas requerem alguma permissão. Isso porque o aplicativo malicioso também precisará dessa permissão.
De acordo com esta fonte, ataques de tapjacking são automaticamente prevenidos pelo Android a partir do Android 12 (API 31 & 30) e superior. Portanto, mesmo que o aplicativo seja vulnerável, você não poderá explorá-lo.
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 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:
O mais recente aplicativo Android realizando um ataque de Tapjacking (+ invocando antes de uma atividade exportada do aplicativo atacado) pode ser encontrado em: https://github.com/carlospolop/Tapjacking-ExportedActivity.
Siga as instruções do README para usá-lo.
Um projeto de exemplo implementando FloatingWindowApp, que pode ser usado para sobrepor outras atividades para realizar um ataque de clickjacking, pode ser encontrado em FloatingWindowApp (um pouco antigo, boa sorte construindo o apk).
Parece que este projeto agora não está mais mantido e essa funcionalidade não está funcionando corretamente
Você pode usar 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 está 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 um pedido 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 que ele perceba, 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 verdadeiro. 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.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)