top of page

Coyote: Trojan brasileiro com técnicas extremamente sofisticadas

  • Foto do escritor: Cyber Security Brazil
    Cyber Security Brazil
  • 14 de fev. de 2024
  • 5 min de leitura

Este artigo é uma tradução e adaptação do artigo Coyote: A multi-stage banking Trojan abusing the Squirrel installer  


Os desenvolvedores de malware Trojan bancário estão constantemente procurando por formas criativas de distribuir seus artefatos e infectar vítimas. Em uma investigação recente, encontramos um novo malware que tem como alvo usuários de mais de 60 instituições bancárias, principalmente do Brasil. O que chamou nossa atenção foi a sofisticada cadeia de infecção que utiliza várias tecnologias avançadas, diferenciando-se das infecções conhecidas por Trojans bancários.


Este malware utiliza o instalador Squirrel para distribuição, aproveitando o NodeJS e uma linguagem de programação multiplataforma relativamente nova chamada Nim como carregador para concluir sua infecção. Batizamos este Trojan recém-descoberto de "Coyote" devido ao papel dos coiotes como predadores naturais dos esquilos. A linguagem Nim se define como uma "linguagem de programação de sistemas compilada estaticamente tipada que combina conceitos bem-sucedidos de linguagens maduras como Python, Ada e Modula". A adoção de linguagens menos populares/multiplataforma por cibercriminosos é algo que identificamos como uma tendência em nosso relatório "Crimeware e ameaças cibernéticas financeiras para 2024".


Neste artigo, vamos mergulhar no funcionamento da cadeia de infecção e explorar os recursos deste Trojan.


Esqueça o antigo Delphi e MSI


No cenário de Trojans bancários, o uso da linguagem Delphi ou instaladores MSI é uma tendência recorrente entre criadores de malwares. É um fato bem conhecido na comunidade de cibersegurança que esse método serve como um vetor de infecção inicial amplamente utilizado.


O Coyote faz as coisas um pouco diferente. Em vez de seguir o caminho usual com instaladores MSI, ele optou por uma ferramenta relativamente nova para instalar e atualizar aplicativos de desktop Windows: o Squirrel. Conforme explicam os autores, "o Squirrel usa pacotes NuGet para criar pacotes de instalação e atualização, o que significa que você provavelmente já sabe a maior parte do que precisa para criar um instalador".


Coyote infection chain

Coyote infection chain


Ao usar esta ferramenta, o Coyote oculta seu carregador de estágio inicial, apresentando-o como um empacotador de atualização.


Malicious Squirrel installer contents

Malicious Squirrel installer contents


Node.js loader script


Quando o Squirrel é executado, ele na verdade roda um aplicativo NodeJS compilado com Electron. Este aplicativo executa código JavaScript ofuscado (preload.js), cuja função principal é copiar todos os executáveis encontrados em uma pasta local chamada "temp" para a pasta de captura dentro da pasta Vídeos do usuário. Em seguida, ele executa um aplicativo assinado a partir desse diretório.


NodeJS project structure


Vários executáveis foram identificados em uso, incluindo aqueles associados ao Chrome e OBS Studio. O malware bancário é carregado por meio de sideloading de DLL de uma dependência desses executáveis. Em todos os casos analisados pela nossa equipe, o sideloading da DLL ocorre na biblioteca libcef.dll.


Nim loader


Um elemento intrigante da cadeia de infecção é o uso de Nim, uma linguagem de programação relativamente nova, para carregar a etapa final. O objetivo do loader é desempacotar um executável .NET e executá-lo na memória usando o CLR. Isso implica que o loader pretende carregar o executável e executá-lo dentro de seu próprio processo, lembrando a forma como o Donut opera.


Unpacked .Net executable


É importante notar que o mesmo ponto de entrada, obs-browser-page.exe, é utilizado para cada reinicialização da máquina, servindo como um meio de persistência.


Coyote Trojan


Depois de todas essas etapas, o Trojan é executado com sucesso. Ele não implementa nenhuma obfuscação de código e usa apenas obfuscação de strings com criptografia AES.


Encrypted string table building


Para recuperar uma string específica, ele chama um método de descriptografia com o índice da string como parâmetro. O método de descriptografia funciona criando uma tabela de dados codificados em base64. Os primeiros 16 bytes de cada item de dados decodificado servem como IV (Vetor Inicial), enquanto o restante são os dados criptografados posteriormente usados na rotina de descriptografia AES.


