Foi hackeado. Quer entender como

40

Alguém, pela segunda vez, anexou um pedaço de javascript a um site que eu ajudo a executar. Esse javascript seqüestra o Google adsense, inserindo seu próprio número de conta e colando anúncios por todo o lado.

O código é sempre anexado, sempre em um diretório específico (usado por um programa de anúncios de terceiros), afeta vários arquivos em vários diretórios dentro desse diretório de anúncio (aproximadamente 20) e é inserido aproximadamente no mesmo dia da noite para o dia. Tempo. A conta do adsense pertence a um site chinês (localizado em uma cidade a menos de uma hora de onde eu estarei na China no próximo mês. Talvez eu deva ficar bravo ... brincando, meio que), btw ... aqui está a informação sobre o site: http://serversiders.com/fhr.com.cn

Então, como eles poderiam anexar texto a esses arquivos? Está relacionado às permissões definidas nos arquivos (variando de 755 a 644)? Para o usuário do servidor da web (está no MediaTemple, portanto deve ser seguro, não é?)? Quero dizer, se você tem um arquivo com permissões definidas para 777, ainda não consigo adicionar código à vontade ... como eles podem fazer isso?

Aqui está uma amostra do código real para o seu prazer visual (e como você pode ver ... não é muito importante. O verdadeiro truque é como eles conseguiram chegar lá):

<script type="text/javascript"><!--
google_ad_client = "pub-5465156513898836";
/* 728x90_as */
google_ad_slot = "4840387765";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

Como várias pessoas o mencionaram, eis o que eu verifiquei (e, quando verificado, quero dizer, procurei o tempo em que os arquivos foram modificados para detectar qualquer estranheza e eu esperei os arquivos por instruções POST e travessias de diretório:

  • access_log (nada ao longo do tempo, exceto tráfego normal (ou seja, excessivo) de bots msn)
  • error_log (nada além do arquivo usual não existe erros para arquivos com aparência inócua)
  • ssl_log (nada além do habitual)
  • messages_log (nenhum acesso FTP aqui, exceto eu)

* ATUALIZAÇÃO: ** OK, resolvi. Os hackers da China colocaram fisicamente um arquivo em nosso site que lhes permite fazer todo tipo de coisa administrativa (acesso ao banco de dados, exclusão e criação de arquivos e diretórios, o que for, eles tiveram acesso). Tivemos sorte de não terem feito algo mais destrutivo. Não havia nada nos arquivos de log normais do apache, mas eu encontrei um conjunto diferente de arquivos de log em um analisador de log de servidor da Web e as evidências estavam lá. Eles estavam acessando esse arquivo com seu próprio nome de usuário e senha de administrador e editando o que precisassem ali no servidor. O arquivo deles tem "apache" definido como usuário, enquanto todos os outros arquivos em nosso site têm um nome de usuário diferente. Agora preciso descobrir como eles conseguiram fisicamente esse arquivo em nosso sistema. Suspeito que a culpa disso acabe com o nosso host (Media Temple),

Lothar_Grimpsenbacher
fonte
6
Não sei, você deu a alguém sua senha?
4
Se você sabe exatamente quando isso acontece, procure no access_log tudo o que é incomum nesse período. Anote especialmente todas as solicitações do POST: para onde elas vão, o que fizeram.
Sanmai
3
Thx WhirlWind ... muito útil.
Lothar_Grimpsenbacher
2
Na verdade, se você os conhece, por que não colar os detalhes de endereço em um site anti-spam. Deixe a rede "falar" com eles e dar-lhes um gostinho do seu próprio remédio. :-)
4
@ gaoshan88 - mais útil do que você imagina. Um vetor de ataque é um Trojan que fareja senhas dos clientes ftp dos desenvolvedores.
Quentin

Respostas:

9

Primeiro de tudo, chmod 744NÃO é o que você deseja. O objetivo do chmod é revogar o acesso a outras contas no sistema. Chmod 700é muito mais seguro que chmod 744. No entanto, o Apache precisa apenas do bit de execução para executar seu aplicativo php.

chmod 500 -R /your/webroot/

chown www-data:www-data -R /your/webroot/

www-data é comumente usado como a conta do Apache, que é usada para executar o php. Você também pode executar este comando para ver a conta do usuário:

`<?php
print system("whoami");
?>`

