blank

blank

Introdução ao problema

A chamada do script malicioso foi encontrada em diversos sites de e-commerce no Brasil, sendo a importação do seu código realizada geralmente através da página principal das lojas e, em alguns casos, apenas na fase do checkout de compras.

O período de atuação desta campanha ainda não foi identificado, porém, foi possível identificar diversas lojas expostas a esse script desde de julho de 2021. Apesar do período observado, constata-se que o domínio malicioso, que será demonstrado no decorrer deste artigo, está registrado desde dezembro de 2020.

Modus Operandi

O código tem como objetivo obter informações bancárias e pessoais do usuário durante a fase de checkout da compra em sites de e-commerce, coletando dados a partir das variáveis do formulário de compras e enviando-os em formato base64 para um servidor HTTP remoto, assim concluindo a sua fase de exfiltração.

blank
Trecho de chamada maliciosa se passando por componente legítimo de biblioteca.
blank
Requisição realizada ao script malicioso. A resposta contém um código JavaScript ofuscado.
blank
Resposta completa da requisição.

Após desofuscar o código malicioso, foi possível identificar todos os dados que seriam capturados pelo script. Neste caso, a partir do arquivo app.js, podemos facilmente identificar a coleta de dados como CPF, nome, data de nascimento, número do cartão de crédito, sua data de expiração e código de segurança.

blank
Dados de cartões de crédito a serem coletados a partir dos elementos da página infectada
blank
Envio de dados de cartão de crédito concatenados em base64 para o domínio de exfiltração.

Identificamos adicionalmente um segundo script, utilizado também para realizar a exfiltração de dados de cartão de crédito, porém, capturando de forma complementar, os demais dados de formulário a respeito da localização das suas vítimas, como endereço, CEP e afins.

blank
Trecho desofuscado do arquivo core-app.js, também localizado no domínio malicioso. Este script realiza a coleta adicional de dados de endereço das vítimas.

Todos os trechos de código utilizados para injetar o script malicioso tentam apresentar uma certa legitimidade, visando confundir desenvolvedores durante o processo de manutenção do código, desta forma, persistindo seus artefatos no ambiente pelo maior tempo possível.

blank
Script malicioso “gtm.js” inserido em trecho de código associado ao Google Analytics. Tal inserção poderá dificultar o entendimento sobre sua utilização em uma eventual manutenção de código.

Em um dos sites infectados, a injeção foi realizada no código JavaScript armazenado em sua CDN (Content Delivery Network) privada, a mesma estava hospedada na Amazon AWS.

blank
Script malicioso ofuscado e inserido na requisição de um arquivo presente na CDN privada.

Por fim, podemos considerar, por enquanto, que o objetivo da campanha visa somente a inserção de scripts maliciosos para realizar a coleta de dados pessoais e de compras, não se preocupando em expandir o acesso à rede interna das lojas infectadas ou de outros ativos.

Alvos

Até o momento desta postagem, não foi possível obter conclusões acerca de um alvo específico desta campanha, seja de exploração de vulnerabilidades ou tecnologias de CMS (Content Management System), como por exemplo, Magento, WordPress, Joomla, Drupal, Wix e demais variantes.

De acordo com os artefatos identificados, diversos sites utilizando variados tipos de engines de e-commerce constam como infectados, inicialmente, indicando que o grupo responsável pela campanha pode estar utilizando alguma base de vazamento de credenciais e/ou algum novo exploit que esteja associado às tecnologias das empresas que possuem páginas de e-commerce no Brasil.

Recomendações

Considerando que as lojas virtuais podem ter sido afetadas por uma vulnerabilidade ou vazamento de dados e, adicionalmente, ponderando o possível impacto direto aos seus clientes no que tange a Lei Geral de Proteção de Dados Pessoais (LGPD), separamos uma lista de recomendações de mitigação que podem ser implementadas na infraestrutura das páginas possivelmente afetadas.

1 – Manter os sistemas atualizados

Atualizar com regularidade os sistemas operacionais, serviços e frameworks utilizados para manter os sites de e-commerce.

2 – Revisão periódica de código

Os desenvolvedores ou mantenedores dos sites de e-commerce, devem realizar a revisão dos códigos a fim de identificar eventuais injeções de artefatos maliciosos, este processo deve ser realizado com certa frequência.

