Quatro sniffers javascript que prendem você em lojas on-line



Quase todos nós usamos os serviços de lojas on-line, o que significa que mais cedo ou mais tarde ele corre o risco de se tornar vítima de sniffers JavaScript - um código especial que os cibercriminosos injetam no site para roubar informações de cartões bancários, endereços, logins e senhas de usuários.

Quase 400.000 usuários do site e aplicativo móvel da companhia aérea British Airways, bem como visitantes do site britânico da gigante esportiva FILA e do distribuidor americano de ingressos Ticketmaster, já foram afetados por farejadores.

Viktor Okorokov, analista do Threat Intelligence Group-IB, fala sobre como os sniffers são incorporados no código do site e roubam informações de cobrança, bem como quais CRMs eles atacam.



A Ameaça Fantasma


Descobriu-se que por muito tempo os farejadores de JS permaneceram fora da vista dos analistas de antivírus, e os bancos e sistemas de pagamento não viram uma ameaça séria neles. E completamente em vão. Os especialistas do Grupo-IB analisaram 2.440 lojas on-line infectadas cujos visitantes - cerca de 1,5 milhão de pessoas por dia - corriam risco de se comprometer. Entre as vítimas estão não apenas usuários, mas também lojas online, sistemas de pagamento e bancos que emitiram cartões comprometidos.

O relatório do Group-IB foi o primeiro estudo do mercado darknet para sniffers, sua infraestrutura e formas de monetizar, trazendo aos seus criadores milhões de dólares. Identificamos 38 famílias de farejadores, das quais apenas 12 eram conhecidas anteriormente pelos pesquisadores.

Vamos nos aprofundar nas quatro famílias de farejadores estudadas durante o estudo.

Família ReactGet


Os sniffers da família ReactGet são usados ​​para roubar dados de cartões bancários em sites de lojas online. Um farejador pode trabalhar com um grande número de sistemas de pagamento diferentes usados ​​no site: um valor de parâmetro corresponde a um sistema de pagamento, e versões individuais do farejador detectado podem ser usadas para roubar credenciais, bem como para roubar dados de cartão bancário de formas de pagamento de vários sistemas de pagamento de uma só vez, como o chamado sniffer universal. Verificou-se que, em alguns casos, os invasores realizam ataques de phishing contra administradores de lojas on-line, a fim de obter acesso ao painel administrativo do site.

A campanha usando essa família de sniffers começou em maio de 2017, sites sob o controle do CMS e as plataformas Magento, Bigcommerce, Shopify foram atacadas.

Como o ReactGet está incorporado no código da loja online


Além da implementação “clássica” de um script por referência, a família de sniffers ReactGet usa uma técnica especial: usando o código JavaScript, ele verifica se o endereço atual em que o usuário está localizado atende a certos critérios. O código malicioso será iniciado somente se o URL atual contiver o checkout de substring ou o checkout posterior , uma página / , saída / uma página , caixa / uma , ckout / uma . Assim, o código sniffer será executado exatamente no momento em que o usuário pagar pelas compras e inserir as informações de pagamento no formulário do site.


Este farejador usa uma técnica não padrão. O pagamento e os dados pessoais da vítima são coletados juntos, codificados usando base64 e a sequência resultante é usada como parâmetro para enviar uma solicitação ao site do invasor. Na maioria das vezes, o caminho para o portão simula um arquivo JavaScript, por exemplo, resp.js , data.js e assim por diante, mas também são usados ​​links para arquivos de imagem, GIFs e JPGs . A peculiaridade é que o sniffer cria um objeto de imagem com um tamanho de 1 por 1 pixel e usa o link obtido anteriormente como um parâmetro src da imagem. Ou seja, para o usuário, essa solicitação no tráfego parecerá uma solicitação de imagem regular. Uma técnica semelhante foi usada nos farejadores da família ImageID. Além disso, a técnica de usar uma imagem de 1 por 1 pixel é usada em muitos scripts de análise online legítimos, o que também pode induzir o usuário em erro.


Análise de versão


Uma análise dos domínios ativos usados ​​pelos operadores de farejadores ReactGet revelou muitas versões diferentes da família de farejadores. As versões diferem na presença ou ausência de ofuscação e, além disso, cada sniffer é projetado para um sistema de pagamento específico que processa pagamentos com cartão bancário em lojas online. Depois de classificar o valor do parâmetro correspondente ao número da versão, os especialistas do Grupo-IB obtiveram uma lista completa das variações disponíveis do sniffer e, pelos nomes dos campos de formulário que cada sniffer procura no código da página, determinaram os sistemas de pagamento aos quais o sniffer se destina.

