Enquanto os analistas descifram novas metodologias para analisar malware e os usuários começam a entender como isso funciona, os cibercriminosos procuram novas formas de se esconder nos celulares e comprometer os dispositivos.
Os truques usados para aumentar a eficácia de seus ataques podem ser agrupados em duas categorias: por um lado, estratégias de Engenharia Social que buscam confundir os usuários e, por outro lado, mecanismos técnicos sofisticados para impedir a detecção e a análise do malware.
Ao longo deste post, resumiremos alguns dos comportamentos frequentemente apresentados pelos códigos maliciosos para Android durante os últimos anos.
Golpes baseados em Engenharia Social
#Uso de contas falsas na Play Store para propagar malware
O malware na loja oficial do Google não para de aparecer. Para os cibercriminosos, é uma grande vitória fazer com que seus aplicativos maliciosos consigam entrar nos mercados de aplicativos genuínos, pois dessa forma conseguem atingir um conjunto bem maior de vítimas e garantir um maior número de infecções.
Além disso, essas contas de desenvolvedores falsas que se propagam através de aplicativos inseguros ou maliciosos tentam ser o mais parecido possível com a conta real, a fim de capturar os usuários despreocupados que acabam ficando confusos. Por exemplo, há pouco tempo atrás, pesquisadores descobriram um aplicativo falso para atualizar o WhatsApp que fazia uso de um golpe através de um caractere Unicode para dar a impressão de serem distribuídos através da conta oficial.
#Datas comemorativas e lançamentos de apps esperados
Uma prática comum no mundo do cibercrime é a tentativa de mascarar malwares como versões de apps – jogos, principalmente – com popularidade repentina, que estão quase prontas para serem lançadas ou não estão disponíveis em lojas oficiais para determinados países. Este foi o caso do Pokémon GO, Prisma ou Dubsmash, que conseguiram realizar centenas de milhares de infecções em todo o mundo.
#Tapjacking e janelas sobrepostas
O tapjacking é uma técnica que consiste em capturar os toques que o usuário dá sobre a tela ao apresentar duas atividades sobrepostas. Desta forma, o usuário acredita que realiza toques sobre a atividade que está vendo, mas na verdade estão sendo desviados para a atividade subjacente, que permanece oculta.
Outra estratégia semelhante, amplamente utilizada em spyware para o roubo de dados de acesso no Android, é a superposição de atividades. Neste esquema, o malware detecta o aplicativo que o usuário está usando em cada momento e, quando coincide com um determinado aplicativo alvo, exibe um diálogo adequado com a estética desse aplicativo legítimo, solicitando os dados de acesso do usuário.
#Esconder-se entre os apps do sistema
Claro que o caminho mais simples para que o código malicioso possa se esconder em um dispositivo é fingir ser um app do sistema e passar o mais despercebido possível. Comportamentos, como excluir o ícone do aplicativo assim que a instalação é concluída ou usar nomes, pacotes e ícones de apps do sistema e outros apps populares para se esconder no dispositivo são estratégias que podem ser percebidas em códigos como o trojan bancário que fingiu ser o Adobe Flash Player para roubar dados de acesso das vítimas.
#Simular ser um app do sistema para solicitar permissões de administrador
Uma vez que a estrutura do Android limita as permissões dos apps, muitos códigos maliciosos precisam solicitar permissões de administrador para desenvolver corretamente suas funcionalidades. Além disso, esta permissão ajuda a tornar o malware bem mais difícil de ser desinstalado.
O fato de ser camuflado como ferramenta de segurança ou atualizações do sistema dá aos cibercriminosos certas vantagens. Em particular, permite que eles se protejam por trás de uma figura confiável, de modo que o usuário não hesite em autorizar o acesso às funções de administração do dispositivo.
#Certificados de segurança que se passam por verdadeiros
O certificado de segurança com o qual um APK é assinado nos permite determinar se o aplicativo foi alterado. Embora a maioria dos cibercriminosos usem cadeias de texto genéricas ao emitir o certificado, muitos se esforçam para fingir dados que correspondem aos usados pelo desenvolvedor, indo um passo à frente para tentar confundir os usuários que possam desejar comprová-lo.
Técnicas para complicar a análise
#Várias funcionalidades no mesmo código
Uma tendência dentro do mundo dos dispositivos móveis que ganhou relevância nos últimos anos é combinar o que costumavam ser diferentes tipos de malware dentro de um único executável. O LokiBot é um exemplo disso: este trojan bancário tenta passar despercebido o maior tempo possível para roubar informações do dispositivo. No entanto, quando o usuário tenta remover as permissões do administrador para desinstalá-lo, a ameaça ativa sua funcionalidade de ransomware criptografando os arquivos do dispositivo.
#Apps escondidos
O uso de droppers e downloaders, ou seja, incluir um código malicioso dentro de outro APK ou baixá-lo através da Internet, é uma estratégia que não se limita apenas ao malware para laptops e computadores desktop, mas também é universalmente usada pelos criadores de códigos maliciosos.
À medida que o então conhecido Google Bouncer dificultou a vida dos cibercriminosos na hora de publicar o malware na loja oficial, os atacantes optaram por incluir esse tipo de comportamento para tentar burlar os controles... e funcionou! Pelo menos por um tempo...
Desde então, essas duas formas de codificação de malware foram adicionadas ao portfólio das técnicas maliciosas mais usadas.
#Diversos idiomas de programação e código volátil
Frequentemente surgem novos frameworks de desenvolvimento multiplataforma e novas linguagens de programação. Que melhor maneira de enganar um analista de malware do que combinar idiomas e ambientes de desenvolvimento, por exemplo, projetar aplicativos com Xamarin ou usar o código Lua para executar comandos maliciosos. Essa estratégia altera a arquitetura final do executável, somando níveis de complexidade.
Alguns atacantes adicionam a esta combinação o uso de carregamento dinâmico de scripts ou partes de código que são baixados de servidores remotos e excluídos após o uso. Portanto, uma vez que o servidor tenha sido removido pelo cibercriminoso, não é possível saber exatamente quais ações o código executou no dispositivo.
Amostras com essas características começaram a aparecer no final de 2014, quando os pesquisadores publicaram análises de malware particularmente complexas.
#Malware sinérgico
Uma alternativa para complicar a análise de uma amostra é dividir a funcionalidade maliciosa em um conjunto de aplicativos capazes de interagir uns com os outros. Desta forma, cada aplicativo possui um subconjunto de permissões e funcionalidades maliciosas e, em seguida, interagem entre si para cumprir uma finalidade posterior. Por outro lado, para o analista entender a verdadeira função do malware, é necessário considerar todos os aplicativos individuais como peças de um quebra-cabeça.
Embora não seja uma estratégia comumente usada, já foram identificadas amostras que exibem esse tipo de comportamento, como recentemente foi apresentado em uma pesquisa do Virus Bulletin.
#Covert channels e novos mecanismos de comunicação
Para se comunicar com o C&C ou outros aplicativos maliciosos, o malware precisa transferir informações. Isso pode ser feito através de canais abertos tradicionais ou covert channel (protocolos de comunicação personalizados, intensidade de brilho, wake locks, utilização da CPU, espaço livre na memória, níveis de som ou vibração, acelerômetros, entre outros).
Além disso, nos últimos meses, vimos como os cibercriminosos usaram as redes sociais para transferir mensagens do C&C, como é o caso do Twitoor, a botnet que usa as contas do Twitter para enviar comandos.
Outras formas de dificultar a análise
O uso de embalagens, anti-emulação, anti-depuração, criptografia e ofuscação, entre outras técnicas de evasão, é muito comum em malwares para o Android. Para burlar estes tipos de proteções, podemos usar as hooking de funções, talvez através de aplicativos como o Frida.
Também podemos usar ambientes de análise que, por padrão, tentam esquivar esses controles, como o MobSF (que inclui algumas técnicas anti-emulação), AppMon ou Inspeckage - onde, por exemplo, as sequências de texto simples podem ser vistas antes e depois de serem criptografadas, juntas com as chaves usadas.
Para prevenir infecções, você já sabe, esteja sempre atento aos comportamentos maliciosos. :)