3 – Mitigação no lado do servidor

O CSP (Content Security Policy) é um mecanismo que o desenvolvedor pode utilizar para criar um controle de chamada de recursos de uma página, servindo como uma escrita de diretrizes para políticas de segurança [RFC 7762].

3.1 – Adicionando cabeçalho CSP no servidor Web:

Configure seu servidor web para adicionar o seguinte item no cabeçalho de chamada:

Content-Security-Policy: default-src ‘self’;

Caso você utilize recursos externos para carregar a página, como CDN (Content Delivery Network), adicione no final da linha, como no exemplo abaixo:

Content-Security-Policy: default-src ‘self’ cdn.loja-xpto.com.br;

3.2 – Adicionando campo CSP no código HTML da página:

Adicione a seguinte meta tag na página de checkout:

<meta http-equiv=”Content-Security-Policy” content=”default-src ‘self’ “>

Ou caso necessite adicionar outros recursos necessários para a página:

<meta http-equiv=”Content-Security-Policy” content=”default-src ‘self’ cdn.loja-xpto.com.br“>

4 – Mitigação no lado do cliente

Para impedir que usuários da sua rede sejam afetados durante o uso de alguma página de e-commerce infectada, realize o bloqueio dos domínios apontados na sessão de IoCs no firewall da rede.

Em casos de bloqueio de forma local, você pode adicionar os domínios da sessão de IoCs nos arquivos de resolução de nome do seu sistema operacional, apontando para o IP local.

IoCs

Domínios:

  • hubberstore[.]com
  • great-gumble[.]com

IP:

  • 198[.]57[.]151[.]221
  • 162[.]144[.]3[.]43

URLs:

  • hxxp[://]hubberstore[.]com/app[.]js
  • hxxp[://]hubberstore[.]com/apps[.]js
  • hxxp[://]hubberstore[.]com/core-app[.]js
  • hxxp[://]hubberstore[.]com/events[.]js
  • hxxp[://]hubberstore[.]com/gtm[.]js
  • hxxp[://]hubberstore[.]com/tes2[.]js
  • https[://]great-gumble[.]com/app.js

Hashes

Filename: app.js

  • MD5: bd86b6e28e3238ba4e04210cec4d6db3
  • SHA1: 772a86ea5847d51732fc01bbc5c3664ced0d08d7
  • SHA256: 50bf24d359b058027e8df0133499541f639fd6fc658b16a30442724310bacd97

Filename: apps.js

  • MD5: c3612432a518ff381e6d4b43237f6f63
  • SHA1: 437372da60dde631d44569f4b06b5154defdaaa9
  • SHA256: f4dd09311cf1dd0b88b329faa7589ef9e19d9a66cb367a7d70d86fb97b84c8ea

Filename: core-app.js

  • MD5: c8c3ef47ae15d529bb950099027273e2
  • SHA1: a4cfb5d38e1857e4bec09d0b5fa8630e6fa9ac94
  • SHA256: 07de637b5fef97d5191dda6a4fdee08ff2c366df0f1c6ece4c55791afca20344

Filename: events.js

  • MD5: 6454d3bd3748953b0a294f01e260e6ec
  • SHA1: b629c9bbb5a77616756437a3d851d1ca2356a869
  • SHA256: 429f82505a07a9bb33dd0dd7fa146b9bd112772186bfe1b11a7d3a40b7dcb159

Filename: gtm.js

  • MD5: 1806e068b8ddcc75db04490bd7df0fc5
  • SHA1: a812e475e1abcbc4eebd0e738faf88e4fd51b7a2
  • SHA256: b1427495895e1ccfdaf57895df91a124b837f08daea091dbfd5fef7740b55a39

Filename: tes2.js

  • MD5: 56dc3b9388fbb54a13f9dfc3698f72ad
  • SHA1: 4d28f7c1aad1d8237b96bac81b04677d353539ff
  • SHA256: 20fe990dfeb8fdb95c54f38571e5b60b7bed55c240f8ff2c56fcd3acfd98d8ac

Fonte: Equipe de Resposta à Incidentes e Threat Intelligence da Stone Pagamentos


Descubra mais sobre DCiber

Assine para receber os posts mais recentes por e-mail.