Lista de farejadores e seus sistemas de pagamento correspondentes
URL do sniffer
Sistema de pagamento
reactjsapi.com/react.jsAuthorize.Net
ajaxstatic.com/api.js?v=2.1.1Cardsards
ajaxstatic.com/api.js?v=2.1.2Authorize.Net
ajaxstatic.com/api.js?v=2.1.3Authorize.Net
ajaxstatic.com/api.js?v=2.1.4eWAY Rapid
ajaxstatic.com/api.js?v=2.1.5Authorize.Net
ajaxstatic.com/api.js?v=2.1.6Adyen
ajaxstatic.com/api.js?v=2.1.7USAePay
ajaxstatic.com/api.js?v=2.1.9Authorize.Net
apitstatus.com/api.js?v=2.1.1USAePay
apitstatus.com/api.js?v=2.1.2Authorize.Net
apitstatus.com/api.js?v=2.1.3Moneris
apitstatus.com/api.js?v=2.1.5USAePay
apitstatus.com/api.js?v=2.1.6Paypal
apitstatus.com/api.js?v=2.1.7Pagamento prudente
apitstatus.com/api.js?v=2.1.8Verisign
apitstatus.com/api.js?v=2.1.9Paypal
apitstatus.com/api.js?v=2.3.0Stripe
apitstatus.com/api.js?v=3.0.2Realex
apitstatus.com/api.js?v=3.0.3Paypal
apitstatus.com/api.js?v=3.0.4Linkpoint
apitstatus.com/api.js?v=3.0.5Paypal
apitstatus.com/api.js?v=3.0.7Paypal
apitstatus.com/api.js?v=3.0.8Datacash
apitstatus.com/api.js?v=3.0.9Paypal
asianfoodgracer.com/footer.jsAuthorize.Net
billgetstatus.com/api.js?v=1.2Authorize.Net
billgetstatus.com/api.js?v=1.3Authorize.Net
billgetstatus.com/api.js?v=1.4Authorize.Net
billgetstatus.com/api.js?v=1.5Verisign
billgetstatus.com/api.js?v=1.6Authorize.Net
billgetstatus.com/api.js?v=1.7Moneris
billgetstatus.com/api.js?v=1.8Pagamento prudente
billgetstatus.com/api.js?v=2.0USAePay
billgetstatus.com/react.jsAuthorize.Net
cloudodesc.com/gtm.js?v=1.2Authorize.Net
cloudodesc.com/gtm.js?v=1.3ANZ eGate
cloudodesc.com/gtm.js?v=2.3Authorize.Net
cloudodesc.com/gtm.js?v=2.4Moneris
cloudodesc.com/gtm.js?v=2.6
Pagamento prudente
cloudodesc.com/gtm.js?v=2.7Pagamento prudente
cloudodesc.com/gtm.js?v=2.8Chase Paymentech
cloudodesc.com/gtm.js?v=2.9Authorize.Net
cloudodesc.com/gtm.js?v=2.91Adyen
cloudodesc.com/gtm.js?v=2.92Psigate
cloudodesc.com/gtm.js?v=2.93Fonte cibernética
cloudodesc.com/gtm.js?v=2.95ANZ eGate
cloudodesc.com/gtm.js?v=2.97Realex
geisseie.com/gs.jsUSAePay
gtmproc.com/age.jsAuthorize.Net
gtmproc.com/gtm.js?v=1.2Authorize.Net
gtmproc.com/gtm.js?v=1.3ANZ eGate
gtmproc.com/gtm.js?v=1.5Paypal
gtmproc.com/gtm.js?v=1.6Paypal
gtmproc.com/gtm.js?v=1.7Realex
livecheckpay.com/api.js?v=2.0Pagamento prudente
livecheckpay.com/api.js?v=2.1Paypal
livecheckpay.com/api.js?v=2.2Verisign
livecheckpay.com/api.js?v=2.3Authorize.Net
livecheckpay.com/api.js?v=2.4Verisign
livecheckpay.com/react.jsAuthorize.Net
livegetpay.com/pay.js?v=2.1.2ANZ eGate
livegetpay.com/pay.js?v=2.1.3Paypal
livegetpay.com/pay.js?v=2.1.5Fonte cibernética
livegetpay.com/pay.js?v=2.1.7Authorize.Net
livegetpay.com/pay.js?v=2.1.8Pagamento prudente
livegetpay.com/pay.js?v=2.1.9Realex
livegetpay.com/pay.js?v=2.2.0Fonte cibernética
livegetpay.com/pay.js?v=2.2.1Paypal
livegetpay.com/pay.js?v=2.2.2Paypal
livegetpay.com/pay.js?v=2.2.3Paypal
livegetpay.com/pay.js?v=2.2.4Verisign
livegetpay.com/pay.js?v=2.2.5eWAY Rapid
livegetpay.com/pay.js?v=2.2.7Pagamento prudente
livegetpay.com/pay.js?v=2.2.8Pagamento prudente
livegetpay.com/pay.js?v=2.2.9Verisign
livegetpay.com/pay.js?v=2.3.0Authorize.Net
livegetpay.com/pay.js?v=2.3.1Authorize.Net
livegetpay.com/pay.js?v=2.3.2Primeiro gateway global de dados
livegetpay.com/pay.js?v=2.3.3Authorize.Net
livegetpay.com/pay.js?v=2.3.4Authorize.Net
livegetpay.com/pay.js?v=2.3.5Moneris
livegetpay.com/pay.js?v=2.3.6Authorize.Net
livegetpay.com/pay.js?v=2.3.8Paypal
livegetpay.com/pay.js?v=2.4.0Verisign
maxstatics.com/site.jsUSAePay
mediapack.info/track.js?d=funlove.comUSAePay
mediapack.info/track.js?d=qbedding.comAuthorize.Net
mediapack.info/track.js?d=vseyewear.comVerisign
mxcounter.com/c.js?v=1.2Paypal
mxcounter.com/c.js?v=1.3Authorize.Net
mxcounter.com/c.js?v=1.4Stripe
mxcounter.com/c.js?v=1.6Authorize.Net
mxcounter.com/c.js?v=1.7eWAY Rapid
mxcounter.com/c.js?v=1.8Pagamento prudente
mxcounter.com/c.js?v=2.0Authorize.Net
mxcounter.com/c.js?v=2.1Braintree
mxcounter.com/c.js?v=2.10Braintree
mxcounter.com/c.js?v=2.2Paypal
mxcounter.com/c.js?v=2.3Pagamento prudente
mxcounter.com/c.js?v=2.31Pagamento prudente
mxcounter.com/c.js?v=2.32Authorize.Net
mxcounter.com/c.js?v=2.33Paypal
mxcounter.com/c.js?v=2.34Authorize.Net
mxcounter.com/c.js?v=2.35Verisign
mxcounter.com/click.js?v=1.2Paypal
mxcounter.com/click.js?v=1.3Authorize.Net
mxcounter.com/click.js?v=1.4Stripe
mxcounter.com/click.js?v=1.6Authorize.Net
mxcounter.com/click.js?v=1.7eWAY Rapid
mxcounter.com/click.js?v=1.8Pagamento prudente
mxcounter.com/click.js?v=2.0Authorize.Net
mxcounter.com/click.js?v=2.1Braintree
mxcounter.com/click.js?v=2.2Paypal
mxcounter.com/click.js?v=2.3Pagamento prudente
mxcounter.com/click.js?v=2.31Pagamento prudente
mxcounter.com/click.js?v=2.32Authorize.Net
mxcounter.com/click.js?v=2.33Paypal
mxcounter.com/click.js?v=2.34Authorize.Net
mxcounter.com/click.js?v=2.35Verisign
mxcounter.com/cnt.jsAuthorize.Net
mxcounter.com/j.jsAuthorize.Net
newrelicnet.com/api.js?v=1.2Authorize.Net
newrelicnet.com/api.js?v=1.4Authorize.Net
newrelicnet.com/api.js?v=1.8Pagamento prudente
newrelicnet.com/api.js?v=4.5Pagamento prudente
newrelicnet.com/api.js?v=4.6Westpac payway
nr-public.com/api.js?v=2.0Payfort
nr-public.com/api.js?v=2.1Paypal
nr-public.com/api.js?v=2.2Authorize.Net
nr-public.com/api.js?v=2.3Stripe
nr-public.com/api.js?v=2.4Primeiro gateway global de dados
nr-public.com/api.js?v=2.5Psigate
nr-public.com/api.js?v=2.6Authorize.Net
nr-public.com/api.js?v=2.7Authorize.Net
nr-public.com/api.js?v=2.8Moneris
nr-public.com/api.js?v=2.9Authorize.Net
nr-public.com/api.js?v=3.1Pagamento prudente
nr-public.com/api.js?v=3.2Verisign
nr-public.com/api.js?v=3.3Moneris
nr-public.com/api.js?v=3.5Paypal
nr-public.com/api.js?v=3.6Linkpoint
nr-public.com/api.js?v=3.7Westpac payway
nr-public.com/api.js?v=3.8Authorize.Net
nr-public.com/api.js?v=4.0Moneris
nr-public.com/api.js?v=4.0.2Paypal
nr-public.com/api.js?v=4.0.3Adyen
nr-public.com/api.js?v=4.0.4Paypal
nr-public.com/api.js?v=4.0.5Authorize.Net
nr-public.com/api.js?v=4.0.6USAePay
nr-public.com/api.js?v=4.0.7EBizCharge
nr-public.com/api.js?v=4.0.8Authorize.Net
nr-public.com/api.js?v=4.0.9Verisign
nr-public.com/api.js?v=4.1.2Verisign
ordercheckpays.com/api.js?v=2.11Authorize.Net
ordercheckpays.com/api.js?v=2.12Paypal
ordercheckpays.com/api.js?v=2.13Moneris
ordercheckpays.com/api.js?v=2.14Authorize.Net
ordercheckpays.com/api.js?v=2.15Paypal
ordercheckpays.com/api.js?v=2.16Paypal
ordercheckpays.com/api.js?v=2.17Westpac payway
ordercheckpays.com/api.js?v=2.18Authorize.Net
ordercheckpays.com/api.js?v=2.19Authorize.Net
ordercheckpays.com/api.js?v=2.21Pagamento prudente
ordercheckpays.com/api.js?v=2.22Verisign
ordercheckpays.com/api.js?v=2.23Authorize.Net
ordercheckpays.com/api.js?v=2.24Paypal
ordercheckpays.com/api.js?v=2.25Payfort
ordercheckpays.com/api.js?v=2.29Fonte cibernética
ordercheckpays.com/api.js?v=2.4PayPal Payflow Pro
ordercheckpays.com/api.js?v=2.7Authorize.Net
ordercheckpays.com/api.js?v=2.8Authorize.Net
ordercheckpays.com/api.js?v=2.9Verisign
ordercheckpays.com/api.js?v=3.1Authorize.Net
ordercheckpays.com/api.js?v=3.2Authorize.Net
ordercheckpays.com/api.js?v=3.3Pagamento prudente
ordercheckpays.com/api.js?v=3.4Authorize.Net
ordercheckpays.com/api.js?v=3.5Stripe
ordercheckpays.com/api.js?v=3.6Authorize.Net
ordercheckpays.com/api.js?v=3.7Authorize.Net
ordercheckpays.com/api.js?v=3.8Verisign
ordercheckpays.com/api.js?v=3.9Paypal
ordercheckpays.com/api.js?v=4.0Authorize.Net
ordercheckpays.com/api.js?v=4.1Authorize.Net
ordercheckpays.com/api.js?v=4.2Pagamento prudente
ordercheckpays.com/api.js?v=4.3Authorize.Net
reactjsapi.com/api.js?v=0.1.0Authorize.Net
reactjsapi.com/api.js?v=0.1.1Paypal
reactjsapi.com/api.js?v=4.1.2Flint
reactjsapi.com/api.js?v=4.1.4Paypal
reactjsapi.com/api.js?v=4.1.5Pagamento prudente
reactjsapi.com/api.js?v=4.1.51Verisign
reactjsapi.com/api.js?v=4.1.6Authorize.Net
reactjsapi.com/api.js?v=4.1.7Authorize.Net
reactjsapi.com/api.js?v=4.1.8Stripe
reactjsapi.com/api.js?v=4.1.9Zebra gorda
reactjsapi.com/api.js?v=4.2.0Pagamento prudente
reactjsapi.com/api.js?v=4.2.1Authorize.Net
reactjsapi.com/api.js?v=4.2.2Primeiro gateway global de dados
reactjsapi.com/api.js?v=4.2.3Authorize.Net
reactjsapi.com/api.js?v=4.2.4eWAY Rapid
reactjsapi.com/api.js?v=4.2.5Adyen
reactjsapi.com/api.js?v=4.2.7Paypal
reactjsapi.com/api.js?v=4.2.8QuickBooks Merchant Services
reactjsapi.com/api.js?v=4.2.9Verisign
reactjsapi.com/api.js?v=4.2.91Pagamento prudente
reactjsapi.com/api.js?v=4.2.92Verisign
reactjsapi.com/api.js?v=4.2.94Authorize.Net
reactjsapi.com/api.js?v=4.3.97Authorize.Net
reactjsapi.com/api.js?v=4.5Pagamento prudente
reactjsapi.com/react.jsAuthorize.Net
sydneysalonsupplies.com/gtm.jseWAY Rapid
tagsmediaget.com/react.jsAuthorize.Net
tagstracking.com/tag.js?v=2.1.2ANZ eGate
tagstracking.com/tag.js?v=2.1.3Paypal
tagstracking.com/tag.js?v=2.1.5Fonte cibernética
tagstracking.com/tag.js?v=2.1.7Authorize.Net
tagstracking.com/tag.js?v=2.1.8Pagamento prudente
tagstracking.com/tag.js?v=2.1.9Realex
tagstracking.com/tag.js?v=2.2.0Fonte cibernética
tagstracking.com/tag.js?v=2.2.1Paypal
tagstracking.com/tag.js?v=2.2.2Paypal
tagstracking.com/tag.js?v=2.2.3Paypal
tagstracking.com/tag.js?v=2.2.4Verisign
tagstracking.com/tag.js?v=2.2.5eWAY Rapid
tagstracking.com/tag.js?v=2.2.7Pagamento prudente
tagstracking.com/tag.js?v=2.2.8Pagamento prudente
tagstracking.com/tag.js?v=2.2.9
Verisign
tagstracking.com/tag.js?v=2.3.0Authorize.Net
tagstracking.com/tag.js?v=2.3.1Authorize.Net
tagstracking.com/tag.js?v=2.3.2Primeiro gateway global de dados
tagstracking.com/tag.js?v=2.3.3Authorize.Net
tagstracking.com/tag.js?v=2.3.4Authorize.Net
tagstracking.com/tag.js?v=2.3.5Moneris
tagstracking.com/tag.js?v=2.3.6Authorize.Net
tagstracking.com/tag.js?v=2.3.8Paypal


