Em uma nova edição de nossa série sobre trojans bancários na América Latina, vamos falar sobre o Mispadu, um trojan bancário latino-americano que usa publicidade maliciosa, se faz passar pelo McDonald's e estende sua superfície de ataque para navegadores web.

Acreditamos que esta família de malware é direcionada ao público em geral. Seus principais objetivos são o roubo de dinheiro e senhas. No Brasil, por exemplo, vimos essa família distribuir uma extensão maliciosa do Google Chrome que tenta roubar dados de páginas de home banking e cartões de crédito, e que compromete uma das principais formas de pagamento de contas: o boleto bancário.

Características

Mispadu é uma família de malware que identificamos durante nossa pesquisa sobre trojans bancários na América Latina. A ameaça, direcionada principalmente ao Brasil e México, está escrita em Delphi e ataca suas vítimas usando o mesmo método que descrevemos nas outras famílias desta série, ou seja, apresentando janelas pop-up falsas e tentando persuadir os usuários para que divulguem informações confidenciais.

Devido à sua funcionalidade de backdoor, Mispadu pode tirar screenshots, simular ações de mouse e teclado, e gravar keystrokes. A ameaça pode ser atualizada através de um arquivo Visual Basic Script (VBS), que é baixado e executado automaticamente.

Assim como os outros trojans bancários analisados e que fazem parte desta série, Mispadu também coleta informações sobre suas vítimas. Os dados coletados são os seguintes:

  • Versão do sistema operacional
  • Nome do computador
  • ID do idioma
  • Se o aplicativo "Diebold Warsaw GAS Technology" foi instalado. Este app, bastante popular no Brasil, é usado para proteger o acesso ao home banking
  • Lista de aplicativos bancárias comumente instaladas na América Latina
  • Lista de produtos de segurança instalados

Como nos casos de Amavaldo e Casbaneiro, Mispadu também pode ser identificado pelo uso de um algoritmo criptográfico único e personalizado para ofuscar as strings em seu código. Isto é utilizado em todos os componentes, bem como para proteger os seus arquivos de configuração e as suas comunicações com o C&C. A Imagem 1 ilustra o código central que implementa este algoritmo, e a Imagem 2 ilustra o pseudocódigo para o algoritmo.

Imagem 1. Núcleo do algoritmo do Mispadu para descriptografar dados.

def decrypt_string(data_enc, key):
	seed = data_enc[0] - 0x41 # 'A'
	data_dec = str()
	for i in range(1, len(data_enc), 2):
		b1 = (data_enc[i] - 0x41) * 25
		b2 = data_enc[i+1] - 0x41 - seed - key
		data_dec += chr(b1 + b2)
	return data_dec

Imagem 2. Pseudocódigo do algoritmo do Mispadu para descriptografar dados.

O executável de trojan bancário vem com quatro aplicativos potencialmente indesejáveis armazenados em sua seção de recursos. Todos esses aplicativos são arquivos da Nirsoft legítimos, mas foram parcheados para serem executados a partir da linha de comando sem uma GUI. Eles são usados pelo malware para extrair credenciais armazenadas em:

  • navegadores (Google Chrome, Mozilla Firefox, Internet Explorer) e
  • clientes de e-mail (Microsoft Outlook, Mozilla Thunderbird e Windows Live Mail, entre outros).

Mispadu também monitora o conteúdo da área de transferência e tenta substituir possíveis carteiras de bitcoins por suas próprias, assim como faz Casbaneiro. No entanto, ao examinarmos a carteira do atacante (ver Imagem 3), foi possível ver que até à data desta análise não foi muito bem sucedida.

Imagem 3. Carteira Bitcoin usada pelo operador do Mispadu.

Distribuição do Mispadu

Mispadu usa dois métodos de distribuição: spam (ver Imagem 4) e publicidade maliciosa. Enquanto o primeiro método é muito comum de ver no caso dos trojans bancários latino-americanos, o segundo não é, o que nos levou a querer analisá-lo mais de perto. A Imagem 5 mostra como o ataque do Mispadu se desenvolve.

Imagem 4. Exemplos de e-mails de spam usados para distribuir Mispadu. A mensagem direcionada ao Brasil (esquerda) afirma que foram feitas três tentativas para a entregar um pacote, mas o destinatário sempre esteve ausente, por isso é necessário seguir a URL para obter um reembolso. A mensagem direcionada ao México (direita) pede ao destinatário que baixe uma fatura para evitar o "bloqueio" da conta.

