Por Threat Intelligence Team

A equipe de Threat Intelligence da Tempest, recentemente, identificou uma campanha de disseminação de uma nova variante do trojan bancário Mekotio contra alvos na América Latina, sobretudo no Brasil. A nova versão apresenta mudanças significativas no seu processo de infecção que foi segmentado em vários estágios e no uso de recursos para se evadir de mecanismos de detecção e da análise de especialistas.

Características do trojan

O Mekotio é um Remote Access Trojan (RAT) cuja principal funcionalidade é o roubo de informações financeiras. Especialistas acreditam que essa família de trojan tenha origem no Brasil, no entanto, não há um consenso quanto ao ano de surgimento desse malware. Segundo a empresa FireEye a atividade deste trojan iniciou em meados de 2018. A ESET acredita que a ameaça esteja ativa desde 2015. Inicialmente, os alvos do Mekotio eram localizados, exclusivamente, em países na América Latina, como Brasil, Chile e México, porém, em 2020, a ameaça passou a atingir países na Europa, como a Espanha.

As mudanças recentes na operação da ameaça também se estendem às táticas técnicas e procedimentos (TTPs), como o emprego de um algoritmo de criptografia customizado, o abuso de binários legítimos do sistema operacional (LOLBins) e a adição de bytes inúteis.

Diagrama do Mekotio. Imagem: Tempest

Campanha

Durante o mês de fevereiro, os honeypots da Tempest registraram cerca de 14,5 mil e-mails distribuindo a variante do Mekotio. As mensagens são construídas com o intuito de abusar da curiosidade da vítima, informando-a sobre o envio iminente de um produto adquirido pela Internet. No corpo da mensagem há uma URL gerada por meio de serviços da Azure que leva o usuário até uma instância da Amazon Elastic Compute Cloud (Amazon EC2), a qual armazena um arquivo ZIP que é descarregado.

E-mail malicioso usando temática de envio iminente de um produto obtido pela internet como mote de distribuição do Mekotio. Imagem: Tempest

Estágios de Infecção

A infecção com o Mekotio é dividida em três estágios, nos quais arquivos MSI executam toda a cadeia usando funções exportadas de arquivos DLL por meio de CustomActions — ações personalizadas que podem ser configuradas e executadas durante o processo de instalação do MSI. Essas funções são usadas no download, extração e execução dos payloads de cada estágio, na injeção da DLL maliciosa, usando binários legítimos (DLL side-loading) e na configuração da persistência. Os arquivos utilizados em cada estágio são baixados de plataformas em nuvem, como AWS e Google Drive, no formato de imagem JPG. Essas imagens são, então, processadas revelando arquivos MSI e outros artefatos.

Primeiro Estágio: Dropper

Executado o download do arquivo ZIP, por meio do link acessado no E-mail, é necessário que se faça a extração do mesmo, retornando assim um arquivo MSI de nome randômico (jvyq.7.yf3c7prvx.msi) responsável pelo primeiro estágio de infecção. Dentro do MSI foi possível observar que o arquivo foi configurado para não executar em nenhuma versão do Windows Servers presentes no mercado:

Este MSI possui um CustomAction que tem a função de carregar um arquivo DLL (jump_force_deluxe.dll). O CustomAction é utilizado pelo MSI para executar uma função exportada pela DLL denominada “SDL_AudioStreamClear”. Esta função é utilizada para efetuar o download do segundo estágio de infeção do malware e alocá-lo em suas respectivas pastas.

Antes de executar qualquer ação referente a aquisição do segundo estágio, uma verificação é efetuada. A DLL presente no primeiro MSI analisa se dentro da pasta C:\Users\<USER>\ existe um diretório com o nome do usuário local. Caso exista, a DLL não irá executar o download do segundo estágio, servindo assim de KillSwitch no processo de infecção. Caso aconteça o contrário, o download é executado.

Para efetuar este download, a função exportada pelo MSI acessa uma URL. Este acesso faz com que o computador da vítima receba um arquivo de extensão JPG e a função exportada é responsável por extrair um arquivo ZIP de dentro da imagem.