Detector de senhas


Uma das vantagens dos farejadores de JavaScript que trabalham no lado do cliente do site é a sua versatilidade: o código malicioso incorporado no site pode roubar qualquer tipo de dados, sejam dados de pagamento ou nome de usuário e senha de uma conta de usuário. Os especialistas do grupo-IB descobriram uma amostra de um sniffer pertencente à família ReactGet, projetado para roubar endereços de email e senhas dos usuários do site.


Interseção com ImageID Sniffer


Uma análise de uma das lojas infectadas revelou que seu site foi infectado duas vezes: além do código malicioso da família de farejadores ReactGet, um código de farejador da família ImageID foi detectado. Essa interseção pode indicar que os operadores por trás do uso de ambos os farejadores usam técnicas semelhantes para injetar código malicioso.


Farejador universal


Uma análise de um dos nomes de domínio relacionados à infraestrutura do sniffer ReactGet revelou que o mesmo usuário havia registrado outros três nomes de domínio. Esses três domínios simulavam domínios de sites da vida real e eram usados ​​anteriormente para hospedar sniffers. Ao analisar o código de três sites legítimos, um sniffer desconhecido foi descoberto e outras análises mostraram que esta é uma versão aprimorada do sniffer ReactGet. Todas as versões rastreadas anteriormente dos sniffers dessa família visavam um sistema de pagamento único, ou seja, para cada sistema de pagamento era necessária uma versão especial do sniffer. No entanto, nesse caso, uma versão universal do sniffer foi descoberta, capaz de roubar informações de formulários relacionados a 15 sistemas de pagamento diferentes e módulos de sites de comércio eletrônico para pagamentos online.