Imagem 5. Cadeia de distribuição e execução do Mispadu.

O responsável por essa campanha colocou anúncios patrocinados (confira a Imagem 6 para ver um exemplo) no Facebook oferecendo cupons de desconto falsos para o McDonald's. No caso de clicar em um dos anúncios, a vítima é direcionada para uma das páginas web apresentadas na Imagem 7. Independentemente do sistema operacional que o visitante utiliza, ao clicar no botão sugerido pelo anúncio, será realizado o download de um arquivo ZIP contendo um instalador MSI. Ocasionalmente, esse arquivo ZIP também inclui software legítimo, como Mozilla Firefox ou PuTTTY, mas eles são iscas simples e não são usados.

Os operadores do Mispadu compilaram duas versões diferentes do trojan bancário, dependendo do país atacado. Além disso, eles decidiram usar instaladores diferentes e estágios posteriores para cada país alvo. No entanto, a lógica de ambas as strings é a mesma e descrevemos a forma geral logo abaixo.

Imagem 6. Anúncios do Facebook criados por operadores do Mispadu que redirecionam para cupons falsos do McDonald's.

Imagem 7: Sites maliciosos oferecem cupons falsos para o McDonald's Brasil (esquerda) e México (direita).

Quando a vítima executa o instalador MSI, uma string subsequente de três scripts VBS é iniciada. O primeiro script (unpacker) descriptografa e executa o segundo script (downloader) a partir de seus dados internos, como pode ser visto na Imagem 8. O script do downloader recupera o terceiro script (loader) e o executa (ver Imagem 9).

Imagem 8. Cadeia de distribuição de sequência de comandos do desempacotador do Mispadu (estágio 1). Observe que a chave é calculada na variável w2 com o valor 95.

Imagem 9. Cadeia de distribuição do script do downloader do Mispadu (estágio 2). Note que a tecla hardcoded é a mesma que no estágio anterior.

O script do loader é mais complicado que o script dos dois primeiros estágios. É específico da localidade; já que comprova o identificador do idioma da máquina da vítima para verificar se ela realmente vem do país visado na campanha atual (Brasil ou México, respectivamente). Ele também pode detectar alguns ambientes virtuais; e no caso de detectar um ambiente virtual ou não encontrar o ambiente local desejado, o loader se fecha.

Por outro lado, o script do loader continua configurando arquivos de configuração (descritos com mais detalhes logo abaixo) e baixando (i) um trojan bancário Mispadu, (ii) um injetor (DLL) usado para executá-lo e (iii) arquivos DLL de suporte legítimo. Cada arquivo é baixado em um arquivo ZIP separado, conforme ilustrado na Imagem 5. Fornecemos pseudocódigo para o algoritmo de decodificação na Imagem 10.

def decrypt_payload(data_enc):
	key = data_enc[0]
	data_dec = str()
	for i in range(1, len(data_enc)):
		data_dec += chr(data_enc[i] - ((key + i - 1) % 10))
	return data_dec

Imagem 10. Pseudocódigo do algoritmo de descriptografia do payload do Mispadu.

Os servidores de download do Mispadu verificam a validade das solicitações recebidas. Submeter um pedido inválido resulta no envio de uma imagem obscena como resposta, que não podemos reproduzir aqui.

O script do loader configura a persistência criando um link na pasta home e executando o injetor. Isso é feito através do rundll32.exe chamando uma função exportada da DLL do injetor cujo nome vem de um dos arquivos de configuração configurados anteriormente. O injector localiza o trojan bancário criptografado, depois o descriptografa e o executa.

Encontramos um diretório aberto em um dos servidores usados pelo Mispadu que armazenava arquivos conectados a uma campanha muito semelhante. Estes arquivos podem ser usados para criar uma página web que imita o site AreaVIP e faz com que suas vítimas baixem um falsa atualização do Adobe Flash Player. Nós não observamos essa campanha ativa, então acreditamos que pode se tratar de uma configuração que será utilizada posteriormente.

Como a campanha do Mispadu para o Brasil usou o encurtador de URL Tiny.CC, conseguimos coletar alguns dados. Como pode ser visto na Imagem 11, esta campanha obteve quase 100.000 cliques exclusivamente do Brasil. Os cliques no Android são provavelmente o resultado da exibição do anúncio no Facebook, independentemente do dispositivo do usuário. Você também pode ver que a campanha é recorrente: uma fase terminou na segunda metade de setembro de 2019 e surgiu novamente no início de outubro de 2019.

