Vadokrist: malware bancário direcionado ao Brasil | WeLiveSecurity

Vadokrist: malware bancário direcionado ao Brasil

Dando continuidade à nossa série sobre trojans bancárias na América Latina, desta vez, analisamos o Vadokrist, um malware bancário direcionado ao Brasil.

Dando continuidade à nossa série sobre trojans bancárias na América Latina, desta vez, analisamos o Vadokrist, um malware bancário direcionado ao Brasil.

O Vadokrist é um trojan bancário que a ESET acompanha desde 2018 e que está ativo quase exclusivamente no Brasil. Nesta edição de nossa série, examinamos seus principais recursos e algumas conexões com outras famílias de trojans bancários presentas na América Latina.

O Vadokrist compartilha vários recursos com outras famílias de trojans bancários, como Amavaldo, Casbaneiro, Grandoreiro e Mekotio, que descrevemos anteriormente. Recentemente, também publicamos um white paper que destaca as semelhanças entre essas ameaças na América Latina.

Caracterísitcas do Vadokrist

O Vadokrist é escrito em Delphi. Uma das principais características ​​é a desproporcional quantidade de código nos binários que não é usada. Após uma análise mais aprofundada, acreditamos que essa seja uma estratégia para evitar a detecção e impedir ou retardar a sua análise. Conseguimos vincular parte do código a projetos do Delphi, como o QuickReport.

O Vadokrist armazena strings em tabelas. A ameaça costumava conter uma implementação de uma tabela de strings idêntica ao Casbaneiro (ver Figura 1). No entanto, algumas versões recentes desse trojan bancário passaram a usar várias tabelas de string, cada uma com uma finalidade diferente (lista de alvos de ataque, configurações gerais, nomes de comandos de backdoor, etc.).

Figura 1. Implementação da tabela de strings nos binários do Vadokrist.

Aos serem executados pela primeira vez, a grande maioria dos trojans bancários na América Latina coletam informações da máquina das vítimas (geralmente o nome do computador e a versão do sistema operacional Windows). No entanto, a única informação que o Vadokrist coleta é o nome de usuário das vítimas e, ao contrário da maioria dos outros trojans que realizam essa ação no momento de serem instalados, esse processo é realizado apenas após iniciar um ataque a uma instituição financeira.

Para garantir a persistência, o Vadokrist usa uma Run key ou cria um arquivo LNK na pasta de inicialização.

Seus recursos de backdoor são os típicos desse tipo de malware, sendo capaz de manipular o mouse, simular e gravar pressionamentos de tecla, fazer capturas de tela e reiniciar a máquina. O Vadokrist também pode impedir o acesso a alguns sites, o que é feito de uma forma bastante desajeitada, encerrando o processo do navegador quando a vítima tenta visitar esses sites. Acreditamos que essa técnica seja usada para evitar que as vítimas acessem suas contas bancárias comprometidas, o que faz com que os atacantes possam continuar tendo o controle de cada uma delas.

Criptografia

A maioria dos binários do Vadokrist implementam um algoritmo criptográfico que vimos em outros trojans bancários latino-americanos (Amavaldo e Casbaneiro) que chamamos de TripleKey. O Vadokrist usa este algoritmo para proteger suas strings e, ocasionalmente, também os payloads e as configurações remotas (veremos isso logo a seguir). Para entender um pouco melhor, implementamos o algoritmo em Python, como pode ser visto na Figura 2.

Figura 2. Esquema de criptografia TripleKey usado pelo Vadokrist para proteger strings, payloads e configurações remotas.

Além disso, vimos o Vadokrist usando RC4 em alguns de seus binários mais recentes e, no passado, também o TwoFish. Isso é muito incomum entre os trojans bancários na América Latina, pois a maioria deles nunca usa algoritmos criptográficos conhecidos.

Distribuição

“MSI overload”

Os e-mails de spam que propagam o Vadokrist contêm dois arquivos ZIP aninhados que contêm dois arquivos: um instalador MSI e um arquivo CAB. Caso uma vítima execute o instalador MSI, ele irá localizar o arquivo CAB e extrair seu conteúdo (um carregador MSI) para o disco. Em seguida, o arquivo CAB executa um arquivo JavaScript incorporado que adiciona uma entrada de Run key, garantindo que o loader MSI seja executado na inicialização do sistema. Finalmente, o script reinicia a máquina. Na inicialização, o loader MSI executa uma DLL embutida: o trojan bancário Vadokrist. Esse processo é ilustrado na Figura 3. Observe que não existe um downloader instalado – o trojan bancário é distribuído diretamente via e-mails de spam.

