Como parte de nossa série sobre trojans bancários na América Latina, desta vez falaremos sobre o Grandoreiro, um trojan bancário direcionado a usuários em países como o Brasil, o México, a Espanha e o Peru. Analisando a ameaça, percebemos o grande esforço de seus criadores para evitar a detecção e a emulação do malware, com o intuito de progredir em direção a uma arquitetura modular.

Este trojan, que é distribuído apenas por spam, está ativo pelo menos desde 2017. Inicialmente a ameaça estava direcionada ao Brasil e ao Peru, mas em 2019 passou a incluir o México e a Espanha entre seus alvos (na Figura 1 é possível ver um mapa de detecção de calor). Os criadores do Grandoneiro costumam usar uma atualização falsa do Java ou Flash, mas recentemente, como já esperávamos, observamos que o e-mail de spam também se aproveita do medo provocado pela Covid-19.

Figura 1. O mapa de calor mostra as detecções da ESET relacionadas ao Grandoreiro.

Recursos da ameaça

O nome desta família de malware foi dado com base em seu recurso mais notável: seus binários, que crescem no tamanho de pelo menos algumas centenas de megabytes. Seu desenvolvimento é bastante rápido e as mudanças de recursos e adições ocorrem com muita frequência.

Semelhante a vários outros trojans que analisamos em nossa série, este trojan escrito em Delphi ataca as vítimas exibindo pop-ups falsos que tentam enganar os usuários (fazendo com que acreditem que são janelas legítimas de seus bancos) para que informem seus dados confidenciais.

Como outros trojan bancários na América Latina, a ameaça possui recursos de backdoor que permitem manipular janelas, atualizar a si mesmo, gravar pressionamentos de teclas, simular ações de mouse e teclado, obter URLs do navegador da vítima, encerrar a sessão de login do usuário ou reiniciar o computador e bloquear o acesso a sites escolhidos.

Além de coletar informações sobre as vítimas, como nome do computador, nome de usuário, lista de produtos de segurança instalados ou se um aplicativo muito popular no Brasil está instalado para proteger o acesso ao home banking, como o Warsaw Diebold, da GAS Tecnologia, algumas versões do Grandoreiro também roubam as credenciais armazenadas no navegador Google Chrome e os dados armazenados no Microsoft Outlook. Um aspecto que devemos notar é que, aparentemente, os criadores do Grandoreiro estão constantemente desenvolvendo esse trojan bancário, já que observamos várias novas versões todos os meses. Também suspeitamos que eles estejam desenvolvendo pelo menos duas variantes de forma simultânea.

Os criadores do Grandoreiro aparentemente estão enfocados em duas ações. A primeira é ocultar o endereço C&C real usando o Algoritmo de Geração de Domínio (DGA, sigla em inglês). A segunda é fazer com que o trojan bancário seja modular. Por isso, é a primeira vez que os criadores do Grandoreiro introduziram formulários Delphi separados para cada um de seus alvos (o que é bastante comum), mas ultimamente também criaram arquivos DLL separados para cada alvo, uma abordagem que nunca vimos antes em nenhum outro trojan bancário latino-americano que analisamos anteriormente.

Distribuição do Grandoreiro

O spam parece ser o único método de distribuição do Grandoreiro. Estes spams contêm um link que redireciona os usuários para um site que oferece atualizações falsas do Flash ou Java (veja a Figura 2). Observe a seta vermelha no canto inferior esquerdo adaptada para o navegador Google Chrome, mas também podemos ver isso em outros navegadores. Percebemos que o Grandoreiro se aproveita do medo provocado pela pandemia da Covid-19 (veja a Figura 3), como já destacamos em nossa conta do Twitter @ESETresearch.

Figura 2. Sites falsos de atualização do Flash (à esquerda) e Java (à direita) (a caixa de seleção à esquerda indica que o usuário concorda com os termos e condições, o texto à direita recomenda que o usuário instale a versão mais recente do Java para evitar problemas de segurança e vulnerabilidades).

Figura 3. Site falso sobre a Covid-19. Ao clicar no vídeo, um arquivo ZIP é baixado (tradução: “Construção de 2 hospitais em 7 dias: o vídeo mostra a construção do hospital na China em 7 dias”).

Diferentemente da maioria dos trojans bancários na América Latina, o Grandoreiro usa cadeias de distribuição relativamente pequenas. Para cada campanha, os criminosos podem escolher um tipo diferente de downloader, como ilustramos na Figura 4. Estes downloaders geralmente são armazenados em serviços públicos conhecidos de troca on-line, como GitHub, Dropbox, Pastebin, 4shared ou 4Sync.

Figura 4. Possíveis formas pelas quais as cadeias de distribuição do Grandoreiro podem ser executadas (cores diferentes mostram diferentes caminhos que a cadeia pode seguir). O arquivo ZIP final é criptografado e, em alguns casos, também pode estar protegido por senha.

O payload final é um arquivo ZIP que geralmente está criptografado pelo algoritmo mostrado na Figura 5 e, muitas vezes, também vimos que ele é protegido por senha.