Imagem 11. Estatísticas da campanha do Mispadu no Brasil.

Compartilhar um anexo de e-mail

Ambos os e-mails de spam e o falso site do McDonald's são interessantes em mais um aspecto: de onde o cupom falso é baixado. Os operadores do Mispadu utilizaram a plataforma russa Yandex.Mail para armazenar seu payload (ver Imagem 12). O cenário mais provável é que os operadores criaram uma conta no Yandex.Mail, enviaram um e-mail com o cupom malicioso como anexo e, em seguida, apresentaram à vítima um link direto para esse anexo.

Imagem 12. A URL a partir da qual é possível baixar o arquivo contendo o instalador malicioso MSI do Mispadu Configuração.

O uso de arquivos de configuração é bastante incomum entre os trojans bancários latino-americanos. No entanto, Mispadu geralmente usa três diferentes e não pode funcionar sem eles. Todos os arquivos de configuração estão contidos ou são obtidos pelo script do loader descrito acima.

A configuração de execução do Mispadu é armazenada apenas na memória com os dados baixados de um de seus servidores de download (Remote Server 1 na Imagem 5). Ele contém três partes de informações que são fundamentais:

  • uma string necessária para criar a URL para baixar o injetor
  • o nome da pasta onde o malware será instalado
  • o nome da função exportada do injetor chamado para executar o trojan bancário

Os dados de configuração geral são droppeados em C:\Users\Public\%COMPUTERNAME%[1], e nomeados como a segunda letra do nome do computador da vítima (por exemplo, para um computador chamado "JOHN-PC", o arquivo será chamado "O"). Ele é criado a partir dos dados contidos no script do loader e no arquivo de configuração de execução e contém a informação de versão, a chave criptográfica e os caminhos de sistema de arquivos.

Os dados de configuração C&C são armazenados em um arquivo na mesma localização que o anterior, com o mesmo nome de arquivo com "_" adicionado ("O_", para continuar com o exemplo anterior). Consiste em:

  • #ip# (placeholders para um endereço IP que o trojan bancário usa para receber comandos de backdoor)
  • #wp [1-3]# (placeholders para 3 portas associadas a #ip#)

Mispadu escolhe seus domínios C&C primários e secundários a partir dessas listas com base no dia atual do mês. Então, a cada poucas horas ele tenta obter uma versão atualizada do arquivo de configuração C&C desse domínio e substitui o droppeo por esta nova versão. Acreditamos que a ideia principal por trás dessa abordagem é completar os placeholders para ativar a funcionalidade de backdoor.

Proteja o navegador Google Chrome

É uma boa ideia proteger o navegador, mas não através da extensão maliciosa do navegador Google Chrome que observamos ter sido distribuída junto com o trojan bancário Mispadu no Brasil (veja Imagem 13). A extensão (ver Imagem 14) chama-se "Securty [sic] System 1.0″ e destina-se a ajudá-lo a "Proteger o seu Chrome". Ele consiste em três arquivos JavaScript maliciosos descritos logo abaixo.

Imagem 13. Parte da cadeia de distribuição do Mispadu que muda quando a extensão maliciosa do Google Chrome também é distribuída. O resto do canal de distribuição permanece o mesmo.

 

Imagem 14. A extensão maliciosa do Google Chrome instalada pelo Mispadu.

Componente 1: janelas manipuladoras

Este componente simples tem apenas uma funcionalidade: cria uma nova janela do Google Chrome e fecha todas as outras. Este componente não esteve presente em todas as amostras analisadas e acreditamos que ainda esteja em fase de testes.

Componente 2: roubo de dados de cartão de crédito

O segundo componente contém uma lista hardcodeada de sites. Nas páginas servidas a partir desses sites, procure qualquer campo de entrada contendo "texto", "e-mail", "tel", "número", "senha" ou "rádio". Se "CVV", " CÓD SEG" ou suas variantes forem encontradas em qualquer lugar do site, o conteúdo desses campos de entrada é enviado ao atacante quando a vítima envia as informações. Isto revela claramente a intenção desta parte da extensão: o roubo de dados de cartões de crédito.

Componente 3: roubo de dados bancários e da “fatura”

O terceiro componente é o mais avançado. Primeiro, usando um algoritmo semelhante ao DGS, ele gera duas strings com base no dia atual do mês e no número do mês. Essas strings são usadas para formar uma URL do GitHub no formato https://raw.githubusercontent.com/%FIRST_STRING%/w/master/%SECOND_STRING%, na qual %FIRST_STRING% é um nome de usuário do GitHub. Os dados baixados da URL gerada são descriptografados em uma URL diferente que chamaremos de URL do payload.

