TrickBot empurrando um aplicativo de bypass 2FA para clientes de bancos na Alemanha

Views: 689
0 0
Read Time:17 Minute, 9 Second

Os pesquisadores do IBM X-Force analisaram um aplicativo de malware para Android que provavelmente está sendo empurrado para usuários infectados pelo Trojan TrickBot. Este aplicativo, apelidado de “TrickMo” por nossa equipe, foi projetado para contornar o segundo fator e a autenticação forte empurrada para os clientes bancários quando eles precisam autorizar uma transação.

Embora não seja o primeiro de seu tipo, este aplicativo de malware para Android é mais sofisticado do que aplicativos similares e possui recursos interessantes que permitem que seus operadores roubem códigos de autorização de transações de vítimas que baixam o aplicativo.

De acordo com nossa pesquisa, trickMo ainda está em desenvolvimento ativo, pois esperamos ver mudanças e atualizações frequentes. Embora possa ser usado em qualquer lugar e atingir qualquer banco ou região, neste momento, estamos vendo-o implantado especificamente na Alemanha.

A Alemanha é um dos primeiros territórios de ataque que o TrickBot se espalhou quando surgiu pela primeira vez em 2016. Em 2020, parece que a vasta fraude bancária do TrickBot é um projeto em andamento que ajuda a gangue a monetizar contas comprometidas.

Primeiros Signos em Setembro de 2019

Em setembro de 2019, um tweet do CERT-Bund chamou a atenção da equipe de Pesquisa de Segurança Móvel do IBM Trusteer. O tweet afirmou que o TrickBot, um conhecido Trojan bancário de propriedade de uma gangue organizada de crimes cibernéticos, usa injetos web man-in-the-browser (MITB) em sessões bancárias on-line para pedir aos usuários infectados seu número de telefone celular e tipo de dispositivo.

CERT-Bund tweet

Figura 1: Tweet cert-bund de 20 de setembro de 2019

A tradução automática deste tweet diz:

“Cuidado com o banco on-line: a Emotet recarrega o TrickBot. Em PCs infectados, o TrickBot exibe uma consulta para o número de telefone celular e o tipo de dispositivo usado para bancos e, em seguida, solicita aos usuários que instalem um suposto aplicativo de segurança.”

Quando os Trojans bancários pedem esse tipo de informação, geralmente significa que o próximo passo será uma tentativa de infectar o dispositivo móvel da vítima. Nossa equipe foi em frente e caçou amostras do aplicativo e analisou-o em nossos laboratórios.

Nesta análise, entramos nas capacidades da nova variante e no que descobrimos ser um “kill switch” que pode eliminar o malware remotamente de um dispositivo infectado.

Trojans de desktop e seu componente móvel

O processo pelo qual os trojans tentam infectar dispositivos móveis tem pelo menos uma década. Normalmente, quando os usuários já estão infectados com malware como trickBot em seu desktop, eles verão uma injeção na Web pedindo seu tipo de sistema operacional (OS) e número de telefone. Em seguida, se eles indicarem que usam um dispositivo baseado em Android, o Trojan, personificando seu banco com injeções na Web, engana a vítima para instalar um aplicativo de segurança falso. O suposto propósito desse aplicativo é obter e usar um “código de segurança” necessário para fazer login em seu site bancário on-line.

Nossa equipe de pesquisa analisou o aplicativo android malicioso que provavelmente está sendo espalhado pelo TrickBot e apelidado de “TrickMo”. Visando usuários na Alemanha neste momento, trickMo é a última variação na categoria de malware de autenticação de transações (TAN) que rouba. Suas principais capacidades incluem:

  • Roubar informações de dispositivos pessoais
  • Interceptação de mensagens SMS
  • Registro de aplicativos direcionados para senha única (TAN)
  • Bloqueio do telefone
  • Roubando fotos do dispositivo
  • Autodestruição e remoção

À medida que os bancos liberam medidas de segurança mais avançadas, o malware bancário evolui para acompanhar a corrida armamentista perpétua. A partir de nossa análise do malware móvel TrickMo, é evidente que o TrickMo foi projetado para quebrar os métodos mais novos de OTP e, especificamente, códigos TAN frequentemente usados na Alemanha.

Entre os vários recursos que discutimos neste post, acreditamos que a novidade mais significativa da TrickMo é um recurso de gravação de aplicativos, o que lhe dá a capacidade de superar as mais novas validações de aplicativos pushTAN usadas pelos bancos alemães.

Na análise a seguir, descrevemos em detalhes os recursos desta nova variante e um “kill switch” que pode eliminar remotamente o malware de um dispositivo móvel.