O FTP é terrivelmente inseguro e é muito provável que você tenha sido invadido por esse método. Usando o FTP, você pode tornar os arquivos graváveis ​​e depois infectá-los novamente. Certifique-se de executar um antivírus em todas as máquinas com acesso FTP. Existem vírus que detectam o tráfego local para nomes de usuário e senhas de FTP e, em seguida, efetuam login e infectam os arquivos. Se você se preocupa com a segurança, usará o SFTP, que criptografa tudo. Enviar código-fonte e senhas por fio em texto não criptografado é uma loucura total.

Outra possibilidade é que você esteja usando uma biblioteca ou aplicativo antigo. Visite o site do fornecedor do software e verifique se você está executando a versão mais recente.

Torre
fonte
6
+1, evite FTP como uma praga. Um trojan sniffer de senha pode infectar seu computador e usar suas credenciais para alterar arquivos. Ou pode infectar seu roteador. Ou o computador do seu vizinho no netcafe com a rede wifi não segura. Enviar a senha no clearext é uma péssima idéia.
Tgr
11
FTP não vêm com SSL, você sabe.
grawity
11
@grawity a maioria das pessoas não usa "ftps", mas isso evita que você seja hackeado. O sftp é mais popular.
Rook
2
O www-data NÃO deve possuir arquivos em seu diretório da web. Qualquer coisa que www-data possa ser atualizada por um script mal escrito no servidor.
precisa
9

Minhas contas do Media Temple Grid Server foram "hackeadas" assim várias vezes. A segurança deles é muito baixa ... começou com o PLAIN TEXT PASSWORDS no ano passado e continua até hoje (você pode ligar para o suporte técnico e eles dizem "qual é a sua senha?"). Sei porque recebo e-mails mensais sobre como eles mudaram todas as senhas da minha conta e eles realmente entram e alteram as senhas do banco de dados para você toda vez que são invadidos. Essa empresa parece brilhante como o inferno na superfície, mas o servidor da grade está uma bagunça. Eu recomendo mudar imediatamente .

Por favor, veja este post do ano passado sobre o fiasco original (aviso, ele vai te irritar). Foi ladeira abaixo a partir daí. Passei o dia de ação de graças no ano passado longe da minha família e removendo links pornográficos de meus sites. Encantador.

Acompanhe a diversão na página de status deles : ela lhe mostrará tudo sobre as últimas explorações (e, sim, de fato, há uma "exploração possível" lá em cima agora).

typeoneerror
fonte
haha meus sites gs estão inativos no momento. nenhum email. weblog.mediatemple.net/weblog/category/system-incidents/…
typeoneerror
2

Com base na falta de atividade nos logs de acesso etc. e no fato de que isso está acontecendo aproximadamente ao mesmo tempo, parece que eles comprometeram o servidor e têm algum tipo de script de shell em execução para executar o anexo.

Você verificou o crontab em busca de algo estranho?

Você tentou renomear o diretório e as referências a ele (isso pode quebrar o script do shell)?

abarax
fonte
renomear é uma boa ideia. Vou tentar isso depois de ver quais efeitos ela terá no site. O Crontab tinha uma coisa um pouco estranha: há uma entrada na época em que os arquivos foram alterados, mas é o gerenciador de backup Plesk ... um aplicativo compilado. Se isso for comprometido, o Media Temple tem um grande problema em suas mãos.
Lothar_Grimpsenbacher
1

Sim, definitivamente poderia estar relacionado às permissões de arquivo. Ao ter arquivos graváveis ​​pelo processo da web, você está aberto a qualquer vulnerabilidade de segurança nos aplicativos da web em execução. Bloqueie tudo para que o processo da Web não possa ler ou gravar nada além do necessário.

O outro componente está rastreando exatamente como eles estão modificando seus arquivos. Verificar os logs de acesso do servidor da web é um bom ponto de partida. Verifique os últimos horários de login para vários usuários. Você também pode configurar um script que monitore os arquivos para modificação e o notifique para que você possa tentar pegar os criminosos em flagrante!


fonte
1

Isso parece muito familiar para os hackers do Wordpress que atingiram muitos sites da Network Solutions recentemente. Como você está no Media Temple, é possível que você tenha deixado alguns arquivos visíveis para outros usuários que compartilham sua máquina. Isso explicaria a falta de rastreamentos de log POST ou Apache. Se for esse o caso, seria muito simples injetar código na linha de comando.

