Novo malware sofisticado do Android marca a mais recente evolução do ransomware móvel

Views: 309
0 0
Read Time:12 Minute, 55 Second

Os atacantes são persistentes e motivados a evoluir continuamente – e nenhuma plataforma é imune. É por isso que a Microsoft tem trabalhado para estender seus recursos de proteção de ponto final líderes do setor para além do Windows. A adição de defesa contra ameaças móveis a esses recursos significa que o Microsoft Defender for Endpoint (anteriormente Microsoft Defender Advanced Threat Protection) agora oferece proteção em todas as principais plataformas.

Os recursos de defesa de ameaças móveis da Microsoft enriquecem ainda mais a visibilidade que as organizações têm sobre ameaças em suas redes, bem como fornecem mais ferramentas para detectar e responder a ameaças em domínios e em todas as plataformas. Como todas as soluções de segurança da Microsoft, essas novas capacidades também são apoiadas por uma rede global de pesquisadores de ameaças e especialistas em segurança cuja compreensão profunda do cenário de ameaças guia a inovação contínua dos recursos de segurança e garante que os clientes estejam protegidos contra ameaças em constante evolução.

Por exemplo, encontramos um pedaço de um ransomware Android particularmente sofisticado com novas técnicas e comportamento, exemplificando a rápida evolução das ameaças móveis que também observamos em outras plataformas. O ransomware móvel, detectado pelo Microsoft Defender for Endpoint como AndroidOS/MalLocker.B, é a mais recente variante de uma família de ransomware que está na selva há algum tempo, mas vem evoluindo sem parar. Esta família de ransomware é conhecida por ser hospedada em sites arbitrários e circulou em fóruns online usando várias iscas de engenharia social, incluindo mascarados como aplicativos populares, jogos rachados ou jogadores de vídeo. A nova variante chamou nossa atenção porque é um malware avançado com característica e comportamento malicioso inconfundível e ainda consegue evitar muitas proteções disponíveis, registrando uma baixa taxa de detecção contra soluções de segurança.

Como a maioria dos ransomwares Android, essa nova ameaça não bloqueia o acesso a arquivos criptografando-os. Em vez disso, bloqueia o acesso aos dispositivos exibindo uma tela que aparece em todas as outras janelas, de tal forma que o usuário não pode fazer mais nada. A referida tela é a nota de resgate, que contém ameaças e instruções para pagar o resgate.

Screenshot of mobile ransom note in Russian language

Figura 1. Amostra de nota de resgate usada por variantes de ransomware mais antigas

O que é inovador sobre este ransomware é como ele exibe sua nota de resgate. Neste blog, detalharemos as maneiras inovadoras pelas quais este ransomware aparece sua nota de resgate usando recursos android que nunca vimos alavancados por malware antes, bem como incorporar um módulo de aprendizado de máquina de código aberto projetado para o corte consciente do contexto de sua nota de resgate.

Novo esquema, mesmo objetivo

No passado, o ransomware Android usava uma permissão especial chamada “SYSTEM_ALERT_WINDOW” para exibir sua nota de resgate. Os aplicativos que possuem essa permissão podem desenhar uma janela que pertence ao grupo do sistema e não pode ser descartada. Não importa qual botão seja pressionado, a janela fica em cima de todas as outras janelas. A notificação foi planejada para ser usada para alertas ou erros do sistema, mas as ameaças do Android o usaram indevidamente para forçar a interface do usuário controlada pelo invasor a ocupar totalmente a tela, bloqueando o acesso ao dispositivo. Os atacantes criam esse cenário para persuadir os usuários a pagar o resgate para que eles possam ter acesso de volta ao dispositivo.

Para pegar essas ameaças, as soluções de segurança utilizaram heurísticas que se concentraram em detectar esse comportamento. Mais tarde, o Google implementou mudanças no nível da plataforma que praticamente eliminaram essa superfície de ataque. Essas alterações incluem:

  1. Removendo os tipos de SYSTEM_ALERT_WINDOW erro e de alerta de janelas e introduzindo alguns outros tipos como substituição
  2. Elevar o status de permissão de SYSTEM_ALERT_WINDOW a permissão especial colocando-o na categoria “acima perigosa”, o que significa que os usuários têm que passar por muitas telas para aprovar aplicativos que pedem permissão, em vez de apenas um clique
  3. Introduzindo um interruptor de morte sobreposto no Android 8.0 e posteriormente que os usuários podem ativar a qualquer momento para desativar uma janela de alerta do sistema