Assim, no início do trabalho, o farejador procurou os campos base do formulário que continham as informações pessoais da vítima: nome completo, endereço físico, número de telefone.


Em seguida, o farejador procurou mais de 15 prefixos diferentes correspondentes a diferentes sistemas e módulos de pagamento para pagamentos on-line.


Além disso, os dados pessoais e as informações de pagamento da vítima foram coletados e enviados para o site controlado pelo atacante: nesse caso específico, foram encontradas duas versões do sniffer universal ReactGet, localizadas em dois sites invadidos. No entanto, ambas as versões enviaram os dados roubados para o mesmo site hackeado zoobashop.com .


Uma análise dos prefixos usados ​​pelo farejador para procurar os campos que contêm as informações de pagamento da vítima nos permitiu determinar que esse padrão do farejador se destinava aos seguintes sistemas de pagamento:

  • Authorize.Net
  • Verisign
  • Primeiros dados
  • USAePay
  • Stripe
  • Paypal
  • ANZ eGate
  • Braintree
  • DataCash (MasterCard)
  • Realex pagamentos
  • Psigate
  • Sistemas de pagamento Heartland

Quais ferramentas são usadas para roubar informações de cobrança?


A primeira ferramenta descoberta durante a análise da infraestrutura do invasor é usada para ofuscar scripts maliciosos responsáveis ​​por roubar cartões bancários. Um script bash foi descoberto em um dos hosts atacantes usando a CLI javascript-obfuscator para automatizar a ofuscação do código sniffer.


