Coyote: Trojan brasileiro com técnicas extremamente sofisticadas
- 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
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
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
Via - Secure List
Commentaires