A ESET descobriu o banqueiro BackSwap usando o novo método de manipulação do navegador

Trojans bancários nos últimos anos têm perdido popularidade entre os cibercriminosos. Uma das razões é o desenvolvimento de tecnologias de proteção para fornecedores de antivírus e desenvolvedores de navegadores da web. É difícil realizar um ataque com a ajuda de um banqueiro, e é por isso que muitos criadores de vírus estão migrando para ferramentas mais simples e mais lucrativas: criptografadores, mineradores e software para roubar criptomoedas.

Muitos, mas não todos. Descobrimos uma nova família de banqueiros usando novas técnicas para manipular o navegador. Em vez de introduzir código de forma complexa no processo do navegador para monitorar sua atividade, o malware captura eventos do Windows no ciclo de espera de mensagens para verificar os valores dos objetos relacionados às operações bancárias.


Tendo descoberto o trabalho com serviços bancários on-line, o malware injeta JavaScript malicioso na página da web - por meio do console do desenvolvedor no navegador ou diretamente na barra de endereços. As operações são realizadas sem o conhecimento e a participação do usuário. À primeira vista, um esquema simples permite ignorar os mecanismos avançados de proteção de navegadores contra ataques complexos.

1. Introdução


Percebemos esse grupo cibernético pela primeira vez em janeiro de 2018, quando distribuiu desenvolvimentos iniciais - por exemplo, um programa para roubar criptomoedas alterando o endereço da carteira na área de transferência. O grupo esteve envolvido em criptomoeda por vários meses, após o qual lançou a primeira versão do banqueiro - a partir de 13 de março, os produtos antivírus da ESET o detectarão como Win32 / BackSwap.A.

No gráfico abaixo, é possível observar um salto acentuado nas detecções em comparação aos projetos anteriores, de acordo com nossas estatísticas. Os autores aprimoram o banqueiro e lançam novas versões quase todos os dias (com intervalos para o fim de semana).

Figura 1. Descubra o Win32 / BackSwap.A e projetos anteriores relacionados

Distribuição e execução


O Win32 / BackSwap.A é distribuído em emails de spam contendo um carregador JavaScript ofuscado da família Nemucod no anexo. Atualmente, esses boletins são direcionados a usuários da Polônia.

Muitas vezes, encontramos nas máquinas vítimas outro conhecido gerenciador de inicialização Win32 / TrojanDownloader.Nymaim, provavelmente se espalhando da mesma maneira. No momento, não sabemos se essa coincidência ou famílias estão relacionadas entre si.

A carga útil é entregue como uma versão modificada de um aplicativo legítimo, parcialmente reescrita por um componente malicioso. O aplicativo usado para modificação muda regularmente - observamos TPVCGateway, SQLMon, DbgView, WinRAR Uninstaller, 7Zip, OllyDbg e FileZilla Server nessa qualidade.

O aplicativo é modificado de forma a alternar para código malicioso após sua inicialização. Para fazer isso, os autores adicionam um ponteiro a um componente malicioso na tabela de funções _initterm() , o interior do tempo de execução da biblioteca C, que inicializa variáveis ​​globais e outras partes do programa antes de chamar a função main ().


Figura 2. Matriz de ponteiros _initterm de um aplicativo legítimo, no final do qual um ponteiro para o código do shell do banqueiro é adicionado

O método se parece com trojanização; a diferença é que, no nosso caso, o aplicativo original para de funcionar após a inicialização do malvari. O objetivo do método não é mascarar o usuário, mas neutralizar a detecção e a pesquisa. Os analistas acham mais difícil detectar esse banqueiro, pois muitas ferramentas de engenharia reversa, como o IDA Pro, mostram a função main () original como o início legítimo do código do aplicativo. Não é o fato de que o analista à primeira vista notará algo suspeito.

A carga útil é um objeto de código binário independente de posição com dados incorporados. As cadeias de caracteres são armazenadas em texto sem formatação, o que permite substituir rastreamentos sutis, pois todas as APIs necessárias do Windows são pesquisadas por hash. No início do trabalho, o malware fornece persistência, copiando-se para a pasta de inicialização, após o que muda para as funções do banqueiro.

Métodos tradicionais de injeção


Um banqueiro comum para roubar fundos da conta da vítima por meio da interface do banco on-line apresenta a si próprio ou um módulo especial no espaço de endereço do processo do navegador. Por várias razões, essa não é uma tarefa fácil. Primeiro de tudo, a injeção pode ser interceptada por um produto antiviral. Além disso, a profundidade de bits do módulo implementado deve coincidir com a profundidade de bits do navegador - o módulo de 32 bits não deve ser incorporado no processo de 64 bits e vice-versa. Como resultado, um ataque requer duas versões do mesmo módulo - 32/64 bits.

