Introdução ao Mundo da Virtualização – Parte I

Por Egidijus Lileika, pesquisador sênior de segurança

 

O objetivo desta pesquisa é compreender o potencial da virtualização de aplicativos como vetor de ataque. Nesta pesquisa, doze aplicativos de virtualização foram testados em casos de uso comuns e como ferramentas de hacking. O produto Application Protection for Android foi avaliado como solução de mitigação para todos os aplicativos de virtualização testados. Leia a seguir a primeira parte desta série.

Aplicativos de virtualização para uso final "normal".

A maioria dos aplicativos de virtualização disponíveis para usuários "comuns" pode ser baixada da Google Play Store. Esses aplicativos acumulam centenas de milhões de downloads. Um dos mais populares é o Parallel Space. O público-alvo principal desses aplicativos são pessoas que possuem mais de uma conta em aplicativos específicos, como redes sociais. Os aplicativos de virtualização permitem que os usuários executem várias instâncias de um mesmo aplicativo simultaneamente, sem a necessidade de sair e entrar em outra conta. Alguns aplicativos de virtualização se apresentam como soluções que aprimoram a privacidade. Os aplicativos instalados em espaços virtuais geralmente são isolados do sistema Android regular de alguma forma, mas nem sempre.

Aplicativos de virtualização como ferramentas para agentes de ameaças

No outro extremo do espectro de usuários estão os agentes maliciosos. A virtualização pode ser utilizada por diferentes motivos. Um dos principais benefícios da virtualização é que os aplicativos virtualizados possuem processos com mais privilégios do que os aplicativos de destino, permitindo assim que o aplicativo virtualizado interaja livremente com o aplicativo de destino. A virtualização, de uma forma ou de outra, burla o modelo de segurança do Android, criando um ambiente mais permissivo no sandbox do aplicativo virtualizado. Muitos tipos de aplicativos de virtualização fornecem acesso "root falso" e serviços de hooking oferecidos por frameworks como o Xposed. E tudo isso pode ser feito em um telefone sem root — o que significa que atividades maliciosas podem ser realizadas em dispositivos verificados.

Ambientes virtualizados abrem possibilidades para as seguintes atividades maliciosas:

  • Trapaça em jogos: Softwares como o GameGuardian, executados em um ambiente virtualizado, podem fazer praticamente tudo o que fariam em um dispositivo com acesso root.
  • Enganchar: Softwares de virtualização como o VirtualXposed permitem a injeção de módulos Xposed em aplicativos virtualizados, alterando assim seu comportamento. Por exemplo, o VirtualXposed poderia ser usado para burlar anúncios no aplicativo do YouTube.
  • Raiz falsa: Alguns aplicativos de virtualização fornecem acesso a "superusuários" falsos para executar softwares com privilégios elevados. Por exemplo, um root falso poderia ser usado para executar o servidor Frida em um dispositivo sem root.
  • Localização virtual: A maioria dos aplicativos de virtualização oferece serviços de falsificação de localização. Isso é particularmente útil para burlar verificações baseadas em geolocalização ou para trapacear em jogos que dependem de geolocalização, como Pokémon Go.
  • Análise dinâmica: Algumas aplicações de virtualização populares são de código aberto e podem ser modificadas por meio de plugins personalizados. Dentro do plugin, os usuários podem instrumentar dinamicamente aplicações virtualizadas, observar o comportamento da aplicação e capturar o tráfego de rede.

Figura 1. Popularidade dos respectivos espaços virtuais entre os usuários do GameGuardian.

Figura 1 – Popularidade dos respectivos espaços virtuais entre os usuários do GameGuardian

Categorias de aplicativos de virtualização

Virtualização de aplicativos é um termo amplo. Ela pode ser alcançada de diversas maneiras, não necessariamente virtualizando o sistema Android. A virtualização de aplicativos é um bom termo para generalizar a ideia de executar aplicativos em um ambiente não convencional. A seguir, apresentamos algumas das muitas formas de virtualização de aplicativos:

Isolamento do perfil de trabalho

Algumas aplicações de virtualização alcançam a virtualização criando um perfil de trabalho separado e isolando a aplicação virtualizada dentro dele. Um perfil de trabalho é uma configuração em um dispositivo Android para separar aplicações e dados "de trabalho" de aplicações e dados pessoais. O perfil de trabalho reside em uma parte separada do dispositivo, isolada do restante do sistema. Isolar uma aplicação com um perfil de trabalho não é necessariamente uma boa prática, pois uma aplicação potencialmente maliciosa executada no espaço de usuário comum, com acesso root, provavelmente não poderá ser detectada, já que a aplicação isolada pelo perfil de trabalho só poderá ver aplicações que estejam no mesmo perfil de trabalho. Por exemplo, essa estratégia de ataque está sendo explorada por agentes maliciosos de jogos que usam o GameGuardian em um dispositivo com root e privilégios de root para executar a aplicação alvo no perfil de trabalho isolado. O aplicativo Island, disponível gratuitamente na Google Play Store, permite que os usuários clonem aplicações específicas. O aplicativo Island também é um bom exemplo de "isolamento por perfil de trabalho".