Ao descomprimir em memória o arquivo ZIP, a função cria uma pasta com o mesmo nome de algum software presente dentro de C:\ProgramData, e aloca os 4 arquivos recebidos dentro da mesma. Esta pasta é alocada, então, dentro de C:\ (Disco Local).

Os arquivos em questão, inicialmente, utilizam a extensão BMP (1img.bmp, 2img.bmp, 3img.bmp, 4img.bmp) e a função então é responsável por renomear os 4 arquivos alocados nesta pasta para um arquivo com extensão EXE (nome configurado de forma randômica) e os outros três com extensão DLL (nomes configurados por strings fixadas na DLL do primeiro estágio), onde dois são maliciosos:  vstdlib_s.dll e PSVirt32.dll. A outra DLL presente serve apenas para iniciar a execução do software legítimo que veio embarcado neste download:

O MSI também insere uma tarefa agendada utilizando o schtasks.exe, que vai ser responsável por iniciar o segundo estágio. A tarefa agendada serve para iniciar o executável legítimo citado acima. Esta tarefa será agendada para ser executada uma única vez com data e horário específicos (o horário sempre vai ser aproximadamente 3 minutos depois do MSI ter sido executado).

Segundo Estágio: Preparando o ambiente

O executável legítimo em questão é um módulo presente no software da Steam. O nome veio como RdrCEF894421699_u.exe. Todavia, o executável é conhecido no mercado como steamerrorreporter.exe, sendo utilizado no segundo estágio de infecção para efetuar uma técnica conhecida como DLL side-loading. No Windows, os programas podem definir quais bibliotecas são carregadas em tempo de execução, especificando um caminho completo ou usando outros mecanismos. A técnica de DLL side-loading visa tirar proveito de referências de bibliotecas fracas e da ordem de pesquisa padrão do Windows, colocando um arquivo DLL malicioso disfarçado como uma DLL legítima em um sistema, que será carregado automaticamente por um programa legítimo. O primeiro local que o Windows pesquisará é o diretório do qual o aplicativo é carregado, fato ocorrido neste caso.

Quando o arquivo vstdlib_s.dll é iniciado via DLL side-loading é feita a chamada do arquivo PSVirt32.dll, que tem como missão executar uma série de funções responsáveis por verificar se o ambiente atual é uma VM (Virtual Machine). A DLL faz várias verificações de sistema para detectar e evitar ambientes de virtualização e análise conhecidas no mercado como VirtualBox, Wine (camada de compatibilidade para sistemas operativos UNIX que tem como objetivo a implementação da API da Microsoft Windows), VPC (Amazon Virtual Private Cloud) e VMWare.

A segunda ação executada pelo arquivo vstdlib_s.dll é a adição da chamada do executável legítimo na chave de registro Run dentro de HKEY_CURRENT_USER, fazendo com que o arquivo seja executado toda vez que o usuário infectado for logado.

Logo após, o arquivo cria um processo filho executando o WMIC.exe. Este executável é um utilitário de linha de comando que é usado para acessar o Windows Management Instrumentation. O Windows Management Instrumentation (WMI) serve como uma infraestrutura para dados de gerenciamento e operações em sistemas operacionais baseados no Windows. O arquivo usufrui desta ferramenta para obter informações do sistema operacional e obter uma lista de Antivirus presentes no computador infectado.

Terceiro estágio: Mekotio

O estágio de infecção anterior deixa armazenado no diretório Documents do usuário infectado um arquivo denominado “nimda”, que é nada mais que o nome do usuário ao contrário (“admin”), de extensão ini. O arquivo serve como uma espécie de validação onde os próximos estágios só irão ser efetuados se este arquivo estiver presente no computador. Este arquivo tem como informações a versão da ameaça baixar, a data de infecção e a pasta onde armazenar:

