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.).
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.
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.
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 “/”.
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.
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. |