Para se adaptar, o malware do Android evoluiu para usar indevidamente outros recursos, mas estes não são tão eficazes. Por exemplo, algumas cepas de recursos de acessibilidade de abuso de ransomware, um método que poderia facilmente alarmar os usuários porque a acessibilidade é uma permissão especial que exige que os usuários passem por várias telas e aceitem um aviso de que o aplicativo será capaz de monitorar a atividade através de serviços de acessibilidade. Outras famílias de ransomware usam loops infinitos de desenho de janelas não-sistema, mas entre desenhar e redesenhar, é possível que os usuários vão às configurações e desinstalem o aplicativo ofensivo.

A nova variante do Ransomware Android supera essas barreiras evoluindo mais do que qualquer malware Android que já vimos antes. Para obter sua nota de resgate, ele usa uma série de técnicas que aproveitam os seguintes componentes no Android:

  1. A notificação de “chamada”, entre várias categorias de notificações que o Android suporta, o que requer atenção imediata do usuário.
  2. O método de retorno de chamada “onUserLeaveHint()” do Android Activity (ou seja, a típica tela de GUI que o usuário vê) é chamado como parte do ciclo de vida da atividade quando a atividade está prestes a ir para o fundo como resultado da escolha do usuário, por exemplo, quando o usuário pressiona a tecla Home.

O malware conecta os pontos e usa esses dois componentes para criar um tipo especial de notificação que aciona a tela de resgate através do retorno de chamada.

Screenshot of malware code

Figura 2. A notificação com total intenção e definida como categoria “chamada”

Como o trecho de código mostra, o malware cria um construtor de notificações e, em seguida, faz o seguinte:

  1. setCategoria (“chamada”) – Isso significa que a notificação é construída como uma notificação muito importante que precisa de privilégios especiais.
  2. setFullScreenIntent() – Esta API conecta a notificação a uma GUI para que ela apareça quando o usuário tocar nela. Nesta fase, metade do trabalho é feito para o malware. No entanto, o malware não gostaria de depender da interação do usuário para acionar a tela do ransomware, então, ele adiciona outra funcionalidade de retorno de chamada do Android:

Figura 3. O malware substituindo noUserLeaveHint

Como o trecho de código mostra, o malware substitui a função de retorno de chamada onUserLeaveHint() da classe Activity. A função onUserLeaveHint() é chamada sempre que a tela de malware é empurrada para o fundo, fazendo com que a atividade de chamada seja automaticamente levada para o primeiro plano. Lembre-se que o malware ligou a intenção do RansomActivity com a notificação que foi criada como uma notificação do tipo “chamada”. Isso cria uma cadeia de eventos que aciona o pop-up automático da tela do ransomware sem fazer redesenho infinito ou posar como janela do sistema.

Módulo de aprendizagem de máquina indica evolução contínua

Como mencionado, este ransomware é a mais recente variante de uma família de malware que passou por vários estágios de evolução. O gráfico de conhecimento abaixo mostra as várias técnicas que esta família de ransomware foi vista usando, incluindo abusar da janela de alerta do sistema, abusar de recursos de acessibilidade e, mais recentemente, abusar dos serviços de notificação.

Knowledge graph showing techniques used by the Android rasomware family

Figura 4. Gráfico de conhecimento de técnicas usadas pela família ransomware

A longa história desta família ransomware nos diz que sua evolução está longe de acabar. Esperamos que ele produza novas variantes com técnicas ainda mais sofisticadas. De fato, variantes recentes contêm código bifurcado a partir de um módulo de aprendizado de máquina de código aberto usado pelos desenvolvedores para redimensionar e cortar automaticamente imagens com base no tamanho da tela, uma função valiosa dada a variedade de dispositivos Android.