Executado as validações citadas no segundo estágio, um novo download é requisitado pela DLL vstdlib_s.dll. O arquivo baixado é nada mais do que uma imagem JPG que possui uma URL cifrada concatenada ao final do arquivo. A DLL então remove a cifragem e novamente executa mais um download. Um arquivo ZIP então é adquirido, contendo um MSI. O arquivo ZIP, armazenado em memória, é então extraído e o MSI e, em seguida, armazenado no diretório abaixo, sendo salvo com um nome randômico, depois da extração (1643afvc.msi). Este MSI possui uma DLL atachada contendo o Mekotio:

Em seguida, a mesma DLL acessa uma URL contendo parâmetros em string encodadas em Base64. A string enviada, acoplada no parâmetro counter, encaminha ao contador de vítimas o nome do computador e seu sistema operacional, além da string “False” e “No”, que remetem a checagem de Antivírus feita, utilizando o WMIC.exe, além de uma confirmação se o computador já foi infectado alguma vez por esta sample:

Depois de executar os passos acima, o arquivo cria uma MessageBox, informando que o computador vai ser desligado. Logo, um processo filho é criado, executando o arquivo shutdown.exe, reiniciando assim o computador, como demonstrado abaixo:

Quando o computador liga, o arquivo RdrCEF894421699_u.exe é iniciado e o DLL side-loading é repetido. Este executável novamente utiliza do WMIC.exe para averiguar se há algum produto de antivírus instalado no device e, caso nenhum antivírus seja detectado, um processo filho do executável msiexec.exe é criado pelo arquivo, com o intuito de executar o MSI que foi armazenado na pasta Forza Horizon:

Mekotio: Por dentro da ameaça

O malware analisado possui várias strings encriptadas. Todavia, o decrypt das strings utilizados pela ameaça foram feitos a partir do entendimento do algoritmo de criptografia personalizada. Ao decifrar as Strings foi possível identificar muitas informações sobre como o malware opera. A DLL maliciosa em questão possui textos que possivelmente são utilizados para persuadir a vítima a digitar novamente as informações enviadas, informar que o site está atualizando, relatar que o sistema está sendo reiniciado e instruir que medidas de segurança estão sendo adotadas.

O mekotio também possui strings referentes a softwares de Internet Banking, o qual são provavelmente utilizados para identificar a presença destes no ambiente da vítima. Foram encontradas também algumas funções específicas para serem executadas no host infectado, todas feitas para controle do computador. Dentro de suas informações encriptadas foi possível observar que a ameaça tem como foco pessoas Físicas e Jurídicas, além de conter uma lista de alvos abrangendo Bancos Digitais, corretoras de criptomoedas e bancos da América Latina em geral.

Para estabelecer a conexão com o servidor de comando e controle (C2), o malware acessa uma URL do Dropbox para fazer o download de um arquivo ZIP que contém uma imagem JPG. Essa imagem possui uma série de dados criptografados (utilizando o algoritmo customizado) que, ao serem decifrados, revelam o endereço IP e a porta do servidor C2. Toda comunicação é feita de maneira cifrada e o malware envia strings “PING” ao C2 e espera receber um retorno “PONG” para confirmar se o computador continua infectado e operante.

Comentário do Analista

A nova variante analisada pela Tempest apresenta mudanças significativas em seus TTPs. Em versões anteriores, os estágios de infecção eram pouco elaborados, enquanto na versão mais recente, há sucessivas etapas pré-infecção que criam um verdadeiro quebra cabeça até se chegar na implantação do malware. Além disso, o trojan passou a usar massivamente o recurso de CustomActions para exportar funções das DLLs maliciosas. Como a execução do CustomAction é feita, diretamente, pelo processo msiexec.exe, identificar essas chamadas da DLL maliciosa é um desafio para os analistas. Algumas funções presentes em versões mais antigas do Mekotio ainda permanecem ativas. Entretanto, novos artifícios foram identificados, como o uso do schtasks.exe para agendar tarefas, o emprego de um algoritmo de criptografia customizado para ofuscar o nome das instituições-alvos, ações maliciosas e comunicação com o C2, e a modificação da estrutura de arquivos de imagens para concatenar dados.

MITRE ATT&CK