A segunda ferramenta detectada foi projetada para gerar código responsável pelo carregamento do sniffer principal. Essa ferramenta gera código JavaScript que verifica se o usuário está na página de pagamento, pesquisando no endereço atual do usuário as caixas , carrinho e assim por diante. Se o resultado for positivo, o código carrega o sniffer principal do servidor do invasor. Para ocultar atividades maliciosas, todas as linhas, incluindo as linhas de teste para determinar a página de pagamento, bem como um link para o sniffer, são codificadas usando base64 .


Ataques de phishing


Ao analisar a infraestrutura de rede dos atacantes, verificou-se que muitas vezes um grupo criminoso usa phishing para obter acesso ao painel administrativo da loja on-line de destino. Os invasores registram um domínio visualmente semelhante ao domínio de uma loja e, em seguida, implantam um formulário de login falso no painel de administração do Magento. Se for bem-sucedido, os invasores terão acesso ao painel de administração do CMS Magento, que permite editar os componentes do site e implementar um sniffer para roubar informações do cartão de crédito.


A infraestrutura
Domínio
Data da descoberta / aparência
mediapack.info05/04/2017
adsgetapi.com15/06/2017
simcounter.com14/08/2017
mageanalytics.com22/12/2017
maxstatics.com16/01/2018
reactjsapi.com19/01/2018
mxcounter.com02/02/2018
apitstatus.com01/03/2018
orderracker.com20/04/2018
tagstracking.com25/06/2018
adsapigate.com12/07/2018
trust-tracker.com15/07/2018
fbstatspartner.com02/10/2018
billgetstatus.com12/12/2018
aldenmlilhouse.com20/10/2018
balletbeautlful.com20/10/2018
bargalnjunkie.com20/10/2018
payselector.com21.10.2018
tagsmediaget.com11/11/2018
hs-payments.com16/11/2018
ordercheckpays.com19/11/2018
geisseie.com24/11/2018
gtmproc.com29/11/2018
livegetpay.com18/12/2018
sydneysalonsupplies.com18/12/2018
newrelicnet.com
19/12/2018
nr-public.com01/03/2019
cloudodesc.com01/04/2019
ajaxstatic.com11/01/2019
livecheckpay.com21/01/2019
asianfoodgracer.com25/01/2019