Encrypted data structure


A chave é gerada aleatoriamente por cada executável, e o algoritmo de descriptografia AES usa as interfaces de criptografia .Net oficial. Com essa abordagem, para cada acesso a uma string que o Coyote precisa, ele pesquisa dentro da tabela e descriptografa cada string com um IV personalizado.


Persistence and goals


O Coyote mantém sua persistência usando scripts de logon do Windows. Primeiro ele verifica se a chave HKCU\Environment\UserInitMprLogonScript existe, se sim, insere o valor da chave como o caminho completo para o aplicativo assinado, neste caso, obs-browser-page.exe.


O objetivo do Trojan Coyote é consistente com o comportamento típico de Trojans bancários. Ele monitora todos os aplicativos abertos no sistema da vítima e espera que o aplicativo ou site bancário específico seja acessado.


Application monitoring routine


Em nossa análise, identificamos pelo menos 61 aplicativos relacionados, todos originários do Brasil. Isso sugere fortemente que o Coyote é de fato um Trojan bancário brasileiro, exibindo comportamento semelhante ao relatado anteriormente em postagem no blog Tetrade.


C2 communication and control


Quando qualquer aplicativo relacionado a bancos é executado e utilizado, o Trojan Coyote entra em contato com o servidor de comando e controle (C2) com essa informação. O C2 então responde com várias ações na máquina, desde registro de teclas até captura de telas. 


O Trojan estabelece comunicação com seu C2 usando canais SSL com um esquema de autenticação mútua. Isso implica que o Trojan possui um certificado do servidor controlado pelo atacante e o usa durante o processo de conexão.


O certificado é armazenado como um recurso em formato criptografado que é descriptografado pela biblioteca X509 do .Net. Uma vez que o malware verifica se a conexão está realmente com o atacante, ele começa a enviar as informações coletadas da máquina infectada e dos aplicativos bancários para o servidor. As informações transmitidas incluem:


  • Nome da máquina

  • GUID gerado aleatoriamente

  • Aplicativo bancário sendo usado

Com essas informações, o atacante envia um pacote de resposta que contém ações específicas. Para processar essas ações, o atacante transmite uma string com um delimitador aleatório. Cada posição da string é então convertida em uma lista, com a primeira entrada representando o tipo de comando.


Para determinar o comando desejado, ele verifica o comprimento da string no primeiro parâmetro, que é uma string aleatória. Em outras palavras, a única diferença entre os comandos é o tamanho da string.


Os comandos disponíveis mais importantes são:


Length

Description

12

Take a screenshot

14

Show an overlay window of a fake banking app

15

Show a Window that is in the foreground

17

Kill a process

18

Show a full-screen overlay

21

Shut down the machine

27

Block machine with a fake banking image displaying: “Working on updates…”

31

Enable a keylogger

32

Move mouse cursor to specific X, Y position


Além disso, o Trojan pode solicitar senhas específicas de cartões bancários e criar uma sobreposição de phishing para capturar credenciais do usuário.


Conclusão


O Coyote marca uma mudança significativa nos Trojans bancários brasileiros. Diferentemente de seus equivalentes, que geralmente usam linguagens mais antigas como Delphi, os desenvolvedores por trás do Coyote são habilidosos em tecnologias modernas como Node.js, .NET e técnicas avançadas de empacotamento.


A adição do Nim como loader adiciona complexidade ao design do Trojan. Essa evolução destaca a crescente sofisticação do cenário de ameaças e mostra como os hackers estão se adaptando e usando as linguagens e ferramentas mais recentes em seus ataques.


Nossos dados de telemetria revelam que até 90% das infecções se originaram do Brasil. Todos os produtos Kaspersky detectam a ameaça como HEUR:Trojan-Banker.MSIL.Coyote.gen.


Reference IoCs (indicators of compromise)


Host-based (MD5 hash)

03 eacccb664d517772a33255dff96020

071b6efd6d3ace1ad23ee0d6d3eead76

276f14d432601003b6bf0caa8cd82fec

5134e6925ff1397fdda0f3b48afec87b

bf9c9cc94056bcdae6e579e724e8dbbd


C2 domain list




Commentaires


Parceiros

Cupom 20% de desconto - CYBERSECBRA20 

bottom of page