Figura 3. Cadeia de execução recentemente usada pelo Vadokrist.

Vale a pena mencionar o arquivo JavaScript debido a sua ofuscação. Ele aproveita a forma como o operador de vírgula (,) funciona em JavaScript e abusa dele para reduzir a legibilidade e possivelmente ignorar a emulação. Esse arquivo ofusca as condições usando o operador lógico AND (&&) de maneira semelhante. Veja um exemplo na Figura 4.

Figura 4. Instalador de JavaScript usado pelo Vadokrist. A parte inferior mostra o script com operadores transformados para melhor legibilidade.

Técnicas de distribuição e execução mais antigas

Observamos o Vadokrist, como a maioria dos outros trojans bancários latino-americanos, usando várias implementações da cadeia de distribuição típica. Não analisaremos todas elas, mas vale a pena mencionar duas delas. Vimos o Vadokrist compartilhando um downloader em Delphi com o Grandoreiro e uma cadeia de distribuição completa com o Mekotio – na verdade, aquela marcada como Cadeia 1 em nosso artigo sobre o Mekotio.

O Vadokrist ocasionalmente depende do carregamento lateral do DLL com um injetor específico para descriptografar e executar o trojan bancário. Esse injetor é idêntico ao usado pelo Amavaldo e implementa o algoritmo mencionado anteriormente, TripleKey, para a descriptografia de dados.

Configuração remota

O Vadokrist utiliza configuração remota tanto em downloaders quanto no próprio trojan bancário, geralmente hospedado em serviços de armazenamento público como o GitHub.

O arquivo de configuração geralmente é criptografado por TripleKey ou RC4. Na Figura 5, podemos ver que em ambos os casos os dados podem ser descriptografados sem nenhum conhecimento adicional – no caso do método TripleKey, foi possível extrair as três chaves do final da string, e no caso do RC4, derivamos a chave da senha. No caso da última, os dados criptografados também são codificados em base64.

O delimitador também é alterado de vez em quando. Até agora, vimos três caracteres diferentes usados: “|”, “!” e “/”.

Figura 5. Arquivos de configuração remota criptografados e usados por Vadokrist.

Agora que sabemos como descriptografar o arquivo de configuração, vamos examinar seu conteúdo. No caso do trojan bancário, o resultado é fácil de entender, pois é o endereço IP de um servidor C&C. Para os downloaders, o formato é um pouco mais complexo, conforme ilustrado na Figura 6.

Figura 6. Diferentes formatos de configuração remota usados pelos downloaders do Vadokrist.

Para simplificar, reconhecemos uma configuração com um ID opcional e seis campos:

  • [obrigatório] A URL para baixar o trojan bancário
  • [opcional] Pasta especial (primeira parte do caminho de instalação)
  • [opcional] Sinalizador de instalação (descrito a seguir)
  • [opcional] Caminho (segunda parte do caminho de instalação)
  • [opcional] Nome do arquivo (terceira e última parte do caminho de instalação)
  • [obrigatório] URL de notificação

Dois desses campos podem exigir mais explicações. Se o sinalizador de instalação for definido como “T”, todas as três partes do caminho de instalação serão usadas – caso contrário, o primeiro será ignorado. Apenas se envia para a URL de notificação se um aplicativo Core.exe estiver sendo executado – uma verificação bem semelhante à de outros trojans bancários latino-americanos que tentam detectar a presença do software antifraude Warsaw GAS Tecnologia.

Podemos ver que a primeira variante usa todos os campos, a segunda não usa o ID e a terceira usa apenas os dois campos obrigatórios de URL. O uso do delimitador nesse caso é um pouco mais complexo, já que um delimitador é usado para separar entradas diferentes e outro para separar os campos de uma entrada. Além disso, podemos ver que os delimitadores também mudam nesse momento.

A mudança dinâmica do formato do arquivo de configuração indica que o Vadokrist está em desenvolvimento ativo e contínuo.

Conclusão

Nesta publicação, analisamos o Vadokrist, um trojan bancário latino-americano direcionado ao Brasil. Mostramos que a ameaça possui recursos típicos dos trojans bancários latino-americano – é escrito em Delphi, conta com funcionalidade de backdoor e visa a instituições financeiras. O fato do Vadokrist não coletar informações sobre as vítimas logo após o comprometimento das máquinas marca a diferença na implementação típica em relação aos outros trojans bancários na América Latina.