Este componente também contém uma lista hardcodeada de sites específicos, como o caso anterior. Se a vítima visitar um desses sites, a URL do payload fornece um arquivo JavaScript malicioso, específico para esse site, que é carregado dinamicamente através da função de avaliação do JavaScript.

Além disso, esse componente também tenta comprometer o uso do Boleto Bancário. O sistema tem sido um alvo atraente para os atacantes há muito tempo (você pode ler mais neste documento de 2014). Para pagar com esse sistema, é necessário imprimir um comprovante, chamado boleto. Este boleto contém um número de identificação específico da conta bancária que deve receber o pagamento e um código de barras (ver Imagem 15). O pagamento é feito escaneando o código de barras ou digitando o número de identificação manualmente.

Imagem 15. Um exemplo de um boleto (fonte: Wikipedia).

Usando uma expressão regular, o malware tenta encontrar o número de identificação e substituí-lo pelo número de identificação do atacante (obtido dinamicamente). Além disso, ele utiliza um site legítimo para gerar o código de barras de pagamento, através de um número de conta do atacante e substitui o número legítimo por esse. A parte do código responsável pela comprometimento do boleto pode ser vista na Imagem 16.

Imagem 16. Extensão do Mispadu para o Google Chrome que afeta o boleto. O código que recebe o número de conta do atacante está marcado em vermelho, a geração de códigos de barras maliciosos em verde.

Diferenças entre campanhas

Além das diferenças já mencionadas e do fato óbvio de que cada variante do trojan bancário Mispadu aponta para um conjunto diferente de bancos, dependendo do país de residência, a campanha brasileira difere da campanha mexicana em vários outros aspectos menores.

Parece definir aleatoriamente os caminhos do sistema de arquivos e nomes de arquivos onde os arquivos de configuração são armazenados e o trojan bancário é instalado para cada vítima. Além disso, o script do loader contém uma parte que não é usada no momento da escrita, mas está pronto para utilizar o Windows mshta.exe para executar o verdadeiro trojan bancário em vez do rundll.exe.

Conclusão

Nesta publicação, falamos sobre o Mispadu, outra família de trojans bancários latino-americanos. Mostramos suas principais características, inclusive porque o consideramos um trojan bancário latino-americano: está escrito em Delphi, aponta para o Brasil e o México, usa janelas pop-up e contém funcionalidades de backdoor.

Descrevemos sua cadeia de distribuição mais recente e nos concentramos em alguns aspectos interessantes, como o uso do serviço de e-mail Yandex.Mail para armazenar payloads maliciosos e os anúncios maliciosos do Facebook. Nós também analisamos os arquivos de configuração usados pelo Mispadu.

Falamos sobre uma extensão maliciosa do Google Chrome que já distribuiu o Mispadu no Brasil. O objetivo dessa extensão é roubar informações de cartão de crédito, informações bancárias confidenciais e tentar roubar dinheiro de suas vítimas, comprometendo o sistema de pagamento através do Boleto Bancário.

Caso tenha alguma dúvida, entre em contato conosco pelo e-mail threatintel@eset.com Os indicadores de comprometimento também podem ser encontrados em nosso repositório do GitHub.

Indicadores de Comprometimento (IoCs)

Hashes

Campanhas no Brasil

SHA-1 Description ESET detection name
A4EDA0DD2C33A644FEEF170F5C24CF7595C19017 MSI installer VBS/TrojanDownloader.Agent.RVY
A9BADCBF3BD5C22EEB6FAF7DB8FC0A24CF18D121 Mispadu injector Win32/Injector.EHXF
337892E76F3B2DF0CA851CCF4479E56EAF2DB8FD Mispadu banking trojan (PE compilation timestamp 8 Sep, 2019) Win32/Spy.Mispadu.C
A8CD12CC0BBD06F14AA136EA5A9A2E299E450B18 Mispadu banking trojan (PE compilation timestamp 2 Oct, 2019) Win32/Spy.Mispadu.C

Campanhas no México