Família G-analytics


Essa família de sniffers é usada para roubar cartões de clientes de lojas online. O primeiro nome de domínio usado pelo grupo foi registrado em abril de 2016, o que pode indicar o início da atividade do grupo em meados de 2016.

Na campanha atual, o grupo usa nomes de domínio que imitam serviços da vida real, como Google Analytics e jQuery, mascarando atividades de sniffer com scripts legítimos e semelhantes a nomes de domínio legítimos. O ataque foi executado em sites executando o CMS Magento.

Como o G-Analytics é incorporado no código da loja online


Uma característica distintiva dessa família é o uso de vários métodos de roubo das informações de pagamento do usuário. Além da implementação clássica do código JavaScript na parte do cliente do site, o grupo criminoso também usou a técnica de incorporação de código na parte do servidor do site, ou seja, scripts PHP que processam a entrada do usuário. Essa técnica é perigosa, pois dificulta a pesquisa de códigos maliciosos por pesquisadores de terceiros. Os especialistas do grupo IB descobriram uma versão de um sniffer incorporado ao código PHP do site, usando o domínio dittm.org como porta.


Uma versão anterior do sniffer também foi descoberta, que usa o mesmo domínio dittm.org para coletar dados roubados, mas essa versão já foi projetada para instalação no lado do cliente da loja online.


Mais tarde, o grupo mudou de tática e começou a prestar mais atenção à ocultação de atividades e disfarces maliciosos.

No início de 2017, o grupo começou a usar o domínio jquery-js.com , que se disfarça de CDN para jQuery: quando acessa o site de intrusos, o usuário é redirecionado para o site legítimo jquery.com .

E em meados de 2018, o grupo adotou o nome de domínio g-analytics.com e começou a mascarar as atividades do sniffer no serviço legítimo do Google Analytics.



Análise de versão


Durante a análise dos domínios usados ​​para armazenar o código sniffer, verificou-se que o site possui um grande número de versões que diferem pela presença de ofuscação, bem como a presença ou ausência de código inacessível adicionado ao arquivo para distrair a atenção e ocultar o código malicioso.

No total, seis versões dos sniffers foram identificadas no jquery-js.com . Esses sniffers enviam os dados roubados para o endereço localizado no mesmo site que o sniffer: hxxps: // jquery-js [.] Com / latest / jquery.min.js :

  • hxxps: // jquery-js [.] com / jquery.min.js
  • hxxps: // jquery-js [.] com / jquery.2.2.4.min.js
  • hxxps: // jquery-js [.] com / jquery.1.8.3.min.js
  • hxxps: // jquery-js [.] com / jquery.1.6.4.min.js
  • hxxps: // jquery-js [.] com / jquery.1.4.4.min.js
  • hxxps: // jquery-js [.] com / jquery.1.12.4.min.js

