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.
def decrypt_payload(data_enc, key1, key2, key3):
data_dec = str()
for c in data_enc:
x = data_enc[i] ^ (key3 >> 8) & 0xFF
data_dec += chr(x)
key3 = ((x + key3) & 0xFF) * key1 + key2
return data_dec
def decrypt_string(data_enc, key1, key2, key3):
data_dec = str()
for c in data_enc:
x = data_enc[i] ^ (key3 >> 8) & 0xFF
data_dec += chr(x)
key3 = ((data_enc[i] + key3) & 0xFFFF) * key1 + key2
return data_dec
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-1 | Description | ESET detection name |
---|---|---|
D8C6DDACC42645DF0F760489C5A4C3AA686998A1 | MSI installer | JS/TrojanDownloader.Banload.ABD |
01ECACF490F303891118893242F5600EF9154184 | MSI loader | Win32/Spy.Vadokrist.T |
F81A58C11AF26BDAFAC1EB2DD1D468C5A80F8F28 | Vadokrist banking trojan | Win32/Spy.Vadokrist.T |
Outro
SHA-1 | Description | ESET detection name |
---|---|---|
8D7E133530E4CCECE9CD4FD8C544E0913D26FE4B | Vadokrist banking trojan | Win32/Spy.Vadokrist.AF |
AD4289E61642A4A724C9F44356540DF76A35B741 | Vadokrist banking trojan | Win32/Spy.Vadokrist.T |
BD71A9D09F7E445BE5ACDF412657C8CFCE0F717D | Vadokrist banking trojan | Win32/Spy.Vadokrist.AD |
06C0A039DEDBEF4B9013F8A35AACD7F33CD47524 | Downloader (MSI/JS) | JS/TrojanDownloader.Banload.AAO |
FADA4C27B78DDE798F1E917F82226B983C5B74D8 | Downloader (Delphi) | Win32/Spy.Vadokrist.Y |
525FCAA13E3867B58E442B4B1B612664AFB5A5C0 | Injector shared with Amavaldo | Win32/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.
Tactic | ID | Name | Description |
---|---|---|---|
Resource Development | T1583.001 | Acquire Infrastructure: Domains | Vadokrist registers its own domains to be used as C&C servers. |
T1587.001 | Develop Capabilities: Malware | Vadokrist is operated by the same group that develops it. | |
Initial Access | T1566.001 | Phishing: Spearphishing Attachment | Vadokrist is distributed as a spam attachment. |
Execution | T1059.001 | Command and Scripting Interpreter: PowerShell | Vadokrist uses PowerShell in some distribution chains. |
T1059.005 | Command and Scripting Interpreter: Visual Basic | Vadokrist uses VBScript in some distribution chains. | |
T1059.007 | Command and Scripting Interpreter: JavaScript/JScript | Vadokrist uses JavaScript in its recent distribution chains. | |
T1204.002 | User Execution: Malicious File | Vadokrist relies on the user to execute the malicious binary. | |
Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | Vadokrist ensures persistence via Run key or LNK file in the startup folder. |
Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Vadokrist is often distributed encrypted and encrypts its remote configuration. |
T1574.002 | Hijack Execution Flow: DLL Side-Loading | Vadokrist is sometimes executed by this technique. | |
T1036.005 | Masquerading: Match Legitimate Name or Location | Vadokrist masquerades as legitimate software. | |
T1218.007 | Signed Binary Proxy Execution: Msiexec | Vadokrist uses the MSI format for execution. | |
Credential Access | T1056.001 | Input Capture: Keylogging | Vadokrist can capture keystrokes. |
Discovery | T1010 | Application Window Discovery | Vadokrist looks for bank-related windows based on their names. |
T1057 | Process Discovery | Vadokrist tries to discover anti-fraud software by process name. | |
T1082 | System Information Discovery | Vadokrist discovers victim’s username. | |
T1113 | Screen Capture | Vadokrist can take screenshots. | |
Command and Control | T1132.002 | Data Encoding: Non-Standard Encoding | Vadokrist communicates via a custom protocol encrypted with the TripleKey algorithm. |
Exfiltration | T1041 | Exfiltration Over C2 Channel | Vadokrist exfiltrates data via C&C server. |