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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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. |