Abordamos seus esquemas de criptografia, métodos de distribuição, execução e formatos de configuração remota. O Vadokrist aparentemente está conectado ao Amavaldo, Casbaneiro, Grandoreiro e Mekotio, outros trojans que estão presentes na America Latina e que já foram descritos anteriormente em nossa série.

Para qualquer dúvida, entre em contato conosco através do e-mail fearintel@eset.com. Os Indicadores de Comprometimento também podem ser encontrados em nosso repositório GitHub.

Indicadores de Comprometimento (IoCs)

Hashes

Campanha “MSI overload”

SHA-1DescriptionESET detection name
D8C6DDACC42645DF0F760489C5A4C3AA686998A1MSI installerJS/TrojanDownloader.Banload.ABD
01ECACF490F303891118893242F5600EF9154184MSI loaderWin32/Spy.Vadokrist.T
F81A58C11AF26BDAFAC1EB2DD1D468C5A80F8F28Vadokrist banking trojanWin32/Spy.Vadokrist.T

Outro

SHA-1DescriptionESET detection name
8D7E133530E4CCECE9CD4FD8C544E0913D26FE4BVadokrist banking trojanWin32/Spy.Vadokrist.AF
AD4289E61642A4A724C9F44356540DF76A35B741Vadokrist banking trojanWin32/Spy.Vadokrist.T
BD71A9D09F7E445BE5ACDF412657C8CFCE0F717DVadokrist banking trojanWin32/Spy.Vadokrist.AD
06C0A039DEDBEF4B9013F8A35AACD7F33CD47524Downloader (MSI/JS)JS/TrojanDownloader.Banload.AAO
FADA4C27B78DDE798F1E917F82226B983C5B74D8Downloader (Delphi)Win32/Spy.Vadokrist.Y
525FCAA13E3867B58E442B4B1B612664AFB5A5C0Injector shared with AmavaldoWin32/Spy.Amavaldo.L

Servidores C&C recentes

  • 104.41.26[.]216
  • 104.41.41[.]216
  • 104.41.47[.]53
  • 191.232.212[.]242
  • 191.232.243[.]100
  • 191.235.78[.]249
  • 191.237.255[.]155
  • 191.239.244[.]141
  • 191.239.245[.]87
  • 191.239.255[.]102

Técnicas de MITRE ATT&CK

Nota: Esta tabela foi criada usando a versão 8 do framework do MITER ATT & CK.

TacticIDNameDescription
Resource DevelopmentT1583.001Acquire Infrastructure: DomainsVadokrist registers its own domains to be used as C&C servers.
T1587.001Develop Capabilities: MalwareVadokrist is operated by the same group that develops it.
Initial AccessT1566.001Phishing: Spearphishing AttachmentVadokrist is distributed as a spam attachment.
ExecutionT1059.001Command and Scripting Interpreter: PowerShellVadokrist uses PowerShell in some distribution chains.
T1059.005Command and Scripting Interpreter: Visual BasicVadokrist uses VBScript in some distribution chains.
T1059.007Command and Scripting Interpreter: JavaScript/JScriptVadokrist uses JavaScript in its recent distribution chains.
T1204.002User Execution: Malicious FileVadokrist relies on the user to execute the malicious binary.
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run Keys / Startup FolderVadokrist ensures persistence via Run key or LNK file in the startup folder.
Defense EvasionT1140Deobfuscate/Decode Files or InformationVadokrist is often distributed encrypted and encrypts its remote configuration.
T1574.002Hijack Execution Flow: DLL Side-LoadingVadokrist is sometimes executed by this technique.
T1036.005Masquerading: Match Legitimate Name or LocationVadokrist masquerades as legitimate software.
T1218.007Signed Binary Proxy Execution: MsiexecVadokrist uses the MSI format for execution.
Credential AccessT1056.001Input Capture: KeyloggingVadokrist can capture keystrokes.
DiscoveryT1010Application Window DiscoveryVadokrist looks for bank-related windows based on their names.
T1057Process DiscoveryVadokrist tries to discover anti-fraud software by process name.
T1082System Information DiscoveryVadokrist discovers victim’s username.
T1113Screen CaptureVadokrist can take screenshots.
Command and ControlT1132.002Data Encoding: Non-Standard EncodingVadokrist communicates via a custom protocol encrypted with the TripleKey algorithm.
ExfiltrationT1041Exfiltration Over C2 ChannelVadokrist exfiltrates data via C&C server.

Newsletter

Discussão