Por que os Trojans desktop usam um componente móvel?

Cerca de uma década atrás, os atacantes que empunhavam Trojans bancários poderiam simplesmente usar credenciais roubadas para acessar a conta bancária on-line da vítima e realizar transferências de dinheiro. Como contramedida, as instituições financeiras introduziram vários métodos de autenticação de segundo fator (2FA). Um método, que era popular na Alemanha, é conhecido como TAN móvel (mTAN). Ele foi implementado enviando uma mensagem SMS contendo uma senha única (OTP) para o dispositivo móvel do cliente. A transação só seria autorizada após o cliente inserir o TAN no site bancário on-line em seu navegador. Tenha em mente que, embora este caso seja sobre TANs, pode ser qualquer OTP, dependendo de qual banco está sendo alvo.

Enquanto isso, os Trojans bancários de desktop desenvolveram a capacidade de executar vários esquemas de engenharia social usando injeções web, um método que altera o conteúdo apresentado à vítima infectada em seu navegador. Em alguns casos, injetidas web sofisticadas foram usadas para enganar as vítimas a inserir seus códigos 2FA diretamente nos formulários da Web controlados pelo malware para eliminar a necessidade do componente de malware móvel. Mas os atacantes ainda estavam constantemente procurando novos métodos para roubar TANs.

Por volta de 2011, o infame Zeus Trojan começou a usar injeções na Web que enganaram os usuários para baixar um componente móvel chamado “ZitMo” (Zeus in the Mobile). Isso foi usado para contornar os métodos 2FA interceptando as mensagens sms provenientes do banco e roubando as mTANs sem o conhecimento da vítima. Muitas outras famílias de malware bancário seguiram o exemplo e lançaram seus próprios componentes de malware android projetados para roubar esses OTPs e TANs.

De mTAN para pushTAN

Nos últimos anos, alguns bancos na Europa, especialmente na Alemanha, pararam de usar autenticação baseada em SMS e mudaram para aplicativos pushTAN dedicados para esquemas 2FA.

Em vez de depender de mensagens SMS, que podem ser facilmente interceptadas por aplicativos de terceiros, esses aplicativos começaram a usar notificações push para usuários, contendo os detalhes da transação e o TAN. O método pushTAN tem uma clara vantagem: melhora a segurança, mitigando o risco de ataques de troca de SIM e ladrões de SMS.

TrickMo Chama pushTAN

O método pushTAN é um obstáculo para aplicativos de malware que podem residir no mesmo dispositivo, e é particularmente desafiador para malware móvel devido à caixa de areiade aplicativos do Android . Este recurso foi projetado para impedir que um aplicativo acesse os dados de outros aplicativos sem enraizar o dispositivo.

Para contornar esse desafio, os desenvolvedores da TrickMo adicionaram alguns novos recursos para roubar TANs usando gravação de vídeo de tela e raspagem de dados de tela.

A Raiz de Todos (Android) Mal

Então, como trickmo contornar esses recursos de segurança? Abusa dos serviços de acessibilidade.

Os serviços de acessibilidade do Android foram originalmente desenvolvidos pelo Google para o benefício dos usuários com deficiência. Qualquer aplicativo pode pedir permissões de acessibilidade e implementar recursos como leitura de tela, mudança de tamanhos e cores de objetos, melhorias auditivas, substituição do toque por outras formas de controle e muito mais. Nos últimos anos, alguns aplicativos Android maliciosos abusaram desses serviços de acessibilidade em vários cenários de ataque.

Uma vez no dispositivo, como instalado por um usuário enganado, o componente TrickMo abre e envia uma intenção de iniciar a atividade de configurações de acessibilidade, coagingando o usuário a concedê-lo com permissões de acessibilidade. Em seguida, usa o serviço de acessibilidade para suas operações maliciosas, algumas das quais incluem:

  • Impedindo que o usuário desinstale o aplicativo
  • Tornando-se o aplicativo padrão de SMS alterando as configurações do dispositivo
  • Monitorando os aplicativos em execução no momento
  • Raspando o texto na tela

Os sistemas operacionais Android incluem muitas telas de diálogo que requerem a negação, ou aprovação, de permissões de aplicativos e ações que têm que receber entrada do usuário tocando em um botão na tela. TrickMo usa serviços de acessibilidade para identificar e controlar algumas dessas telas e fazer suas próprias escolhas antes de dar ao usuário a chance de reagir.

Na imagem abaixo, vemos a função de malware que detecta tais diálogos quando são apresentados ao usuário, pedindo-lhes para tocar em uma opção baseada em escolhas predefinidas.

