Tapjacking e outros golpes no Android: você está realmente usando o aplicativo? Eis a questão!

Tapjacking e outros golpes no Android: você está realmente usando o aplicativo? Eis a questão!

Detectar de forma proativa a existência de códigos maliciosos que buscam atacar dispositivos que funcionam com o sistema operacional Android é um processo complicado, pois existe a combinação de diferentes fatores. Em particular, os componentes e permissões definidas nas interfaces do sistema podem ser utilizados tanto com fins legítimos ou maliciosos, ou seja, é impossível

Detectar de forma proativa a existência de códigos maliciosos que buscam atacar dispositivos que funcionam com o sistema operacional Android é um processo complicado, pois existe a combinação de diferentes fatores. Em particular, os componentes e permissões definidas nas interfaces do sistema podem ser utilizados tanto com fins legítimos ou maliciosos, ou seja, é impossível

Em particular, os componentes e permissões definidas nas interfaces do sistema podem ser utilizados tanto com fins legítimos ou maliciosos, ou seja, é impossível fazer uma longa lista de permissões como referência para definir um comportamento malicioso.

Através de algo tão simples como a superposição de componentes de execução e algumas permissões, os cibercriminosos podem roubar dados privados ou ganhar o controle remoto do sistema. Além disso, existe uma variante de tais ataques que permite ao cibercriminoso esconder suas atividades para baixar outras ameaças ou alterar a configuração do sistema, conhecida como tapjacking.

Sequestrando os toques do usuário

O tapjacking consiste na captura dos toques que o usuário dá sobre a tela ao mostrar duas atividades sobrepostas. Dessa forma, o usuário acredita que realiza toques sobre a atividade que está vendo, enquanto isso, na verdade, estão sendo desviados para uma atividade subjacente, que permanece escondida da tela.

As consequências desses ataques podem gerar verdadeiros estragos. Por meio desse mecanismo, um atacante pode distribuir oficialmente um aplicativo popular que solicite poucas permissões, como um jogo “do momento”, forçando a instalação de outros aplicativos que, de outra forma, terminam despertando a desconfiança do usuário devido à longa lista de permissões solicitadas. Tudo isso, utilizando o desconhecimento de quem está utilizando o dispositivo.

Esse comportamento é possível com a utilização de um tipo de atividade de alerta (TYPE_SYSTEM_ALERT) disponível na API do sistema. Para poder executar essas atividades, o aplicativo solicita permissões especiais (SYSTEM_ALERT_WINDOW), que podem ser aceitas oportunamente pelos usuários.

O atacante também pode configurar outro tipo de parâmetro para determinar os eventos que serão ou não capturados pela atividade. Em particular, o parâmetro FLAG_NOT_TOUCH_MODAL determinará que todos as ações sejam transmitidos à atividade subjacente.

image_3Esse tipo de “brecha”, na interação entre os aplicativos, pode terminar permitindo a realização de mudanças na configuração do sistema, além de ações em nome do usuário em aplicativos previamente instalados, ou o download e instalação de outras ameaças informáticas através de diversas fontes, pela internet ou mesmo pela Play Store.

Na imagem abaixo podemos observar uma demontração, na qual um hipotético jogo distribuído através do mercado oficial para aplicativos no Android inicia imperceptivelmente a instação do Twitter e aceita as permissões necessárias. Nas figuras da esquerda vemos o que poderia ser apresentado ao usuário pela tela, enquanto à direita observarmos (com um fundo transparente) quais ações ganham lugar de forma camuflada.

image_4

Inclusive, esse tipo de atividade de alerta do sistema, que se mantém sempre sobre outras, pode terminar sendo utilizada para a produção do ransomware.

Diálogos para o roubo de informações confidenciais

A superposição de atividades tem sido e é uma das técnicas mais utilizadas pelos cibercriminosos para o roubo de credenciais no Android. Nesse sistema, o malware monitora constantemente o nome do pacote da atividade que está sendo executada para o usuário, até que coincida com o nome do pacote do aplicativo alvo. Em seguida, executa um diálogo próprio com a estética do aplicativo legítimo, solicitando as credenciais do usuário.

Ao desencadear o comportamento malicioso, quando o usuário voluntariamente inicia o aplicativo genuíno, o atacante consegue reduzir as suspeitas, fazendo com que o usuário forneça suas credenciais de crédito.

Uma amostra que exemplifica essa conduta é Android/Jagonca.A. Esse malware busca roubar números de cartões de crédito, simulando ser a Google Play Store, assim como credenciais de autenticação para duas entidades bancárias em particular.

Na imagem a seguir podemos observar o fragmento de código que continuamente avalia a atividade que está sendo mostrada na tela.

image_11

Como consequência, executa as atividades fraudulentas correspondentes aos diálogos pertinentes segundo o aplicativo que o usuário tenha iniciado.

image_21

É importante destacar que, no exemplo anterior, o usuário interage com o quadro de diálogo mostrado, sendo possível perceber a farsa.

Como podemos nos proteger?

Temos visto como os aplicativos aparentemente inocentes podem ser utilizados para baixar (nos celulares) outros executáveis como comportamentos prejudiciais. Agora, sabemos que é importante ter bastante cuidado quando aceitamos solicitações que permitem a utilização de janelas de alerta do sistema, avaliando se realmente confiamos na execução do aplicativo.

Também devemos atualizar nossas plataformas móveis sempre que possível, incorporando as últimas barreiras de proteção que as novas interfaces oferecem para os usuários finais.

Imagem: ©Judit Klein/Flickr

Discussão