SHA-1 Description ESET detection name
CFE21DBFB97C2E93F099D351DE54099A3FC0C98B MSI installer VBS/TrojanDownloader.Agent.RVY
251AC7386D1B376FB1CB0E02BDFC45472387C7BC Mispadu injector Win32/Injector.EHXF
A4FC4162162A02CE6FEADFE07B22465686A0EC39 Mispadu banking trojan (PE compilation timestamp 10 Sep, 2019) Win32/Spy.Mispadu.J
710A20230B9774B3D725539385D714B2F80A5599 Mispadu banking trojan (PE compilation timestamp 11 Sep, 2019) Win32/Spy.Mispadu.J

Extensão do Google Chrome 

SHA-1 Description ESET detection name
3486F6F21034A33C5425A398839DE80AC88FECA8 Component 1 (manipulating windows) JS/Spy.Banker.DQ
1D19191FB2E9DED396B6352CBF5A6746193D05E8 Component 2 (credit cards) JS/Spy.Banker.DQ
22E6EBDFAB7C2B07FF8748AFE264737C8260E81E Component 3 (banking and Boleto data) JS/Spy.Banker.DQ

Aplicativos potencialmente indesejados para roubo de credenciais

SHA-1 Description ESET detection name
63DCBE2DB9CC14564EB84D5E953F2F9F5C54ACD9 Email client credential stealer Win32/PSWTool.MailPassView.E
8B950BF660AA7B5FB619E1F6E665D348BF56C86A Google Chrome credential stealer Win32/PSWTool.ChromePass.A
F6021380AD6E26038B5629189A7ADA5E0022C313 Mozilla Firefox credential stealer Win32/PSWTool.PassFox.F
76F70276EB95FFEC876010211B7198BCBC460646 Internet Explorer credential stealer Win32/PSWTool.IEPassView.NAH

Nomes de arquivo

  • C:\Users\Public\%COMPUTERNAME%[1]
  • C:\Users\Public\%COMPUTERNAME%[1]_
  • C:\Users\Public\{winx86,libeay32,ssleay32}.dll (legitimate DLLs downloaded by the loader script; partial indicator)

Servidores utilizados

  • http://18.219.25[.]133/br/mp1a{1,sq,sl,ss}.aj5
  • http://3.19.223[.]147/br/mp1a{1,sq,sl,ss}.aj5
  • http://51.75.95[.]179/la8a{1,sq,sl,ss}.ay2

URLs para o cupom de desconto

  • Brasil
    • http://promoscupom[.]cf/
    • http://mcdonalds.promoscupom[.]cf/index3.html
  • México
    • http://mcdonalds.promoscupom[.]cf/index2.html

Carteira Bitcoin

  • 3QWffRcMw6mmwv4dCyYZsXYFq7Le9jpuWc

Técnicas de MITRE ATT&CK

Tactic ID Name Description
Initial Access T1192 Spearphishing Link In Mispadu spam campaigns, the victim is led to the payload by a malicious link.
Execution T1085 Rundll32 Mispadu banking trojan is executed by an injector that is run via rundll32.exe.
Persistence T1176 Browser Extensions Mispadu variant targeting Brazil utilizes a Google Chrome browser extension.
T1060 Registry Run Keys / Startup Folder Mispadu ensures persistence by creating a link in the startup folder.
Defense Evasion T1140 Deobfuscate/Decode Files or Information Mispadu uses encoded configuration files.
T1036 Masquerading Mispadu masquerades as a discount coupon.
T1064 Scripting Mispadu utilizes VBS exclusively in its distribution chains.
Credential Access T1056 Input Capture Mispadu may execute a keylogger. Its Google Chrome extension tries to steal various sensitive information via input capturing.
T1081 Credentials in Files Mispadu uses other tools to extract credentials for email clients and web browsers from files.
T1214 Credentials in Registry Mispadu uses other tools to extract credentials for email clients and web browsers from the Windows Registry.
Discovery T1083 File and Directory Discovery Mispadu searches for various filesystem paths in order to determine what applications are installed on the victim's machine.
T1057 Process Discovery Mispadu searches for various process names in order to determine what applications are running on the victim's machine.
T1063 Security Software Discovery Mispadu scans the system for installed security software.
T1082 System Information Discovery Mispadu extracts the version of the operating system, computer name and language ID.
Collection T1115 Clipboard Data Mispadu captures and replaces bitcoin wallets in the clipboard.
T1113 Screen Capture Mispadu contains a command to take screenshots.
Command and Control T1024 Custom Cryptographic Protocol Mispadu uses a custom cryptographic protocol to protect its data.
Exfiltration T1041 Exfiltration Over Command and Control Channel Mispadu sends the data it collects to its C&C server.