IBM Trusteer

Figura 2: Uma função no serviço de acessibilidade que pressiona programáticamente um botão

Recursos de persistência do TrickMo

Quando se trata de dispositivos baseados em Android, muitos aplicativos devem encontrar uma maneira de executar no dispositivo após uma reinicialização do sistema. A maneira mais comum de conseguir isso é criando um receptor de transmissão que está registrado na ação de transmissão “android.intent.action.BOOT_COMPLETED” e adicionando código que inicializa o aplicativo quando a transmissão é disparada.

Esta instrução é especialmente importante para malware que tenta evitar a interação do usuário executando em segundo plano como um serviço.

Mas TrickMo faz as coisas de forma diferente. Em vez de executar seu serviço apenas na hora da inicialização, ele registra um receptor que ouve as ações de transmissão “android.intent.action.SCREEN_ON” e “android.provider.Telephony.SMS_DELIVER“. Em seguida, ele usa o AlarmManager para definir uma intenção pendente que executará seu próprio serviço após um intervalo predefinido. Em outras palavras, o serviço trickMo será inicializado após o dispositivo se tornar interativo ou depois que uma nova mensagem SMS for recebida.

IBM Trusteer

Figura 3: Iniciar o serviço de malware quando a transmissão SCREEN_ON é recebida

Configurações complicadas

TrickMo uses the shared preferences mechanism to store settings and data that the malware uses at runtime. Some of the settings are Boolean values that act as switches. They represent features and can be turned on and off from the command-and-control (C&C) server or by an SMS message, effectively instructing the malware to execute certain tasks.

Some of the settings include:

  • The URL of the C&C server
  • Service wake-up intervals
  • Important package names
  • Accessibility permissions status
  • Lockdown screen status
  • Recording status
  • SMS app status
  • Kill switch status

Stealth

To keep its resources safer and make analysis more difficult for researchers, TrickMo uses an obfuscator to scramble the names of its functions, classes and variables. A TrickMo version from January 2020 contained code that checks if the app is running on a rooted device or an emulator to prevent analysis.

As an example, in the two images below, we can see the encrypted and decrypted shared preferences file, which is encrypted using the java “PBEWithMD5AndDES” algorithm.

IBM Trusteer
IBM Trusteer

Figure 4: TrickMo’s encrypted and decrypted shared preferences file

C&C Communications

Exfiltrating Device Data

To communicate with its master, TrickMo’s code contains a hardcoded URL of the C&C server. When it runs, it periodically connects to its designated server via an unencrypted HTTP request and sends over a JSON object that contains data gleaned from the victim’s phone. The stolen parameters follow:

  • ID
  • IMSI
  • Imei
  • Número de telefone
  • Operador
  • Ajuda
  • Modelo
  • Marca
  • Versão
  • Construir
  • Porcentagem da bateria
  • Estado de conexão Wi-Fi
  • Hora do despertar
  • Os registros estão ativados?
  • O malware já está definido como o aplicativo padrão de SMS? [Verdadeiro/Falso]
  • Força do sinal
  • Tela ativa [True/False]
  • Orientação
  • A permissão de acessibilidade foi concedida? [Verdadeiro/Falso]
  • Tamanho da tela
  • Lista dos aplicativos instalados
  • Mensagens SMS salvas no dispositivo

Não é incomum que malwares bancários colhem extensas quantidades de dados do dispositivo da vítima.

Os dados coletados podem então ser usados para gerar um identificador único do bot ou para fins de monetização. Ele também pode ser vendido na dark web e usado em vários ataques de spoofing. Por exemplo, como alguns bancos usam soluções antifraude que só verificam impressões digitais de dispositivos, os fraudadores podem usar as informações coletadas para realizar transações fraudulentas a partir de um dispositivo que imita essa mesma impressão digital.

Roubo e ocultação de mensagens SMS

Como alguns bancos ainda usam a autorização de transação baseada em SMS, o TrickMo é configurado para roubar automaticamente todas as mensagens SMS armazenadas no dispositivo.

De vez em quando, ele envia um pacote para seu servidor C&C contendo os dados do dispositivo coletados, juntamente com todas as mensagens SMS salvas. Uma vez que ele pode usar o serviço de acessibilidade para se tornar o aplicativo SMS padrão, ele também pode excluir as mensagens SMS para que apenas os invasores possam vê-las.

Na imagem abaixo, podemos ver um pacote que foi enviado para o C&C do invasor contendo informações coletadas juntamente com dados de SMS roubados.

Figure 5

Figura 5: Dados do dispositivo e mensagens SMS enviadas para o servidor C&C da TrickMo

