O Laboratório de Ameaças da Avast descobriu que dispositivo Android está redirecionando redes de propaganda para contas desconhecidas e perigosas.
Depois de publicar a nossa história sobre um malware pré-instalado em dispositivos Android, continuamos analisando as imagens dos firmwares (sistema) dos dispositivos Android mais populares e baratos. É um caso bastante infeliz, já que nossas estatísticas colocam os malwares pré-instalados como um dos principais vetores de infecção. Mas hoje temos uma história um pouco mais leve.
Não importa o firmware do dispositivo que estamos examinando hoje, pois ele é antigo (Android 6.0) e o dispositivo recebeu uma atualização de software que removeu o "recurso". Não temos certeza se o dispositivo foi certificado pela Google, mas ele tinha o Google Apps instalado e foi vendido na Europa. Ele tinha os problemas comuns dos dispositivos chineses baratos: um mecanismo de atualização desprotegido, redes de propagandas que instalam automaticamente mais aplicativos no telefone, anúncios na tela de bloqueio, etc. Mas, algo mais nefasto estava oculto no firmware do dispositivo.
O firmware substituía os tokens das redes de propaganda nos aplicativos que o usuário instalou por conta própria. Os tokens funcionam de maneira parecida com os números de contas bancárias: eles informam às redes de propaganda para onde enviar o dinheiro gerado pela exibição de anúncios no seu aplicativo. Nesse caso, todo o dinheiro gerado por determinadas redes de propaganda nesse dispositivo foi redirecionado para uma conta não autorizada.
Análise técnica
Classe DeviceFocusUtil
Oculta no arquivo /system/framework/arm/boot.oat existe uma classe chamada com.android.internal.os.DeviceFocusUtil. Apesar do nome, ela não faz parte do sistema operacional Android. Ela foi adicionada por alguém que preparou o firmware para este dispositivo.
O código não está oculto, por isso, é fácil ver que a classe está analisando um arquivo de configuração em /system/framework/framework.jar, com/android/security/security.properties. Esse arquivo é um JSON codificado em base64, “criptografado” mapeando o alfabeto para um outro diferente. Quando descriptografado, ele contém informações sobre quais tokens de anúncios devem ser substituídos por qual valor e onde localizar o token de anúncio.
Fragmento do arquivo de configuração
Os pacotes mencionados dentro do arquivo de configuração nos informam que esse recurso foi direcionado ao mercado chinês, já que ele sequestra principalmente a rede de propaganda chinesa Umeng.
O arquivo de configuração é atualizado automaticamente da internet, mas o servidor já está inativo. Percebemos algo errado com essa parte do firmware pelo URL suspeito. Este é o URL:
hxxp://service-safemgr.yy845.com:8082/safeconfigmanager/services/SafeConfigWebService
Cada aplicativo armazena o token de anúncio em um local diferente, portanto, essa modificação de firmware deve ser inteligente e sequestrar todos eles.
SharedPreferences
SharedPreferences são uma maneira de um aplicativo armazenar chaves e dados de valor. Alguns aplicativos armazenam o token de anúncio nesse local, portanto, o método interno na classe android.app.SharedPreferencesImpl, que carrega as preferências do sistema de arquivos, é injetado com uma chamada para a classe DeviceFocusUtil.
Mexendo fundo...
No interior, o nome do pacote do aplicativo é comparado com a seção shared_preference do arquivo de configuração, e os tokens de anúncios são substituídos.
AssetManager
Alguns aplicativos armazenam o token de anúncio dentro de seus arquivos APK como os chamados "ativos". O sistema operacional Android fornece uma API para acessar esses arquivos facilmente e também é injetado com chamadas para DeviceFocusUtil. O conteúdo do arquivo solicitado pelo aplicativo será substituído pelo valor fixed_data do arquivo de configuração se o valor channel_file corresponder.
Alterando os aplicativos
ZipEntry
Se o arquivo com o token de anúncio for armazenado em outro local no APK, o aplicativo poderá carregá-lo usando as APIs para acessar arquivos ZIP. A classe java.util.zip.ZipEntry é novamente injetada com DeviceFocusUtil, portanto, apenas os dados forjados do arquivo de configuração são carregados.
Pacote
Os pacotes são uma maneira de transmitir dados para os aplicativos Android. Eles funcionam como um mapeamento de chaves e valores:
Injeção para obter dados do pacote
Número IMEI falso
Como se o redirecionamento do fluxo financeiro dos anúncios não fosse suficiente, esse recurso também tenta enganar as redes de propaganda para gerar mais dinheiro. Geralmente, as redes de propaganda rastreiam o usuário em diferentes aplicativos, para poderem distinguir entre as visualizações exclusivas (que geram mais dinheiro do que várias visualizações por um mesmo usuário). Elas geralmente usam o IMEI e/ou endereço MAC do telefone para isso.
Assim, o DeviceFocusUtils simplesmente faz as chamadas API para que o IMEI ou o endereço MAC retorne um valor diferente para cada aplicativo. A redes de propaganda acredita que cada ID é um usuário diferente e, portanto, ela pode gerar mais receita. Infelizmente, essa função parece estar danificada e retornando sempre "0" como o IMEI.
Conclusão
A partir da quantidade de aplicativos sequestrados, podemos afirmar que não se trata de uma invasão rápida, mas de um recurso desenvolvido intencionalmente. A situação dos anúncios na China é totalmente diferente do que normalmente encontramos em outros lugares. E, infelizmente, afeta os smartphones baratos também vendidos na Europa.
Considere o seguinte: o arquivo de configuração pressupõe que o navegador pré-instalado seja modificado para exibir também anúncios e tenta roubar a receita deles.
Provavelmente, ele não funcionou muito bem, pois não podemos imaginar que as redes de propaganda não tenham nem percebido isso. O recurso foi removido da versão seguinte do firmware e o servidor de atualização não está mais em atividade.
Não é novidade que cibercriminosos visam os dispositivos Android para arrecadar dinheiro com receita fraudulenta. Mas seus procedimentos mudam com frequência. Como sempre, nossa equipe continuará monitorando novas ameaças para manter os usuários do Avast protegidos contra cibercriminosos e malwares.