O modelo TinyML congelado é útil para garantir que as imagens se encaixem na tela sem distorções. No caso deste ransomware, o uso do modelogarantiria que sua nota de resgate, normalmente falsa, ou imagens explícitas supostamente encontradas no dispositivo,parecesse menos inventada e mais crível, aumentando as chances do usuário pagar pelo resgate.

A biblioteca que usa tinyML ainda não está ligada às funcionalidades do malware, mas sua presença no código de malware indica a intenção de fazê-lo em variantes futuras. Continuaremos monitorando essa família de ransomware para garantir que os clientes estejam protegidos e compartilhar nossas descobertas e insights à comunidade para uma ampla proteção contra essas ameaças móveis em evolução.

Proteger as organizações contra ameaças em domínios e plataformas

As ameaças móveis continuam a evoluir rapidamente, com os atacantes continuamente tentando evitar barreiras tecnológicas e criativamente encontrar maneiras de alcançar seu objetivo, seja ganho financeiro ou encontrar um ponto de entrada para um compromisso de rede mais amplo.

Esta nova variante de ransomware móvel é uma descoberta importante porque o malware exibe comportamentos que não foram vistos antes e podem abrir portas para outros malwares seguirem. Ele reforça a necessidade de uma defesa abrangente alimentada pela ampla visibilidade em superfícies de ataque, bem como especialistas em domínios que rastreiam o cenário de ameaças e descobrem ameaças notáveis que podem estar se escondendo em meio a dados e sinais de ameaças maciças.

O Microsoft Defender for Endpoint no Android, agora geralmente disponível, estende a proteção de ponto final líder do setor da Microsoft para o Android. Ele detecta esse ransomware (AndroidOS/MalLocker.B), bem como outros aplicativos e arquivos maliciosos usando proteção baseada em nuvem alimentado por deep learning e heurística, além de detecção baseada em conteúdo. Ele também protege usuários e organizações de outras ameaças móveis, como phishing móvel, conexões de rede inseguras e acesso não autorizado a dados confidenciais. Saiba mais sobre nossos recursos de defesa contra ameaças móveis no Microsoft Defender para Endpoint no Android.

Malware, phishing e outras ameaças detectadas pelo Microsoft Defender for Endpoint são reportados ao Microsoft Defender Security Center, permitindo que os SecOps investiguem ameaças móveis, juntamente com sinais de ponto final do Windows e outras plataformas usando o rico conjunto de ferramentas do Microsoft Defender para endpoint para detecção, investigação e resposta.

Os dados de ameaças dos pontos finais são combinados com sinais de e-mail e dados, identidades e aplicativos em Microsoft 365 Defensor (anteriormente Microsoft Threat Protection), que orquestra detecção, prevenção, investigação e resposta entre domínios, fornecendo defesa coordenada. O Microsoft Defender for Endpoint no Android enriquece ainda mais a visibilidade das organizações em atividades maliciosas, capacitando-as a prevenir, detectar e responder de forma abrangente contra incidentes de expansão de ataques e domínio cruzado.

Análise técnica

Obscurecimento

Além de recriar o comportamento do ransomware de maneiras que nunca vimos antes, a variante de malware do Android usa uma nova técnica de ofuscação exclusiva da plataforma Android. Um dos sinais de um malware ofuscado é a ausência de código que define as classes declaradas no arquivo manifesto.

Malware code showing manifest file

Figura 5. Arquivo manifesto

classes.dex tem implementação para apenas duas classes:

  1. A principal classe de aplicação gCHotRrgEruDv,que está envolvida quando o aplicativo é aberto
  2. Uma classe de ajudante que tem definição para criptografia personalizada e descriptografia

Isso significa que não há código correspondente aos serviços declarados no arquivo manifesto: Atividade principal, receptores de transmissãoe fundo. Como funciona o malware sem código para esses componentes-chave? Como é característico para ameaças ofuscadas, o malware criptografou código binário armazenado na pasta Ativos:

Screenshot of Assets folder with encrypted executable code

Figura 6. Código executável criptografado na pasta Ativos