Um canal de comunicação via SMS roubado

Além disso, o TrickMo tem um mecanismo automático para enviar mensagens SMS para seu servidor C&C.

Em alguns casos, ele usa esse mecanismo para enviar dados de log de ações importantes. Ele pode salvar uma mensagem SMS no dispositivo, marcando com “interno” no campo número de telefone. A mensagem SMS será enviada instantaneamente ao servidor, informando o operador de malware das tarefas executadas.

Na imagem abaixo, vemos um log TrickMo enviado ao invasor ao se tornar o aplicativo SMS padrão. Se o malware se tornou com sucesso o aplicativo padrão de SMS, ele envia as palavras “o aplicativo foi substituído” em russo. Se o aplicativo original de SMS tiver sido restaurado, ele enviará “o aplicativo retornou ao seu lugar original.

Figure 6a

Figure 6b

Figura 6: Registros de substituição do provedor de SMS enviados para c&C do atacante

Controlando TrickMo

Os operadores do TrickMo podem controlar o malware através de dois canais:

  1. Através de seu C&C através de um protocolo HTTP de texto simples usando objetos JSON
  2. Através de mensagens SMS criptografadas

Existem comandos predefinidos para alterar a configuração do malware e fazê-lo executar certas tarefas. Alguns dos comandos mais interessantes incluem:

Controle de SMS

  • Atualize o endereço do servidor C&C — SMS começando com “http://”
  • Envie a mensagem SMS criptografada por AES de volta ao remetente — SMS começando com “sms://”
  • Atualizar o intervalo de despertar do serviço — “2”
  • Interruptor de morte — “4”

Controle C&C

  • Atualize o endereço do servidor C&C — “1”
  • Atualizar o intervalo de despertar do serviço — “2”
  • Bloqueie a tela — “5”
  • Exibir uma imagem em um WebView a partir de uma URL arbitrária — “11”
  • Envie uma mensagem SMS arbitrária — “8”
  • Roubar imagens salvas no dispositivo — “12” e “13”
  • Use o serviço de acessibilidade para se tornar o aplicativo padrão de SMS — “6”
  • Habilitar a gravação de outros aplicativos — “15”
  • Interruptor de morte — “4”

A tela de bloqueio

A maioria dos ladrões não quer ser pego em flagrante enquanto roubam – eles querem ganhar algum tempo para fugir com o saque. O mesmo vale para o malware bancário.

O malware bancário de desktop frequentemente bloqueia o acesso do usuário ao seu site bancário após uma transação bem-sucedida usando injeções web que mostram uma variedade de telas “não disponíveis de serviço”. TrickMo não é diferente; o objetivo é concluir a operação, levantando suspeitas mínimas.

Depois de realizar uma ação fraudulenta, roubando o OTP/mTAN, a TrickMo ganha algum tempo ativando a tela de bloqueio e impedindo que o usuário acesse seu dispositivo. Esta tela de bloqueio inclui duas partes:

  • Um WebView contendo uma imagem de fundo carregada a partir de uma URL predefinida. Esta imagem de fundo provavelmente contém uma falsa tela de “atualização de software”.
  • Uma atividade de bloqueio, que é uma janela transparente mostrada na parte superior da tela que contém um cursor de “carregamento”. Esta tela persiste na tela e impede que o usuário use os botões de navegação.

Devido à implementação de persistência do TrickMo mencionada anteriormente, essa tela de bloqueio persiste após uma reinicialização e é reiniciada toda vez que o dispositivo se torna interativo.

Em alguns casos, trickMo pode usar esse recurso para interceptar mensagens SMS sem o conhecimento do usuário ativando a tela de bloqueio e interceptando mensagens SMS em segundo plano.

Gravação de aplicativos — Roubando OTPs e TANs

O recurso que torna trickmo diferente dos ladrões de SMS padrão é sua capacidade única de gravar a tela quando aplicativos direcionados estão sendo executados.

Esse recurso foi habilitado apenas em versões mais recentes do TrickMo que foram adaptadas especificamente para bancos alemães e usam um aplicativo especial para implementar o 2FA baseado em TAN.

A gravação do aplicativo é implementada através de dois métodos:

  1. Usando a classe Android MediaRecorder para capturar um vídeo da tela quando o aplicativo direcionado é apresentado ao usuário
  2. Usando o serviço de acessibilidade para salvar um arquivo de texto contendo os dados de todos os objetos na tela

Ambos os arquivos são posteriormente enviados para o servidor C&C do invasor. Na imagem a seguir, podemos ver como o malware recebe um objeto JSON do servidor C&C contendo o comando para iniciar a gravação, os aplicativos-alvo e a proporção de tamanho de vídeo gravado.