O domínio g-analytics.com , usado pelo grupo em ataques desde meados de 2018, serve como repositório para um número maior de farejadores. Um total de 16 versões diferentes do sniffer foram descobertas. Nesse caso, a porta para enviar os dados roubados foi disfarçada como um link para uma imagem GIF : hxxp: // g-analytics [.] Com / __ utm.gif? V = 1 & _v = j68 & a = 98811130 & t = pageview & _s = 1 & sd = 24 bits & sr = 2560x1440 & vp = 2145x371 & je = 0 & _u = AACAAEAB ~ & jid = 1841704724 & gjid = 877686936 & cid
= 1283183910.1527732071 :

  • hxxps: // g-analytics [.] com / libs / 1.0.1 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.10 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.11 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.12 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.13 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.14 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.15 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.16 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.3 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.4 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.5 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.6 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.7 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.8 / analytics.js
  • hxxps: // g-analytics [.] com / libs / 1.0.9 / analytics.js
  • hxxps: // g-analytics [.] com / libs / analytics.js



, , . , , , google-analytics.cm , cardz.vc . cardz.vc Cardsurfs (Flysurfs), AlphaBay , .


analytic.is , , , , Group-IB , Cookie-, , , . iozoz.com , , 2016 . , . email- kts241@gmail.com , cardz.su cardz.vc , Cardsurfs.

, , G-Analytics Cardsurfs , , .

A infraestrutura

/
iozoz.com08.04.2016
dittm.org10.09.2016
jquery-js.com02.01.2017
g-analytics.com31.05.2018
google-analytics.is21.11.2018
analytic.to04.12.2018
google-analytics.to06.12.2018
google-analytics.cm28.12.2018
analytic.is28.12.2018
googlc-analytics.cm17.01.2019


Illum


Illum — , -, CMS Magento. , , .

, , , , , . , , , 2016 .

Illum -


. cdn.illum[.]pw/records.php , base64 .


, — records.nstatistics[.]com/records.php .


Willem de Groot, , , CSU.



Group-IB , .


, , Linux: , Linux Privilege Escalation Check Script, (Mike Czumak), CVE-2009-1185.

- : core_config_data CVE-2016-4010, RCE CMS Magento, -.


, . , , CMS . , segapay_standart.js segapay_onpage.js , Sage Pay.

sr.illum [.]pw/mjs_special/visiondirect.co.uk.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/topdierenshop.nl.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/tiendalenovo.es.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/pro-bolt.com.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/plae.co.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/ottolenghi.co.uk.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/oldtimecandy.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/mylook.ee.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs_special/luluandsky.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/julep.com.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs_special/gymcompany.es.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/grotekadoshop.nl.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs_special/fushi.co.uk.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/fareastflora.com.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs_special/compuindia.com.js//request.payrightnow[.]cf/alldata.php
sr.illum [.]pw/mjs/segapay_standart.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs/segapay_onpage.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs/replace_standart.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/mjs/all_inputs.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/mjs/add_inputs_standart.js//request.payrightnow[.]cf/checkpayment.php
sr.illum [.]pw/magento/payment_standart.js//cdn.illum[.]pw/records.php
sr.illum [.]pw/magento/payment_redirect.js//payrightnow[.]cf/?payment=
sr.illum [.]pw/magento/payment_redcrypt.js//payrightnow[.]cf/?payment=
sr.illum [.]pw/magento/payment_forminsite.js//paymentnow[.]tk/?payment=


paymentnow[.]tk , payment_forminsite.js , subjectAltName , CloudFlare. , evil.js . , CVE-2016-4010, footer CMS Magento. request.requestnet[.]tk , , paymentnow[.]tk .



. - .


— PayPal, .

A infraestrutura

/
cdn.illum.pw27/11/2016
records.nstatistics.com06/09/2018
request.payrightnow.cf25/05/2018
paymentnow.tk16/07/2017
payment-line.tk01/03/2018
paymentpal.cf04/09/2017
requestnet.tk28/06/2017


CoffeMokko


CoffeMokko, -, 2017 . , Group 1, RiskIQ 2016 . CMS, Magento, OpenCart, WordPress, osCommerce, Shopify.

CoffeMokko -


: src js . .


, . , , .


, : , , .


/savePayment/index.php /tr/index.php . , , . base64 , :

  • «e» «:»
  • «w» «+»
  • «o» «%»
  • «d» «#»
  • «a» «-»
  • «7» «^»
  • «h» «_»
  • «T» «@»
  • «0» «/»
  • «Y» «*»

base64 , .

, :




, -. TLD. , .

, jQuery ( slickjs[.]org , slick.js ), ( sagecdn[.]org , Sage Pay).

, , .


, /js /src . : . , .





Em algumas amostras detectadas de sniffer dessa família, o código foi ofuscado e continha os dados criptografados necessários para o sniffer funcionar: em particular, o endereço do sniffer gate, uma lista de campos da forma de pagamento e, em alguns casos, um código falso da forma de pagamento. No código dentro da função, os recursos foram criptografados usando o XOR usando a chave, que foi passada pelo argumento da mesma função.


Após descriptografar a sequência com a chave correspondente, exclusiva para cada amostra, é possível obter uma sequência contendo todas as linhas do código sniffer através do caractere delimitador.