Clonagem e reempacotamento

Outro tipo de aplicativo de virtualização alcança a virtualização clonando ou reempacotando o aplicativo de destino. Geralmente, o processo é simples. Basicamente, esses aplicativos são copiados e seus nomes de pacote são modificados para um nome de pacote exclusivo. Para contornar todos os tipos de verificações, esses aplicativos de virtualização injetam seu próprio código para modificar ou interceptar métodos responsáveis ​​pela recuperação do nome e da assinatura do pacote, além de outros métodos para fazer o aplicativo acreditar que é o aplicativo original. Como o ID do aplicativo foi alterado, tanto o aplicativo original quanto o clonado podem coexistir no mesmo sistema Android. Esse tipo de virtualização é o mais rápido, pois não há sobrecarga de virtualização. O aplicativo AppCloner é um exemplo desse tipo de aplicativo. O AppCloner também está disponível gratuitamente na Google Play Store.

Hosts de aplicativos

Os "hosts de aplicativos" são outro tipo de técnica de virtualização. Os hosts de aplicativos virtualizam carregando o aplicativo de destino em si mesmos e executando-o. Essa é uma abordagem relativamente simples para virtualizar um aplicativo, mas apresenta certas limitações. Por exemplo, esses hosts de aplicativos geralmente só podem executar uma única instância do aplicativo por vez, ou um número muito limitado de aplicativos simultaneamente. Algumas tecnologias de virtualização que empregam essa estratégia são distribuídas como SDKs, permitindo que o usuário crie seu próprio host de aplicativo para aplicativos específicos com recursos específicos. Esses SDKs também abrem possibilidades para o uso de frameworks de hooking e, de forma geral, para a análise dinâmica de aplicativos com instrumentação. VirtualApk e Phantom são exemplos notáveis ​​dessa abordagem de virtualização.

Virtualização completa do sistema Android

Alguns aplicativos de virtualização virtualizam todo o sistema Android. Alguns chegam a inicializar o sistema Android completo a partir de qualquer imagem ROM (memória somente de leitura). Esse tipo de virtualização é o mais lento, porém o mais poderoso, já que essa abordagem emula literalmente todo o telefone Android. Imagens ou arquivos ROM personalizados podem ser modificados, customizados, rooteados com Magisk, etc. É praticamente impossível para um aplicativo virtualizado interagir com o sistema Android externo e saber o que está acontecendo lá. Essa virtualização pode ser usada para executar aplicativos específicos em sistemas Android virtualizados com aparência normal, sem acesso root. No entanto, o sistema Android original pode ser rooteado e executar softwares adicionais de análise dinâmica para interferir no aplicativo virtualizado. O Twoyi é um dos aplicativos mais populares que virtualizam todo o sistema Android.

Virtualização parcial do ambiente de execução do Android

Por último, mas não menos importante, alguns aplicativos de virtualização alcançam a virtualização parcial do sistema Android. Normalmente, esses aplicativos recriam a maior parte do sistema Android usando proxies e processos fictícios. O monitoramento (hooking) é uma parte muito importante dessas técnicas de virtualização, já que muitas coisas precisam ser interceptadas e corrigidas durante a comunicação entre os processos do aplicativo virtualizado e o restante do sistema. Além disso, esse método é complexo de manter entre diferentes versões do Android e entre diferentes fabricantes de dispositivos Android. Geralmente, essa abordagem de virtualização sofre com problemas de estabilidade. No entanto, a técnica de virtualização parcial do runtime do Android é uma das técnicas de virtualização mais poderosas: uma virtualização parcial do runtime do Android bem implementada pode ser completamente indetectável. O VirtualApp é um dos exemplos mais famosos de virtualização parcial do runtime do Android disponíveis.

É possível confiar em aplicativos de virtualização?

Como mencionado anteriormente, os diversos aplicativos de virtualização disponíveis na Google Play Store prometem aumentar a privacidade, levando os usuários comuns a acreditarem que a virtualização realmente melhora a privacidade. Essa afirmação deve ser encarada com cautela. O fato de o aplicativo virtualizado estar isolado do restante do sistema aumenta a privacidade. No entanto, o aplicativo de virtualização possui mais privilégios sobre o usuário do que qualquer outro aplicativo de terceiros instalado no sistema Android. Não há garantia de que o aplicativo de virtualização não esteja usando esses privilégios para roubar informações pessoais do usuário.

A maioria dos aplicativos de virtualização está repleta de anúncios. Alguns deles chegam a injetar código de adware adicional no aplicativo virtualizado. Existe um número quase infinito de coisas que poderiam ser injetadas no aplicativo virtualizado sem o consentimento do usuário.

Além disso, o uso de software de virtualização pode ser contrário aos termos de uso do aplicativo virtualizado, o que significa que o uso de software de virtualização pode levar ao banimento da conta.

 

Continue a conversa na segunda parte da série de posts do blog, que você pode encontrar aqui. clique aqui.

Também recomendamos