Pesquisa de Ameaças

Malware finge ser o aplicativo Dual Instance para roubar as credenciais dos usuários do Twitter

Lisandro Carmona de Souza, 7 Novembro 2016

Instalando um novo aplicativo você pode instalar várias cópias do autêntico Twitter nos seus aparelhos: como o preço de um malware.

Você tem mais de uma conta no Twitter ou no WhatsApp? Se a sua resposta foi sim, você deseja entrar em várias dessas contas ao mesmo tempo? Até o momento, fazer login em múltiplas contas da mesma rede social ao mesmo tempo só é possível utilizando mais de um aparelho. A tecnologia Dual Instance permite que você execute mais de uma instância de um aplicativo móvel no mesmo aparelho. Como sabemos, não leva muito tempo para que os autores de malware sigam as novas tendências. Recentemente, ciberiminosos resolveram criar versões maliciosas dos aplicativos Dual Instance.

Se você instalou o aplicativo Twitter original no seu aparelho, é impossível instalar outro Twitter, a não ser que seja um aplicativo falso. Contudo, se você tiver um malware recentemente descoberto, você poderá baixar outra versão do autêntico aplicativo do Twitter no seu aparelho. Assim você poderá usar outra conta. Mas como acontece com todos os malwares, isto tem um preço.

Este malware, que nós chamaremos 'Dual Instance' a partir de agora, foi capturado em um grupo de chat online na China. Por causa de algumas regras especiais, alguns sites estrangeiros, incluindo o Twitter, não podem ser acessados diretamente na China. Os autores deste malware tiveram a ideia de criar uma versão "modificada" (não a aplicação original nem uma versão ilegal) do aplicativo Twitter que permite os usuários façam login no Twitter sem necessidade de configurações especiais, como uma VPN.

O que é o Dual Instance a final de contas?

Como dissemos antes, o Dual Instance permite que os usuários façam login e executem várias instâncias de aplicativos móveis ao mesmo tempo. Ainda que existam versões legítimas de aplicativos com esta tecnologia nas lojas, também há aplicativos maliciosos que oferecem o mesmo serviço e roubam os dados das credenciais dos usuários. Como o próprio nome indica, o malware Dual Instance utiliza a técnica de injetar a versão modificada do Twitter no seu aparelho. O Dual Instance é um tipo de sandbox ou virtualizador, simulando a maioria dos componentes necessários do sistema Android para inicial o aplicativo. Ao utilizar a sandbox para iniciar o aplicativo tudo acontece neste novo ambiente virtualizado e a nova instância do aplicativo se torna uma realidade. Vamos ver mais a fundo como este malware faz o truque.

Primeiro, o malware Dual Instance falsifica um certificado para que se pareça como o do autêntico Twitter.

O certificado oficial do Twitter é mostrado abaixo.

É difícil ver diferenças significativas entre os dois, não é?

Para executar o Twitter original, este malware esconde o arquivo na pasta Assets.

O interessante é que para enganar o usuário, este malware usa o nome com.twittre.android para o seu pacote. Como você pode ver, a diferença está apenas na sequência das duas últimas letras da palavra "twitter".

Durante o processo de inicialização do malware Dual Instance, o arquivo data.apk é extraído e carregado. Em nossas análises descobrimos que o malware utiliza uma solução de código aberto disponível no GitHub. Abaixo está o trecho do código do processo de carregamento do data.apk.

 

O VirtualCore é um framework de desenvolvimento que funciona como uma ferramenta de alto nível. O VirtualCore permite que você execute um aplicativo "filho" que deriva do principal (o "pai") sem que esteja realmente instalado no aparelho. Com essas importantes variáveis no VirtualCore, rastreamos o projeto de código aberto chamado VirtualApp, que fornece uma solução para executar um aplicativo sem ter de instalá-lo. Depois de comparar a lógica deste malware com o código do VirtualApp, temos certeza de que os autores do malware se aproveitaram do VirtualApp para iniciar o Twitter original. O endereço GitHub do VirtualApp é https://github.com/asLody/VirtualApp. Esta é uma parte da descrição do projeto:

"VirtualApp é uma plataforma aberta para o Androi que permite que você crie um Espaço Virtual onde pode instalar e executar arquivos apk. Além disso, o VirtualApp é também um Plugin Framework, onde os plug-ins executados no VirtualApp não sofrem nenhuma restrição. O VirtualApp não exige root e é executado como um processo local".

O que o malware Dual Instance quer conseguir?

Depois de uma análise profunda do módulo VirtualCore deste malware, percebemos que algumas modificações foram acrescentadas. Veja a chamada no processo de inicialização: 

 DI6.png

Ao olhar mais a fundo, encontramos coisas muito interessantes. O verdadeiro objetivo deste malware é roubar as credenciais da conta do Twitter dos usuários. Através da função getText da classe EditText os dados do usuário fornecidos são capturados.

 DI7.png

E depois:

DI8.png

Outra descoberta interessante é que o malware Dual Instance utiliza o AndFix para gerenciar o código Java. O AndFix é outro projeto de código aberto no GitHub, mas foi pensado para permitir lícitas operações de hotfix aos aplicativos Android. O malware Dual Instance faz uso dessa tecnologia e chega mais além. Ele utiliza o AndFix para capturar o componente EditText da janela de login do Twitter. Veja a parte do código da função getText depois de ela ter sido modificada:

 DI9.png

Já que a função getText é iniciada em muitos cenários, o malware tem apenas que ter certeza de prestar atenção quando se trata das credenciais da conta do Twitter do usuário.

Assim que o malware Dual Instance captura com sucesso a identidade e a senha de login do usuário, ele as grava no logcat do Android. Este log é enviado à ferramenta de upload, que por sua vez monitora a etiqueta chamada "twittre". Ao encontra-la, ele obtém os campos de identificação do usuário e sua senha.

DI10.png

Veja abaixo o logcat obtido com a tentativa de login de uma conta teste que não existe.

 DI11.png

Por fim, o malware Dual Instance envia as informações a um servidor remoto.

DI12.png

Finalmente, os objetivos do malware Dual Instance foram atingidos. Contudo, estamos nos esquecendo que o principal argumento de venda deste malware é a sua capacidade de permitir o login ao Twitter a partir da China, sem que sejam precisas outras configurações especiais. Como isto é possível? A resposta é que este malware configura um serviço VPN local antes de executar o aplicativo Twitter no aparelho do usuário.

 DI13.png

Recapitulando de forma simples: o malware Dual Instance age como se fosse uma inicializador do Twitter. Primeiro, baixa o aplicativo Twitter e o inicia através do VirtualApp. Neste momento, também configura uma rede VPN. Depois que o Twitter for iniciado, o módulo VirtualCore modificado usa a função getText da classe EditText para invadir a janela de login do Twitter. Depois que as credenciais do usuário são capturadas, o malware as envia a um servidor remoto.

Roubar as informações das contas dos usuários é algo comum aos malwares. No entanto, a maneira através da qual o Dual Instance engana e rouba os dados dos usuários é inédita. Geralmente, há poucas formas para que um malware roube os dados de um aplicativo popular, como alterar o código do aplicativo original. Agora vemos uma linha de produção de reempacotamento. Com o avanço das técnicas de proteção do empacotamento dos aplicativos, o caminho tradicional fica cada vez mais difícil. Por isso, o malware usa a tecnologia Dual Instance e "reempacota" o aplicativo alvo em um ambiente virtualizado (sandbox).

Cuidado com o malware nas lojas de aplicativos

A tecnologia Dual Instance é recente, mas cresceu rapidamente no ambiente digital. Abaixo está uma parte da Google Play Store que mostra aplicativos legítimos que usam a tecnologia Dual Instance e alguns deles já têm muitos usuários.

DI14.png

Uma pesquisa mais a fundo do malware Dual Instance irá minimizar a sua disseminação nas lojas de aplicativos. Os usuários devem sempre estar atentos aos aplicativos que baixam, mesmo das lojas conhecidas.

SHA256 da amostra analisada: b2d2568cb03fc3e01daca34071d160e9bf25218b9caea3367802b6d34b12087d