Ao investigar arquivos suspeitos no site de eCommerce Magento de um cliente, a Equipe de Pesquisa do SiteLock encontrou o código de processamento de pagamento malicioso injetado em arquivos de aplicativos Magento que destruiu os dados do cartão de crédito e as credenciais de login administrativo. O código malicioso enviou dados roubados do cartão de crédito diretamente para um mercado de cartão acessível ao público onde os detalhes do cartão da vítima estavam listados para venda. Neste artigo, analisamos a infecção, analisemos profundamente o mercado de cartões e discutimos maneiras de manter seu site e seus dados de cartão de crédito seguros.
A infecção “mapeia” o código Magento, baixando cópias modificadas de arquivos Magento legítimos da conta do Pastebin do atacante. As versões existentes do site da vítima desses arquivos são substituídas pelas cópias infectadas e os tempos de modificação do arquivo são alterados para aliviar a suspeita. Os arquivos substituídos, que analisaremos com maior detalhe, criam blocos maliciosos de código nas funções Magento existentes que são executadas durante ações como logins de usuários e administradores, atualizações de informações de pagamento e no checkout.
O Patcher
O primeiro elemento desse ataque é o uso de um patcher, que visa quatro arquivos principais do Magento, baixa as versões infectadas desses arquivos e substitui os arquivos existentes por substituições mal-intencionadas. O arquivo em si inclui comentários de cabeçalho Magento padrão e não é completamente ofuscado, ao contrário da maioria das infecções de malware baseadas na Web. Isso significa que, de relance, o arquivo pode ser percebido como um arquivo Magento padrão.
Aqui está a parte funcional do script patcher com IDs Pastebin removidos.
Este arquivo define uma função chamada patch(), que é então usada para baixar, via cURL, um arquivo de Pastebin e substituir os arquivos limpos. Observe a variável $link (notação 1 na imagem acima), que é a codificação base64 do endereço parcial http://pastebin.com/raw/. Cada “patch” individual passa cinco variáveis (notação 2 na imagem) que declaram, por ordem:
O caminho do diretório do arquivo de destino, em relação ao caminho predefinido $path, /app/code/core/Mage
O nome do arquivo a ser infectado
O nome de um arquivo no mesmo diretório, cujo tempo de modificação de arquivo será aplicado ao arquivo infectado
O tamanho previsto do novo arquivo
O ID Pastebin da versão infectada do arquivo
Os seguintes arquivos são substituídos desta maneira:
/app/code/core/Mage/Payment/Model/Method/Cc.php
/app/code/core/Mage/Customer/controllers/AccountController.php
/app/code/core/Mage/Admin/Model/Session.php
/app/code/core/Mage/Checkout/Model/Type/Onepage.php
Os Skimmers
Cada um dos arquivos infectados injeta o comportamento malicioso nas funções incorporadas do Magento. Com isso, todas as atualizações de tentativas de método de pagamento, check-out de lojas e logins do site são registrados e entregues ao atacante instantaneamente como dados POST via cURL. O código injetado segue o mesmo fluxo de trabalho básico em cada um dos arquivos infectados: Reúna dados, formateie os dados e envie os dados. Enquanto dois dos arquivos, Onepage.php e AccountController.php, enviam os dados diretamente para o domínio do invasor, os outros arquivos, Cc.php e Session.php, roteiam seus dados para um arquivo em um site aparentemente não relacionado. É possível que este site esteja associado com o atacante, embora seja mais provável que seja um arquivo que o invasor carregou em um site legitimo que tenha violado.
Cc.php
A função de atualização do método de pagamento em Cc.php é modificada para incluir a funçãosendCcNumber()
O código é dividido em três blocos distintos. O primeiro bloco, começando com $info e terminando após $data17, reúne os nomes das vítimas, os endereços de cobrança e os detalhes do cartão de crédito usando as funções Magento legítimas. O segundo bloco, começando com $message e terminando após $subject, formata os dados coletados e o prepara para ser entregue. O bloco final, começando com $update e terminando após curl_close, cria e, eventualmente, envia uma chamada cURL que entrega os dados raspados através da API do invasor.
O código neste arquivo é executado quando um cliente adiciona um método de pagamento à sua conta ou atualiza uma conta existente.
AccountController.php
A versão maliciosa do AccountController.php intercepta as informações de login do cliente.
Similar em estrutura a um site de phishing, esse script roteia uma cópia da informação de login do cliente do site para o servidor do adversário.
Observe que este arquivo Magento específico apenas lida com os dados de login do usuário. Essas contas armazenam histórico de pedidos, informações de pagamento e detalhes de entrega para clientes retornados, mas não possuem recursos administrativos no próprio site Magento.
Session.php
Onde o arquivo anterior manipulava os dados de login do cliente, o Session.php é responsável por manter as sessões de login para administradores do site infectado Magento.
Tendo roubado credenciais administrativas para o site, isso proporciona ao invasor a capacidade de criar novas contas administrativas para utilizar se os arquivos infectados forem limpos e as contas comprometidas protegidas, permitindo o acesso persistente.
Onepage.php
O arquivo infectado final, Onepage.php, é responsável por efetuar o processamento de informações de pagamento quando um produto é comprado no site.
Semelhante ao código no Cc.php, esta função maliciosa captura o faturamento e os dados do cartão de crédito processados no momento da compra e o entrega ao atacante.
Mesmos Dados, Dois Arquivos
Embora seja verdade que o código em Cc.php e Onepage.php podem entregar cópias duplicadas da mesma informação, elas não são executadas nas mesmas condições. Se um cliente cria uma conta e adiciona um método de pagamento, o Cc.php entregará seus dados, independentemente da compra feita. Por outro lado, se um cliente fizer uma compra única sem criar uma conta, a Onepage.php processará os mesmos dados. Além disso, uma vez que cada rota para diferentes locais – Onepage.php envia os dados diretamente para o site do invasor, enquanto o Cc.php roteia para um terceiro – isso cria redundância para manter o funcionamento do sistema, mesmo que um ponto final seja retirado.
O mercado negro
Novamente, todos os dados do cartão pertinentes foram coletados – número do cartão, data de validade, código de segurança e país de origem – e enviado ao atacante. Decidimos investigar o domínio primário do invasor e conseguimos obter acesso público legítimo ao serviço.
O site de vendas de cartões permite que qualquer pessoa com um nome de domínio crie uma conta para procurar e comprar números de cartões roubados. Registramos no serviço respondendo a um único e-mail de confirmação, novamente disponível publicamente na net.
Muitas vezes, os atacantes usam cartões de crédito roubados para fazer compras fraudulentas e depois revendem as compras as compras feitas por dinheiro. Curiosamente, as únicas transações realizadas pelo mercado com os cartões foram de pequenas quantidades, de US$ 1 a US$ 3, para determinar se os cartões eram válidos. Se a transação fosse bem sucedida, os atacantes colocariam o cartão na loja de comércio eletrônico, vendendo para o uso fraudulento. Em outras palavras, um mercado negro de golpistas.
Depois de se inscrever, o usuário recebe acesso completo ao inventário do cartão – listagem BIN, últimos dois dígitos, tipo de cartão, país de origem e preço – para comprar cartões roubados. O site aceita duas formas de pagamento, ambos anônimos: Bitcoin e Perfect Money. Depois de adicionar crédito em conta, pode-se comprar e usar os cartões roubados. O mercado de cartão garante os cartões, embora não oferece reembolsos para cartões desativados ou falsos. As compras parecem simples e rápidas, dando aos usuários ilícitos acesso a dados privados com pouco ou nenhum esforço.
Os golpistas também vendem ferramentas de hacking para ajudar os usuários do mercado de cartões com sites comprometidos a colecionar suas próprias informações de cartão.
Conclusão
Dado o caminho simples e insidioso que os dados do cartão de crédito comprometidos levam, o que você pode fazer para proteger seus dados do site ou cartão, de cair nas mãos erradas?
- Compre somente produtos online de sites respeitáveis que utilizem SSL/TLS. Procure um certificado SSL e “https://” na barra de URL do seu navegador. Embora essas conexões seguras, infelizmente, não possam impedir o tipo de ataque que discutimos hoje, ainda é um passo crítico para garantir que suas informações sejam seguras em linha.
- Execute uma pesquisa sobre empresas e sites que você nunca comprou produtos antes. Procure revisões negativas, ou se as mensagens do site sejam pirateadas ou listadas na lista negra.
- Vigie atentamente o seu banco e as declarações do cartão de crédito. Nada substitui uma pequena diligência proativa.
- Atualize suas senhas regularmente e evite usar a mesma senha em vários locais. Se você usar a mesma senha em todos os lugares e um dos sites que você usa é violado, o invasor pode reutilizar essa senha e acessar suas contas em outros serviços.
- Se você possui um negócio de comércio eletrônico, execute varreduras de segurança agendadas regularmente para encontrar e remover códigos maliciosos. SiteLock analisa e remove continuamente o código mal-intencionado, como o skimmer acima, impedindo o comprometimento dos dados confidenciais dos seus clientes.
Você pode visualizar a matéria original no blog da SiteLock clicando aqui.
Você pode proteger seu site, conhecendo os planos disponíveis do SiteLock clicando aqui. Nós podemos te ajudar a escolher o melhor plano e instalar ele em seu site, SiteLock protege o seu site diariamente contra muitas ameaças por um investimento realmente baixo.