Segundo algoritmo de ofuscação


Em amostras farejadoras posteriores dessa família, um mecanismo de ofuscação diferente foi usado: nesse caso, os dados foram criptografados usando um algoritmo auto-escrito. Uma sequência contendo os dados criptografados necessários para o sniffer funcionar foi passada como argumento para a função de descriptografia.


Usando o console do navegador, você pode descriptografar os dados criptografados e obter uma matriz contendo recursos de sniffer.


Ligação aos primeiros ataques do MageCart


Uma análise de um dos domínios usados ​​pelo grupo como uma porta para coletar os dados roubados revelou que o domínio possui uma infraestrutura de roubo de cartão de crédito idêntica à usada pelo Grupo 1, um dos primeiros grupos descobertos por especialistas do RiskIQ.

Dois arquivos foram encontrados no host da família de sniffer CoffeMokko:

  • mage.js - arquivo que contém o código sniffer do Grupo 1 com o endereço de porta js-cdn.link
  • mag.php - Script PHP responsável por coletar dados roubados por sniffer

Conteúdo do arquivo Mage.js

Também foi constatado que os domínios mais antigos usados ​​pelo grupo por trás da família de sniffer CoffeMokko foram registrados em 17 de maio de 2017:

  • link-js [.] link
  • link info-js [.]
  • link track-js [.]
  • link map-js [.]
  • link smart-js [.]

O formato desses nomes de domínio é o mesmo que os nomes de domínio do Grupo 1 usados ​​nos ataques de 2016.

Com base nos fatos descobertos, pode-se supor que exista uma conexão entre os operadores de farejadores CoffeMokko e o grupo criminoso do Grupo 1. Presumivelmente, os operadores do CoffeMokko poderiam emprestar ferramentas e software para roubo de cartões de seus antecessores. No entanto, é mais provável que o grupo criminoso por trás do uso da família de farejadores CoffeMokko seja a mesma pessoa que realizou os ataques como parte das atividades do Grupo 1. Após a publicação do primeiro relatório sobre as atividades do grupo criminoso, todos os seus nomes de domínio foram bloqueados e as ferramentas foram cuidadosamente estudadas e são descritos. O grupo foi forçado a fazer uma pausa, refinar suas ferramentas internas e reescrever o código sniffer para continuar seus ataques e passar despercebido.

A infraestrutura
DomínioData da descoberta / aparência
link-js.link17/05/2017
info-js.link17/05/2017
track-js.link17/05/2017
map-js.link17/05/2017
smart-js.link17/05/2017
adorebeauty.org09/03/2017
security-payment.su09/03/2017
braincdn.org09/04/2017
sagecdn.org09/04/2017
slickjs.org09/04/2017
oakandfort.org09/10/2017
citywlnery.org15/09/2017
dobell.su10/04/2017
childsplayclothing.org31/10/2017
jewsondirect.com11/05/2017
shop-rnib.org15/11/2017
closetlondon.org16/11/2017
misshaus.org28/11/2017
battery-force.org01/12/2017
kik-vape.org01/12/2017
greatfurnituretradingco.org02/12/2017
etradesupply.org12/04/2017
replaceemyremote.org12/04/2017
all-about-sneakers.org05/05/2017
mage-checkout.org05/05/2017
nililotan.org12/07/2017
lamoodbighats.net12/08/2017
walletgear.org10/12/2017
dahlie.org12/12/2017
davidsfootwear.org20/12/2017
blackriverimaging.org23/12/2017
exrpesso.org01/02/2018
parks.su09/09/2018
pmtonline.su01/12/2018
ottocap.org15/01/2018
christohperward.org27/01/2018
coffetea.org31/01/2018
energycoffe.org31/01/2018
energytea.org31/01/2018
teacoffe.net31/01/2018
adaptivecss.org01/03/2018
coffemokko.com01/03/2018
londontea.net01/03/2018
ukcoffe.com01/03/2018
labbe.biz20/03/2018
batterynart.com04/03/2018
btosports.net09/09/2018
chicksaddlery.net16/04/2018
paypaypay.org11/05/2018
ar500arnor.com26/05/2018
authorizecdn.com28/05/2018
slickmin.com28/05/2018
bannerbuzz.info03/06/2018
kandypens.net08/06/2018
mylrendyphone.com15/06/2018
freshchat.info01/01/2018
3lift.org07/02/2018
abtasty.net07/02/2018
mechat.info07/02/2018
zoplm.com07/02/2018
zapaljs.com02/09/2018
foodandcot.com15/09/2018
freshdepor.com15/09/2018
swappastore.com15/09/2018
verywellfitnesse.com15/09/2018
elegrina.com18/11/2018
majsurplus.com19/11/2018
top5value.com19/11/2018

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


All Articles