Quando o malware é executado pela primeira vez, o bloco estático da classe principal é executado. O código é fortemente ofuscado e ilegível através do nome mangling e uso de nomes variáveis sem sentido:

Figura 7. Bloco estático

Descriptografia com uma torção

O malware usa uma rotina interessante de descriptografia: os valores de string passados para a função de descriptografia não correspondem ao valor descriptografado, eles correspondem ao código de lixo para simplesmente dificultar a análise.

No Android, uma Intenção é um mecanismo de software que permite que os usuários coordenem as funções de diferentes atividades para alcançar uma tarefa. É um objeto de mensagens que pode ser usado para solicitar uma ação de outro componente do aplicativo.

O objeto Intenção carrega um valor de corda como parâmetro “ação“. O malware cria uma intenção dentro da função de descriptografia usando o valor de sequência passado como o nome para a Intenção. Em seguida, ele descriptografa um valor criptografado codificado e define o parâmetro “ação” da Intenção usando o setAction API. Uma vez que este objeto de Intenção é gerado com o valor de ação apontando para o conteúdo descriptografado, a função de descriptografia retorna o objeto Intenção ao callee. O callee então invoca o método getAction para obter o conteúdo descriptografado.

Figura 8. Função de descriptografia usando o objeto Intenção para passar o valor descriptografado

Implantação de carga útil

Uma vez que a execução do bloco estático esteja concluída, o retorno de chamada do Ciclo de Vida do Android transfere o controle para o método OnCreate da classe principal.

Malware code showing onCreate method

Figura 9. onCreate método da classe principal descriptografando a carga útil

Em seguida, a função definida por malware decryptAssetToDex (um nome significativo que atribuímos durante a análise) recebe a string “CuffGmrQRT” como o primeiro argumento, que é o nome do arquivo criptografado armazenado na pasta Ativos.

Malware code showing decryption of assets

Figura 10. Descriptografando os ativos

Após ser descriptografado, o ativo se transforma no arquivo .dex. Este é um comportamento notável que é característico desta família ransomware.

Comparison of code of Asset file before and after decryption

Figura 11. Arquivo de ativos antes e depois da descriptografia

Uma vez que o executável criptografado é descriptografado e descartado no armazenamento, o malware tem as definições para todos os componentes que declarou no arquivo manifesto. Em seguida, inicia a função detonador final para carregar o arquivo .dex caído na memória e aciona a carga principal.

Malware code showing loading of decrypted dex file

Figura 12. Carregando o arquivo .dex descriptografado na memória e acionando a carga principal

Carga principal

Quando a carga principal é carregada na memória, o detonador inicial entrega o controle para a carga principal invocando o método XoqF (que renomeamos para acionarinfecção durante a análise) da classe gvmthHtyN (renomeada para PayloadEntry).

Malware code showing handover from initial module to main payload

Figura 13. Entrega do módulo inicial para a carga principal

Como mencionado, o componente inicial de entrega chamado triggerInfection com uma instância de appObj e um método que retorna o valor para a variável config.

Malware code showing definition of populateConfigMap

Figura 14. Definição de populateConfigMap, que carrega o mapa com valores

Correlacionando as duas últimas etapas, pode-se observar que a carga útil do malware recebe a configuração para as seguintes propriedades:

  1. número – O número padrão a ser enviado para o servidor (caso o número não esteja disponível no dispositivo)
  2. api – A chave da API
  3. url – A URL a ser usada no WebView para exibir na nota de resgate

O malware salva essa configuração para as preferências compartilhadas dos dados do aplicativo e, em seguida, configura todos os Receptores de Transmissão. Esta ação registra componentes de código para ser notificado quando determinados eventos do sistema acontecem. Isso é feito na função initComponents.

Malware code showing initializing broadcast receiver

Figura 15. Inicializando o BroadcastReceiver contra eventos do sistema

A partir deste ponto, a execução do malware é impulsionada por funções de retorno de chamada que são acionadas em eventos do sistema, como alteração de conectividade, desbloqueio do telefone, intervalo de tempo decorrido e outros.

FONTE: MICROSOFT

POSTS RELACIONADOS