O script de analytics que ninguém adicionou: desmascarando um skimmer de cartões

Forense Digital & Resposta a Incidentes Nível 2/4 ~3 min 30 de outubro de 2026

O desafio

Um script rouba cartões no checkout da Fernhill. Decodifique o endereço escondido no código. Descubra o domínio que recebe os cartões.

O que você vai aprender

  • Reconhecer como um skimmer Magecart exfiltra dados de cartão
  • Ler JavaScript ofuscado para recuperar a ordem de decodificação
  • Decodificar char codes, uma inversão e base64 em sequência
  • Nomear os controles que impedem a injeção de scripts de terceiros

Habilidades testadas

Desofuscação de JavaScriptResposta a incidentesEncoding

Pré-requisitos

  • O que é base64
  • Ler uma linha de JavaScript

Como funciona

Um skimmer web é JavaScript injetado numa página de pagamento, geralmente por meio de um script de terceiros comprometido ou de um CMS invadido. Ele lê os campos do cartão enquanto o cliente digita e envia tudo para o atacante, muitas vezes como new Image().src = url + data, uma simples requisição de imagem que não deixa rastro nos logs da própria loja.

Para sobreviver a uma revisão rápida, o endereço de destino é ofuscado. Aqui ele está em base64, invertido e depois guardado como códigos de caractere. O código de decodificação vem na mesma linha, então lê-lo de dentro para fora revela a receita exata: fromCharCode, reverse(), atob.

Erros comuns

  • Aplicar base64 primeiro. Os números são códigos de caractere; decodifique com decimal antes de qualquer outra coisa.
  • Pular a inversão. Uma string que começa com == é base64 escrito de trás para frente: o padding fica no final.
  • Responder google.com. O domínio só imita o do Google; leia-o exatamente como está.

Como se proteger

  • Sirva o checkout com uma Content-Security-Policy rígida: use allowlist em script-src e limite connect-src e img-src, para que os dados roubados não tenham para onde ir.
  • Carregue scripts de terceiros com Subresource Integrity (hashes em integrity=).
  • Monitore as páginas de pagamento para detectar mudanças nos scripts (requisitos 6.4.3 e 11.6.1 do PCI DSS 4.0).
  • Prefira campos de pagamento hospedados num iframe do provedor de pagamento, fora do alcance dos scripts da página.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

172 resoluções
82% taxa de sucesso
Malekith Primeiro sangue

Hacks de hoje relacionados

36.000+ Hackers Labs reais Grátis
Comece Grátis ou resolva o hack de hoje, sem conta