Após uma injeção bem-sucedida, o módulo bancário deve detectar as funções relacionadas ao navegador e interceptá-las. Ele precisa de funções responsáveis ​​pelo envio e recebimento de solicitações HTTP em formato de texto sem formatação antes da criptografia e após a descriptografia, respectivamente. A complexidade de encontrar recursos varia de navegador para navegador. No Mozilla Firefox, eles são exportados pela biblioteca nss3.dll e seus endereços são fáceis de encontrar pelos nomes conhecidos. O Google Chrome e outros navegadores baseados em Chromium ocultam esses recursos. Isso força os criadores de vírus a criar esquemas especiais destinados a uma versão específica do navegador e a mudar de tática quando novas versões são lançadas.

Se as funções forem encontradas e a interceptação for feita (e a solução antivírus não a detectou), o banqueiro poderá alterar o tráfego HTTP ou redirecionar a vítima para sites que simulam recursos bancários on-line legítimos, forjando certificados. Métodos similares são usados ​​pelos famosos Trojans bancários Dridex , Ursnif, Zbot, Trickbot, Qbot e muitos outros.

Novo método de manipulação do navegador


O Win32 / BackSwap.A implementa uma abordagem completamente diferente. O Bunker usa elementos do shell gráfico do Windows e imitação da entrada do usuário. O método pode parecer trivial, mas é eficaz porque permite resolver os problemas conhecidos da injeção tradicional. Primeiro, o malware não interage com o navegador no nível do processo. Graças a isso, não há necessidade de privilégios especiais e desvio de antivírus que protegem contra a injeção convencional. A segunda vantagem para os invasores é que o banqueiro não depende da arquitetura do navegador ou de sua versão; Um código funciona para todos.

O malware rastreia o URL da página visitada, configurando ganchos de eventos para um determinado intervalo de eventos relevantes disponíveis no loop de espera de mensagens do Windows, como EVENT_OBJECT_FOCUS, EVENT_OBJECT_SELECTION, EVENT_OBJECT_NAMECHANGE e vários outros. O manipulador procura valores de URL pesquisando objetos de sequência que começam com HTTPs obtidos chamando o método get_accValue partir da interface de eventos get_accValue .


Figura 3. Recepção usada para obter o URL da página atual no navegador. Esses endereços são obtidos verificando a substring [ht] tp [s] (destacada em vermelho)

O Win32 / BackSwap.A procura endereços bancários e cabeçalhos das janelas do navegador, indicando que o usuário está preparando uma transferência de dinheiro.


Figura 4. O banqueiro está procurando linhas de código relacionadas a bancos específicos. A primeira linha é o título da janela, a segunda é a parte da URL

Tendo encontrado o desejado, o banqueiro baixa o JavaScript malicioso correspondente a um banco específico e o injeta no navegador. A injeção é realizada de maneira simples, mas eficaz.

Em exemplos mais antigos, o Win32 / BackSwap.A insere um script mal-intencionado na área de transferência e simula um pressionamento de tecla para abrir o console do desenvolvedor (CTRL + SHIFT + J no Google Chrome, CTRL + SHIFT + K no Mozilla Firefox) e cole o conteúdo do buffer (CTRL + V) e pressiona ENTER para executar o conteúdo do console. O malware repete a combinação de teclas para fechar o console. No momento, a janela do navegador fica invisível - um usuário comum provavelmente pensará que o navegador congela por alguns segundos.

Em novas versões, o circuito é aprimorado. Em vez de interagir com o console do desenvolvedor, um script mal-intencionado é executado diretamente da barra de endereços por meio de um protocolo JavaScript especial , uma função pouco utilizada que a maioria dos navegadores suporta. O banqueiro imita pressionar CTRL + L para selecionar a barra de endereço, DELETE para limpar o campo, "insere" os caracteres em "javascript" por meio de uma chamada para SendMessageA em um loop e insere um script malicioso usando a combinação CTRL + V. O script é executado após "pressionar" ENTER. No final do processo, a barra de endereços é limpa para remover vestígios de comprometimento.