IBM Trusteer

Figura 7: Analisar o comando C&C para começar a gravar

IBM Trusteer

Figura 8: O método de gravação de vídeo “onCreate”

Na imagem abaixo, a função coleta recursivamente todos os dados de texto dos nós infantis de cada nó de acessibilidade. Em outras palavras, ele passa por cada objeto na tela e salva seus dados de texto.

IBM Trusteer

Figura 9: A função que coleta todos os dados de texto da tela

Um TrickMo Kill Switch

Um dos recursos mais interessantes do malware TrickMo é ter seu próprio kill switch.

Os switches kill são usados por muitos autores de malware para remover vestígios de um dispositivo após uma operação bem sucedida. Como o tráfego HTTP da TrickMo com seu servidor C&C não é criptografado, ele pode ser facilmente adulterado.

Na imagem a seguir, podemos ver a função que analisa os comandos do servidor C&C. Se o objeto JSON retornado tiver a tecla “4”, ele ligará o kill switch e iniciará sua própria remoção enviando uma intenção e confirmando perfeitamente a desinstalação usando o serviço de acessibilidade, tudo sem que a vítima tenha notado nada.

IBM Trusteer

Figura 10: O interruptor de amortecer na função que analisa e executa comandos C&C

IBM Trusteer

Figura 11: A remoção do pacote alcançada enviando uma intenção “DELETE”

O interruptor de morte também pode ser ligado por SMS. Isso é um pouco mais complicado, uma vez que os comandos SMS são criptografados e codificados com base64.

O algoritmo de criptografia usado é rsa, e curiosamente, os autores optaram por usar a chave privada para descriptografia e deixá-la no código como uma seqüência hardcoded.

A imagem abaixo mostra a função que analisa as mensagens SMS, descriptografa-as usando a chave privada RSA codificada e executa os comandos.

IBM Trusteer

Figura 12: A função que analisa os comandos SMS e a chave privada RSA

Tendo analisado algumas variantes do malware, notamos que a chave privada foi exposta no código e não mudou. Portanto, nossa equipe conseguiu gerar a chave pública e criar uma mensagem SMS que ativasse o kill switch. Isso significa que o malware pode ser eliminado remotamente por uma mensagem SMS. Nossa equipe também foi capaz de testar outros comandos no laboratório, seja adulterando o tráfego HTTP do C&C ou enviando mensagens SMS criadas.

Suspeito que você está infectado?

A seguinte mensagem de SMS pode ser usada para matar a amostra analisada nesta pesquisa e todas as outras variantes que usam a mesma chave privada:

HrLbpr3x/htAVnAgYepBuH2xmFDb68TYTt7FwGn0dGlQJv/hqsctL57ocFU0Oz3L+uhLcOGG7GVBAfHKL1TBQ== =

O envio deste SMS acionará o kill switch da TrickMo enviando a seqüência “4” criptografada com a chave pública RSA gerada e a base64 codificada.

Indicadores de Comprometimento (IoCs)

hxxp://mcsoft365.com/c

hxxp://pingconnect.net/c

Hashes

  • MD5: 5c749c9fce8c41bf6bcc9bd8a691621b
  • SHA256: 284bd2d16092b4d13b6bc85d87950eb4c5e8cbba9af2a04d76d88da2f26c485c
  • MD5: b264af5d2f3390e465052ab502b0726d
  • SHA256: 8ab1712ce9ca2d7952ab763d8a4872a6a278c3f60dc13e0aebe59f50e6e30f6

O Fator TrickMo

TrickBot Trojan foi um dos malwares bancários mais ativos na área de crimes cibernéticos em 2019. A partir de nossa análise, é evidente que o TrickMo foi projetado para ajudar o TrickBot a quebrar os métodos mais recentes de autenticação baseada em TAN. Um dos recursos mais significativos que trickMo possui é o recurso de gravação de aplicativos, que é o que dá ao TrickBot a capacidade de superar as mais novas validações de aplicativos pushTAN implantadas pelos bancos.

Nossa equipe está monitorando a atividade do malware e os recursos de desenvolvimento deste aplicativo. TrickMo claramente ainda está em desenvolvimento extensivo, e esperamos que novas versões desse malware sejam lançadas em um futuro próximo. Seria uma suposição justa que outras famílias de malware seguirão esse modelo, e veremos grupos de malware mais avançados adotando os recursos e técnicas da TrickMo.

FONTE: SECURITY INTELLIGENCE

POSTS RELACIONADOS