Introdução
O objetivo desta pesquisa é entender o potencial da virtualização de aplicativos para ser usado como um vetor de ataque. Nesta pesquisa, uma dúzia de aplicativos de virtualização foram testados para casos de uso regular e como ferramentas de hacking. O Proteção de aplicativo para produto Android foi avaliado como uma solução de mitigação com todos os aplicativos de virtualização testados.
Aplicativos de virtualização para uso “normal”
A maioria dos aplicativos de virtualização disponíveis para usuários “normais” podem ser baixados da Google Play Store. Esses aplicativos têm centenas de milhões de downloads. Um dos mais populares é espaço paralelo. O público-alvo principal desses aplicativos são pessoas que têm mais de uma conta em aplicativos específicos, como aplicativos de mídia social. Os aplicativos de virtualização permitem que os usuários finais tenham várias instâncias de um único aplicativo em execução ao mesmo tempo - sem necessidade de sair e entrar em outra conta. Alguns aplicativos de virtualização se apresentam como aplicativos de aprimoramento da privacidade. Os aplicativos instalados em espaços virtuais são frequentemente – mas nem sempre – isolados do sistema Android normal de uma forma ou de outra.
Aplicativos de virtualização como ferramentas de hackers
No outro extremo do espectro de usuários estão os hackers. A virtualização pode ser utilizada por diferentes razões. Um dos principais benefícios da virtualização é que os aplicativos virtualizados têm processos mais privilegiados do que os aplicativos de destino, permitindo assim que o aplicativo de virtualização interaja com o aplicativo de destino livremente. A virtualização, de uma forma ou de outra, ignora o modelo de segurança do Android criando um ambiente mais permissivo na caixa de proteção do aplicativo de virtualização. Muitos tipos de aplicativos de virtualização fornecem acesso “raiz falso” e serviços de conexão fornecidos por estruturas de conexão como o Xposed. E tudo isso pode ser obtido em um telefone sem root, o que significa que atividades maliciosas podem ser executadas em dispositivos verificados.
Ambientes virtualizados abrem possibilidades para as seguintes atividades maliciosas:
- Trapacear em jogos -- software como GameGuardian rodando em um ambiente virtualizado pode conseguir quase tudo que poderia fazer em um dispositivo rooteado.
- Hooking - software de virtualização como o VirtualXposed permite a injeção de módulos Xposed em aplicativos virtualizados, alterando assim seu comportamento. Por exemplo, o VirtualXposed pode ser usado para ignorar os anúncios no aplicativo do YouTube.
- Raiz falsa – alguns aplicativos de virtualização fornecem acesso a “superusuários” falsos para executar software com privilégios aumentados. Por exemplo, uma raiz falsa pode ser usada para executar o Frida servidor em um dispositivo não rooteado.
- Localização virtual – a maioria dos aplicativos de virtualização fornece serviços de falsificação de localização. Isso é particularmente útil para contornar verificações baseadas em geolocalização ou para trapacear em jogos baseados em geolocalização como Pokémon Go.
- Análise dinâmica – alguns aplicativos populares de virtualização são de código aberto e podem ser modificados por meio de plug-ins personalizados. De dentro do plug-in, os usuários podem instrumentar dinamicamente aplicativos virtualizados, observar o comportamento do aplicativo e capturar o tráfego de rede.
Categorias de aplicativos de virtualização
A virtualização de aplicativos é um termo amplo. A virtualização de aplicativos pode ser alcançada de várias maneiras diferentes e não necessariamente pela virtualização do sistema Android. A virtualização de aplicativos é um bom termo para generalizar a ideia de executar aplicativos em um ambiente irregular. A seguir estão alguns dos muitos tipos diferentes de virtualização de aplicativos:
Isolamento do perfil de trabalho
Alguns dos aplicativos de virtualização alcançam a virtualização criando um perfil de trabalho separado e isolando o aplicativo virtualizado dentro dele. Um perfil de trabalho é configurado em um dispositivo Android para separar aplicativos e dados de “trabalho” de aplicativos e dados pessoais. O perfil de trabalho reside em uma parte separada do dispositivo, isolada do resto do sistema. Isolar um aplicativo com um perfil de trabalho não é necessariamente bom, pois um aplicativo potencialmente mal-intencionado em execução no espaço regular do usuário, com acesso root, provavelmente não pode ser detectado, pois o aplicativo isolado do perfil de trabalho só pode ver os aplicativos que estão no mesmo perfil de trabalho. Por exemplo, tal estratégia de ataque está sendo abusada por hackers de jogos que usam o GameGuardian em um dispositivo rooteado com privilégios de root e executam o aplicativo de destino no perfil de trabalho isolado. "O aplicativo Island é um aplicativo disponível gratuitamente na loja Google Play e permite aos usuários clonar aplicativos específicos. O aplicativo Island também é um bom exemplo de "isolamento de perfil de trabalho".
Clonagem e Reembalagem
Outro tipo de aplicativo de virtualização atinge a virtualização clonando ou reempacotando o aplicativo de destino. Normalmente, o processo é simples. Como linha de base, esses aplicativos estão sendo copiados e seu nome de pacote é modificado para algum tipo de nome de pacote exclusivo. Para contornar todos os tipos de verificações e verificações, esses aplicativos de virtualização injetam seu próprio código para corrigir ou conectar métodos responsáveis pelo nome do pacote e recuperação de assinatura e 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 AppClonerName app é um exemplo desse tipo de aplicativo. AppClonerName também está disponível gratuitamente na loja Google Play.
Hosts de aplicativos
“Hosts de aplicativos” são outro tipo de técnica de virtualização. Os hosts de aplicativos virtualizam carregando o aplicativo de destino nele mesmo e executando-o. Esta é uma abordagem relativamente simples para virtualizar um aplicativo, mas vem com certas limitações. Por exemplo, esses hosts de aplicativos geralmente podem executar apenas uma única instância do aplicativo por vez ou um número muito limitado de aplicativos ao mesmo tempo. Algumas tecnologias de virtualização que empregam essa estratégia são fornecidas como SDKs, permitindo que o usuário crie seu próprio aplicativo host para aplicativos específicos com recursos específicos. Esses SDKs também abrem possibilidades para o uso de estruturas de conexão e apenas na análise dinâmica de aplicativos em geral com instrumentação. VirtualApk e Fantasma são exemplos notáveis de tal abordagem de virtualização.
Virtualização de todo o sistema Android
Alguns aplicativos de virtualização estão virtualizando todo o sistema Android. Alguns deles estão até inicializando todo o sistema Android a partir de qualquer imagem ROM (memória somente leitura). Esse tipo de virtualização é o mais lento, mas o mais poderoso, pois essa abordagem emula literalmente todo o telefone Android. Imagens ou arquivos ROM personalizados podem ser corrigidos, personalizados, enraizados com Magisk, etc. Quase não há como um aplicativo virtualizado interagir com o sistema Android externo e saber o que está acontecendo lá. Virtualização como essa pode ser usada para executar aplicativos de destino em sistemas Android virtualizados de aparência normal sem acesso root, no entanto, o sistema Android original pode ser enraizado e executar software de análise dinâmica adicional para adulterar o aplicativo virtualizado. Twoyi é um dos aplicativos mais populares que virtualizam todo o sistema Android.
Virtualização parcial do tempo 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 de virtualização recriam a maior parte do sistema Android usando proxies e processos fictícios. O hooking é uma parte muito importante dessas técnicas de virtualização, pois muitas coisas precisam ser interceptadas e corrigidas durante a comunicação entre os processos de aplicativos virtualizados e o restante do sistema. Além disso, esse método é complicado de manter entre diferentes versões do Android e entre diferentes fornecedores de dispositivos Android. Normalmente, essa abordagem de virtualização sofre de problemas de estabilidade. No entanto, a técnica de virtualização de tempo de execução parcial do Android é uma das técnicas de virtualização mais poderosas: uma virtualização de tempo de execução parcial do Android bem implementada pode ser completamente indetectável. Aplicativo Virtual é uma das mais famosas virtualizações parciais de tempo de execução do Android disponíveis.
Os aplicativos de virtualização podem ser confiáveis?
Como mencionado anteriormente, os muitos aplicativos de virtualização na Google Play Store prometem aumentar a privacidade para fazer os usuários comuns acreditarem que a virtualização melhora a privacidade do usuário. Esta alegação deve ser tomada com um grão de sal. O fato de o aplicativo virtualizado estar isolado do restante do sistema aumenta a privacidade. No entanto, o aplicativo de virtualização tem mais privilégios sobre o aplicativo virtualizado 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 as informações pessoais dos usuários.
A maioria dos aplicativos de virtualização está cheia de anúncios. Alguns deles realmente injetam código de adware adicional no aplicativo virtualizado. Há um número quase infinito de coisas que podem ser injetadas no aplicativo virtualizado sem o consentimento do usuário.
Além disso, o uso do software de virtualização pode ser contra os termos de uso do aplicativo virtualizado, o que significa que o uso do software de virtualização pode levar ao banimento da conta.
Avaliação de aplicativos de virtualização
Esta seção aborda os aplicativos de virtualização de código aberto e de código fechado mais populares. Cada aplicativo é avaliado em usabilidade, facilidade de compilação ou modificação e quão bem Proteção de aplicativos para Android pode proteger contra ataques no ambiente virtualizado. Tentamos listar aplicativos que representam todos os diferentes tipos de métodos de virtualização. Alguns aplicativos são mais populares do que outros, e os aplicativos são discutidos em ordem aproximada, do mais para o menos popular.
Código aberto:
Aplicativo Virtual
https://github.com/asLody/VirtualApp
Este é um sistema Android parcialmente virtualizado. A lista completa de recursos pode ser encontrada em projeto LEIA-ME.MD. Este projeto foi de código aberto até 2017 e, desde então, não foi atualizado. No entanto, os clientes premium ainda podem obter versões mais recentes do código-fonte agora fechado. Não há binários pré-construídos no Github. Compilar o código-fonte é desafiador e muitos erros requerem correção manual. O projeto tem muitas bifurcações. A bifurcação a seguir, na verdade, mantém as versões do Android lançadas após 2017:
https://github.com/ServenScorpion/VirtualApp
Nossas tentativas iniciais de compilar Aplicativo Virtual falhou, mas o projeto é considerado uma inspiração para outros projetos de virtualização. Proteção de aplicativos para guardas Android acionados: Detecção de virtualização
Virtualxposed
https://github.com/android-hacker/VirtualXposed
O Virtualxposed é outra virtualização parcial do Android baseada no Aplicativo Virtual projeto. Virtualxposed A principal característica é que ele permite o uso da estrutura Xposed em um dispositivo não rooteado em um ambiente virtualizado. Este projeto está sofrendo de problemas de estabilidade. Virtualxposed falhou ao instalar o complemento Xposed em ambos os dispositivos usados para teste. Em um dispositivo Virtualxposed até falhou ao iniciar o aplicativo virtualizado. Muitos outros projetos tentam replicar Virtualxposed idéia.
Proteção de aplicativo para guardas Android acionados: Detecção de virtualização, Detecção de gancho, Detecção de instrumentação dinâmica, Detecção de raiz, Verificação de assinatura e Detecção de emulador trava o aplicativo.
VirtualApp2022
https://github.com/justin0kg/VirtualApp2022
Inspirado no Virtualxposed e com base em Aplicativo Virtual. Funciona muito bem no Android 11. No LEIA-ME.MD desenvolvedor afirma que eles suportam plugins Xposed.
Proteção de aplicativo para guardas Android acionada: Virtualização detecção
Twoyi
https://github.com/twoyi/twoyi
Twoyi é um aplicativo do sistema Android que virtualiza imagens ROM inteiras. Por padrão, ele virtualiza o Android 8.1.0 com um aplicativo superusuário pré-instalado. Porque Twoyi pode virtualizar imagens ROM personalizadas, ele poderia, em teoria, ser usado para virtualizar ROM corrigido com Magisk, executar LSPosed ou executar outras ferramentas de ameaça.
Proteção de aplicativo para guardas Android acionados: detecção de raiz e detecção de emulador
Multiaplicativo
https://github.com/WaxMoon/MultiApp
MultiApp funciona bem. É difícil determinar a técnica de virtualização exata que o multiapp usa, mas provavelmente é uma virtualização parcial do sistema Android ou está virtualizando aplicativos como um host. Este projeto é apenas parcialmente aberto - A IU do aplicativo e o inicializador são de código aberto, mas a lógica de virtualização principal é enviada em JARs e APKs pré-compilados.
Proteção de aplicativos para guardas Android acionados: Detecção de virtualização
Tai Chi
https://github.com/taichi-framework/TaiChi
Virtualxposed aplicativo de virtualização inspirado que pode usar módulos Xposed em dispositivos não rooteados. Infelizmente, este projeto não é estável, pois falhou ao instalar ou executar aplicativos virtualizados em ambos os dispositivos de teste.
Proteção de aplicativo para guardas Android acionada: detecção virtual
VirtualApk, Phantom e DroidPlugin
https://github.com/didi/VirtualAPK
https://github.com/ManbangGroup/Phantom
https://github.com/DroidPluginTeam/DroidPlugin
VirtualApk, Fantasma e Plugin Droid projetos são SDKs que permitem aos usuários criar aplicativos de host que podem virtualizar aplicativos de destino dentro deles. Por falta de tempo, esses frameworks não foram testados.
Proteção de aplicativos para guardas Android acionados: - Detecção de virtualização
Fonte fechada:
Espaço Paralelo, Espaço Dual e outros
https://play.google.com/store/apps/details?id=com.lbe.parallel.intl
https://play.google.com/store/apps/details?id=com.ludashi.dualspace&hl=en&gl=US
https://play.google.com/store/apps/details?id=com.excelliance.multiaccounts&hl=en&gl=US
https://play.google.com/store/apps/details?id=multi.parallel.dualspace.cloner&hl=en&gl=US
https://play.google.com/store/apps/details?id=com.cloneapp.parallelspace.dualspace&hl=en&gl=US
https://play.google.com/store/apps/details?id=com.excelliance.multiaccount&hl=en&gl=US
https://play.google.com/store/apps/details?id=com.excean.parallelspace&hl=en&gl=US
https://play.google.com/store/apps/details?id=do.multiple.cloner&hl=en&gl=US
https://www.apkmirror.com/apk/nox-ltd/noxapp-multiple-accounts-clone-app/
Um dos aplicativos de virtualização mais populares da Google Play Store. Para usar o Parallel Space com GameGuardian, uma versão “otimizada” não oficial do aplicativo Parallel Space precisa ser baixada do fórum GameGuardian.
GameGuardian versões otimizadas:
https://gameguardian.net/forum/files/file/120-parallel-space-32-bit-support-64-bit-support/
https://gameguardian.net/forum/files/file/213-dualspace-32-bit-support-64-bit-support/
https://gameguardian.net/forum/files/file/194-virtual-space/
https://gameguardian.net/forum/files/file/225-octopus-32-bit-support-64-bit-support/
https://gameguardian.net/forum/files/file/122-go-multiple/
Proteção de aplicativo para guardas Android acionados: detecção de virtualização e detecção de instrumentação dinâmica (violação de memória de espaço paralelo detectada)
EspaçoCore
https://github.com/FSpaceCore/SpaceCore
EspaçoCore é um novo aplicativo de virtualização de código aberto parcialmente. A lógica de virtualização é de código fechado. O aplicativo não pode ser compilado a partir da fonte, pois está faltando a fonte da biblioteca principal. As compilações de demonstração são estáveis e podem executar a maioria dos aplicativos testados. O menu contém um espaço reservado para o Xposed Manager, que ainda não está disponível.
Proteção de aplicativos para guardas Android acionados: Detecção de virtualização
AppClonerName
AppClonerName é uma virtualização baseada em reempacotamento que reembala o aplicativo de destino com outro nome de pacote e o instala no sistema. A técnica de virtualização é simples, mas não pode ser usada em conjunto com outras ferramentas de ameaças para adulterar aplicativos de destino sem acesso root.
Proteção de aplicativos para guardas Android acionados: Detecção de virtualização
Islândia
https://play.google.com/store/apps/details?id=com.oasisfeng.island&hl=en&gl=US&pli=1
Islândia é uma solução de virtualização baseada em perfil de trabalho que isola aplicativos dentro de perfis de trabalho. Durante o Application Protection for Android Virtualization, os relatórios de criação de guarda afirmaram que o Island foi usado para isolar aplicativos de vítimas de outros aplicativos e GameGuardian foi usado para adulterar a memória do aplicativo sem ser detectado.
Proteção de aplicativos para guardas Android acionados: Detecção de virtualização
Resumo
A virtualização é útil tanto para usuários comuns quanto para hackers. Muitos aplicativos de virtualização permitem que os hackers criem virtualmente um ambiente malicioso em um dispositivo não rooteado. Embora existam muitos projetos de código aberto, a maioria deles não pode ser facilmente compilada e modificada.
A virtualização é alcançada de muitas maneiras diferentes, desde o reempacotamento do aplicativo até a virtualização de todo o sistema Android. Todos os aplicativos de virtualização que testamos para este artigo foram detectados pelo Proteção de aplicativo para produto Android.
Recursos adicionais
Sobre Digital.ai
Digital.ai é uma empresa de tecnologia líder do setor dedicada a ajudar empresas globais 5000 a atingir metas de transformação digital. A tecnologia de inteligência artificial da empresa DevSecOps plataforma unifica, protege e gera insights preditivos em todo o ciclo de vida do software. Digital.ai capacita as organizações a dimensionar equipes de desenvolvimento de software, fornecer continuamente software com maior qualidade e segurança, ao mesmo tempo em que descobre novas oportunidades de mercado e aumenta o valor comercial por meio de investimentos em software mais inteligentes.
Informações adicionais sobre Digital.ai pode ser encontrada em digital.ai e na Twitter, LinkedIn e Facebook.
Saiba mais em Digital.ai Application Security