def decrypt_archive(data_enc, key):
	data_dec = list()
	for (i, c) in enumerate(data_enc):
		d = c ^ (~(key >> (i % 32))) & 0xFF
		data_dec.append(d)
	return data_dec

Figura 5. Pseudocódigo do algoritmo de descriptografia de arquivos usado pelo Grandoreiro.

A distribuição do payload final em um arquivo ZIP é muito comum entre os trojans bancários, mas no caso do Grandoreiro, ela tem uma importância adicional, como você verá logo a seguir.

Preenchimento binário: mecanismo para evitar a detecção

Uma das particularidades do Grandoreiro é a maneira de usar a técnica de preenchimento binário, que vimos em códigos maliciosos sofisticados e que busca aumentar o tamanho dos binários, mas não apenas adicionando uma quantidade de lixo ao final do binário, como observamos em outros trojans bancários na América Latina, mas a ameaça usa uma abordagem diferente: adiciona imagens grandes no formato BMP (geralmente 3) na seção de recursos do arquivo executável (PE) para que cada binário tenha um tamanho mínimo de 300 MB. Observe na Figura 6 que o tamanho total do EXE é de 425 MB; no entanto, o tamanho do código é de apenas 4 MB e o tamanho da seção .rsrc é de 419 MB (98,5% do tamanho total). Após examinar o conteúdo da seção .rsrc, vemos três imagens com tamanhos de 112 MB, 112 MB e 105 MB, respectivamente (ocupando 78,5% do tamanho da seção). Veja exemplos dessas imagens na Figura 7.

Figura 6. Detalhes de um binário do Grandoreiro. Vários binários do Grandoreiro são mostrados à esquerda. O restante apresenta detalhes de um desses binários.

Figura 7. Imagens BMP usadas pelo Grandoreiro para o preenchimento binário. Seu "estilo" artístico sugere que os criadores desse malware criam essas imagens de forma manual.

Por outro lado, devido à estrutura desses arquivos BMP, a compactação do binário em um arquivo ZIP produz um arquivo de apenas alguns MB, o que facilita muito a distribuição do payload. Os arquivos BMP parecem mudar com frequência, provavelmente evitando a detecção. As imagens mostradas na Figura 7 proveem de três versões diferentes do Grandoreiro. As semelhanças visíveis nos levam a acreditar que os criadores da ameaça atualizam as imagens manualmente.

Lembre-se de que o limite de tamanho do arquivo de upload no VirusTotal foi alterado para 550 MB durante 2019, mas costumava ser 256 MB; portanto, a vítima não pode verificar o arquivo usando essa plataforma devido ao tamanho. Trabalhar com um arquivo tão grande é geralmente mais difícil, tornando a análise automática ou manual muito mais lenta.

Ferramenta de spam

Durante a pesquisa, também descobrimos que o Grandoreiro usa uma ferramenta para criar e enviar mensagens de spam, como o SDK da EASendMail. Mas, além de seu objetivo principal, a ferramenta estabelece persistência no computador da vítima, provavelmente para que os atacantes possam distribuí-la a algumas vítimas por meio do Grandoreiro. Os criminosos incluíram um pequeno componente de backdoor na ferramenta que usam para receber arquivos de configuração para esses e-mails de spam. Estes arquivos determinam como os e-mails serão exibidos, para onde apontarão ou para onde enviá-los. Confira uma lista completa dos arquivos de configuração e alvos na Tabela 1.

Filename Purpose Description
ID.txt None Seems not to be used for the spam emails
html.txt Email body template Template for the email body (including placeholders - those are replaced by values from other config files)
assunto.txt Subject template (assunto = subject) Template for subject (similar to html.txt for email body)
nomes.txt List of fake names Replaces [NOME] placeholder in the templates
link.txt List of malicious URLs The email will link to one of these
lista.txt List of recipients The email will be sent to all of these
login.txt List of usernames Information required to log into the email account that will be used to send the emails
senha.txt List of passwords #rowspan#
smtp.txt SMTP server address #rowspan#

Tabela 1. Lista de arquivos de configuração usados ​​pela ferramenta de spam do Grandoreiro.

Conclusão

Como vimos, o Grandoreiro é um trojan bancário que tem como alvo usuários em países como o Brasil, o México, a Espanha e o Peru, com recursos semelhantes às de outros trojans bancários na América Latina descritos anteriormente em nossa série, como o fato de estar escrito em Delphi, contar com recursos de backdoor e usar falsos pop-ups para enganar e atacar suas vítimas.

No entanto, um recurso que torna o Grandoreiro particular é o esforço para evitar a detecção, recorrendo a várias técnicas, incluindo o uso de uma aplicação da técnica de preenchimento binário que nunca vimos antes, o que dificulta a eliminação do preenchimento enquanto se mantém um arquivo válido.

Por último, o método preferido de distribuição para esse malware é o spam, com links que redirecionam as vítimas para sites falsos de atualização do Flash ou Java criados pelos operadores e, recentemente, também sites relacionados com a Covid-19.

Para mais informações sobre a análise técnica do Grandoreiro, leia a publicação completa (em inglês).