editor
fonte
Os logs mostram o tráfego na época em que esses arquivos foram modificados, mas são coisas inócuas como: 207.46.13.43 - - [05 / May / 2010: 01: 42: 26 -0700] "GET /oped/bpr.php?edid= 211 & page = 4 HTTP / 1.1 "404 257" - "" msnbot / 2.0b (+ search.msn.com/msnbot.htm ) "
Lothar_Grimpsenbacher
Você sabe como esse hack do Wordpress funcionou? Pode me dizer como resolver meu próprio problema.
Lothar_Grimpsenbacher
2
Sim, eram permissões ruins em caixas compartilhadas, possivelmente causadas por configurações padrão incorretas por parte das soluções de rede. A correção recomendada foi bloquear permissões como 755 em pastas e 644 em arquivos.
1

O código é sempre anexado, sempre em um diretório específico

Está relacionado às permissões definidas nos arquivos (variando de 755 a 644)? Para o usuário do servidor da web

Você está em um servidor compartilhado? Nesse caso (ou até mesmo não), alguém pode ter brutalmente forçado uma senha de FTP e enviado um script que anexou todos os arquivos nos quais poderia ter acesso.

um usado por um programa de anúncios de terceiros

Ou talvez este programa tenha uma façanha.

webbiedave
fonte
Estou supondo que pode ser que o código de terceiros tenha uma exploração. É em um servidor compartilhado, mas eu teria encontrado quaisquer scripts enviados (a menos que fizer o upload, usou-o e, em seguida, excluí-la, mas mesmo assim eu teria encontrado algo nos arquivos de log mostrando sua conexão ftp)
Lothar_Grimpsenbacher
11
Se seus arquivos puderem ser gravados pelo servidor da web, é possível que eles tenham carregado o script para qualquer site no servidor e os tenham substituído. Mas eu também examinaria atentamente esse aplicativo de terceiros.
O código de terceiros ... é um script executável ou apenas um trecho de JavaScript? JavaScript não pode modificar arquivos no servidor.
Salman A
@ Salman A - é uma coleção de scripts PHP que gerenciam publicidade.
Lothar_Grimpsenbacher
OK, espero que você tenha investigado esse código.
Salman A
1

Se você tiver acesso apropriado (e suporte ao kernel), tente criar um daemon de monitoramento baseado em inotify ou dnotify para observar as alterações em seus arquivos e, em seguida, use rapidamente "lsof" para ver com qual processo o arquivo está aberto. acesso de gravação. Você também pode usar o strace para monitoramento. Isso deve fornecer uma pista sobre qual executável está sendo explorado.

fora
fonte
1

Os logs de inspeção de FTP são o primeiro lugar para começar. O log deve conter a maioria das atividades, se não todas, junto com os carimbos de data e hora. Se você souber a que horas seus arquivos foram modificados, poderá determinar se sua conta de FTP está comprometida ou não.

Em seguida, pode ser um script em seu servidor da web que está injetando esse código. Em um cenário de hospedagem compartilhada, acho que é possível fazer a cat /web/malicious.com/script.js >> /web/innocent.com/index.php. Isso pode funcionar sob certas condições, como o comando sendo executado pelo usuário httpd e o arquivo index.php também são de propriedade / graváveis ​​por esse usuário. Nesse caso, você deve ter seu provedor de hospedagem para rastrear a conta que está sendo usada para injetar os scripts.

Salman A
fonte
1

A maioria dos arquivos do site precisa ser legível pelo servidor da web. Em um site somente leitura, apenas os logs precisam ser graváveis ​​pelo servidor da web. defina o proprietário para alguém que não seja o usado pelo servidor da web. Defina a proteção 640 em todos os arquivos, exceto scripts. Defina scripts e diretórios 750. Para arquivos ou diretórios que precisam ser gravados pela web, você pode alterar o proprietário para o servidor da web ou definir o chmod g + 2 nos arquivos ou diretórios relevantes.

BillThor
fonte
Os scripts que não são CGI podem ter o modo 600 ou 640 (dependendo do proprietário e do grupo do arquivo e de qual usuário o servidor da Web é executado), pois muitos scripts são passados ​​para um intérprete.
Outis
0

Há um milhão de maneiras possíveis de invadir um site. Eles poderiam ter usado uma vulnerabilidade em seu script, roubado sua senha, uma vulnerabilidade de um site hospedado em conjunto (se você estiver em um host barato), uma vulnerabilidade de algum serviço não relacionado à Web na máquina do servidor. .

Como primeira etapa, verifique a data de modificação do arquivo e verifique os logs de acesso, erro e ftp para qualquer atividade suspeita naquele momento.

Tgr
fonte
0

A mesma coisa aconteceu comigo um tempo atrás. Wordpress foi o único software que teria causado algo assim, até onde eu sei.

Joe Phillips
fonte
Nenhum Wordpress envolvido aqui.
Lothar_Grimpsenbacher