Na Figura 5, você pode ver parte do código injetado no console. Primeiro, o Win32 / BackSwap.A define um navegador verificando o nome da classe da janela selecionada (marcada em azul). JavaScript malicioso é copiado para o buffer (marcado em vermelho). Em seguida, o valor da transparência da janela do navegador é alterado para "3", o que a torna invisível (marcada em roxo). A parte relacionada à função ToggleBrowserConsole , que liga e desliga o console, é ToggleBrowserConsole .


Figura 5. Injeção de script

O Win32 / BackSwap.A suporta ataques ao Google Chrome e Mozilla Firefox, o suporte ao Internet Explorer foi adicionado nas versões recentes. O método é adequado para a maioria dos navegadores com um console do desenvolvedor ou a capacidade de executar o código JavaScript na barra de endereços (funções padrão do navegador).

Os três navegadores comprometidos possuem um interessante recurso de segurança projetado para impedir ataques Self-XSS : quando um usuário tenta colar texto copiado começando com "javascript:" na barra de endereço, o prefixo do protocolo é excluído e deve ser inserido manualmente novamente para executar o script. O Win32 / BackSwap.A ignora esse obstáculo, simulando a entrada de caracteres de um prefixo na barra de endereço antes de colar o script malicioso copiado.

Outra ferramenta de segurança é implementada no Mozilla Firefox. O navegador proíbe copiar scripts para o console por padrão; em vez disso, exibe uma notificação de possíveis riscos e força o usuário a inserir manualmente a frase “permitir colar” para permitir a inserção de caracteres copiados. Para ignorar essa medida de segurança, o Win32 / BackSwap.A fornece a execução de um comando shell (Figura 6), que faz alterações no prefs.js configuração prefs.js e remove essa proteção.


Figura 6. Um comando shell que remove a proteção da inserção de um script no console do Firefox

Código malicioso JavaScript


O Win32 / BackSwap.A usa um script especial para cada um dos bancos de destino. Como todos os bancos têm sites diferentes, o código é diferente e possui variáveis ​​diferentes. Os scripts são injetados nas páginas nas quais, segundo o banqueiro, é realizada a preparação da transferência de dinheiro. Os scripts implementados substituem secretamente o número da conta do destinatário por outro e, quando a vítima envia a transferência, o dinheiro vai para a conta do atacante. As contramedidas contra transferências não autorizadas (autenticação de dois fatores) são impotentes, pois o titular da conta confirma o envio de fundos.

Os autores do Win32 / BackSwap.A escreveram scripts para trabalhar com cinco bancos poloneses: PKO Bank Polski, Bank Zachodni WBK SA, mBank, ING e Pekao. Os operadores removem alguns bancos da lista de objetivos - na maioria das novas versões, restam três bancos: PKO BP, mBank e ING. Nas versões mais antigas, os atacantes enviam o número da conta do destinatário dos servidores da C&C nos sites invadidos do WordPress. Nas novas versões, os números são armazenados nos próprios scripts maliciosos. As contas geralmente mudam - um novo número de conta é usado em quase todas as novas campanhas.

Os banqueiros estão interessados ​​em transferências em um determinado intervalo - geralmente de 10.000 a 20.000 zlotys poloneses (168.000 a 337.000 rublos). O script não apenas substitui o número da conta do destinatário, mas também substitui o campo de entrada por um falso - o usuário vê o número correto e não suspeita de nada.


Figura 7. Parte do código JavaScript malicioso. Os sites marcados em vermelho são responsáveis ​​por verificar o valor da transferência e substituir o número da conta do destinatário

Conclusão


O Win32 / BackSwap.A prova que o confronto entre o setor de segurança e os criadores de vírus nem sempre exige uma nova técnica e tática sofisticada. Os navegadores aprimoram a proteção contra a injeção de código; portanto, os autores do malware mudaram para outros métodos de ataque, e apenas um é implementado no Win32 / BackSwap.A.

Os produtos antivírus da ESET detectam uma ameaça como o Win32 / BackSwap.A.

Os especialistas da ESET informaram os desenvolvedores de navegadores comprometidos sobre um novo método de ataque.

IoCs


9BC4C1D5403DDD90712CE87225490A21D1EDC516 JS/Nemucod.EAN trojan
CF5A74C268661501156663F74CD5E20603B0F261 Win32/BackSwap.A trojan
6251F9AD0E5F551AC4A6B918EF366E86C4CCFDC4 Win32/BackSwap.A trojan
2DC9760A7C6E9D261C73EFB7B2604840734BC058 Win32/BackSwap.A trojan
A68901D0D8C1247FF280F9453E3AE45687C57566 Win32/BackSwap.A trojan (JavaScript)

Source: https://habr.com/ru/post/pt413307/


All Articles