Como usar o comando grep para localizar código malicioso injetado no site
Oi! Aqui é a Sensei da GeHost 🥋 Hoje vou te ensinar uma técnica simples, mas poderosa, que a gente usa muito quando desconfia que um site foi invadido: caçar código malicioso usando o comando grep via terminal (SSH). Não se assusta com o nome — vou te guiar com calma, passo a passo, como se estivéssemos sentados lado a lado.
Quando usar este guia: seu site está redirecionando pra páginas estranhas, o Google marcou como "site comprometido", apareceram arquivos que você não reconhece, ou o hospedeiro avisou sobre malware. O grep ajuda a encontrar RÁPIDO onde o código ruim está escondido.
O que é o grep, afinal?
grep é como um "Ctrl+F" gigante, só que ele procura um texto (ou padrão) dentro de milhares de arquivos de uma vez só. Como hackers costumam injetar trechos de código camuflado dentro de arquivos legítimos do WordPress, Woocommerce, etc., o grep é perfeito pra achar essa agulha no palheiro.
Passo 1 — Acesse o terminal
Se seu plano tem acesso SSH liberado, conecte normalmente com o usuário e a senha (ou chave) da sua hospedagem. Se você não usa SSH no dia a dia, também dá pra abrir um terminal diretamente pelo cPanel, na seção "Avançado" → Terminal.
Depois de conectado, navegue até a pasta do seu site (geralmente é a public_html):
cd public_html
Passo 2 — Procure pelos "sinais" mais comuns de código malicioso
Códigos maliciosos costumam usar algumas funções do PHP pra se disfarçar ou executar comandos escondidos. Aqui vão os comandos que a gente mais usa:
- Código embaralhado (ofuscado) em base64:
grep -r "base64_decode" --include=*.php .
- Execução remota de comandos:
grep -r "eval(" --include=*.php . - Funções de sistema perigosas (raro em site legítimo):
grep -rE "system\(|shell_exec\(|passthru\(|exec\(" --include=*.php . - Ofuscação por compressão (outro jeito de esconder código):
grep -r "gzinflate\|str_rot13\|gzuncompress" --include=*.php .
- Arquivos que tentam esconder erros pra não chamar atenção:
grep -r "error_reporting(0)" --include=*.php .
Dica da Sensei: o parâmetro-rfaz o grep procurar dentro de TODAS as subpastas, e o--include=*.phpfoca só nos arquivos PHP, que é onde a maioria das injeções acontece. Isso deixa a busca bem mais rápida e organizada.
Passo 3 — Refine a busca (menos ruído, mais precisão)
Algumas dessas funções (como base64_decode) também são usadas por plugins legítimos, então o resultado pode vir grande. Duas formas de refinar:
- Ignorar pastas de plugins/temas conhecidos e confiáveis, focando no restante:
grep -r "eval(" --include=*.php . | grep -v "wp-content/plugins" - Buscar combinações suspeitas (o combo abaixo é clássico de malware, quase nunca aparece em código legítimo):
grep -rE "eval\(base64_decode" --include=*.php .
Passo 4 — Ache arquivos modificados ou fora do padrão
Outra forma poderosa de investigar é procurar arquivos recém-alterados — se você não mexeu no site há dias e um arquivo foi modificado ontem, é forte indício de invasão:
find public_html -name "*.php" -mtime -7
(Esse comando lista arquivos .php alterados nos últimos 7 dias — ajuste o número conforme sua necessidade.)
Se você não tem acesso SSH liberado no seu plano, não tem problema: dá pra usar a busca de texto do próprio Gerenciador de Arquivos do cPanel, embora seja mais lenta que o grep.
Passo 5 — Encontrou algo suspeito? Calma, não saia deletando
- Não apague o arquivo de cabeça. Alguns trechos suspeitos fazem parte de plugins legítimos (raro, mas acontece). Apagar o arquivo errado pode derrubar o site.
- Faça um backup antes de qualquer alteração. Assim, se algo der errado, dá pra voltar atrás.
- Anote os caminhos dos arquivos suspeitos que o grep te mostrou (com o número da linha).
- Abra um chamado pro nosso suporte com essa lista — nosso time confirma se é malware de verdade e ajuda na limpeza com segurança.
Importante: encontrar uma dessas funções não significa necessariamente que há malware — mas é sempre um bom sinal de alerta pra investigar com calma. Na dúvida, chame a gente. 💙
Prevenção — depois de limpar, vamos evitar que se repita
- Mantenha WordPress, plugins e temas sempre atualizados.
- Troque as senhas de FTP, banco de dados e do painel após qualquer sinal de invasão.
- Evite instalar plugins/temas "piratas" (nulled) — é a porta de entrada nº1 pra malware.
- Revise periodicamente os usuários administradores do seu site — remova quem não reconhece.
Se em algum momento o comando parecer complicado ou o resultado ficar confuso, não force a barra sozinho — nosso suporte técnico está aqui pra isso. Combinado? 🙂