Localizando Script Perl Rogue

1

Estou tentando encontrar o local de um script perl que está causando estragos em um servidor que eu controle. Também estou tentando descobrir exatamente como esse script foi instalado no servidor - meu melhor palpite é por meio de uma exploração do WordPress.

O servidor é uma configuração básica da web executando o Ubuntu 9.04, Apache e MySQL. Eu uso IPTables como o firewall. o site corre em torno de 20 sites e a carga nunca se arrasta acima de 0,7.

Pelo que vejo, o script está fazendo conexão externa com outros servidores (provavelmente tentando entrar na força bruta).

Aqui está um top dump de um dos processos:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
  22569 www-data  20   0 22784 3216  780 R  100  0.2  47:00.60 perl         

O comando que o processo está executando é /usr/sbin/sshd . Eu tentei encontrar um nome de arquivo exato, mas não estou tendo sorte ... Eu executei um lsof -p PID e aqui está a saída:

COMMAND   PID     USER   FD   TYPE DEVICE    SIZE   NODE NAME
perl    22569 www-data  cwd    DIR    8,6    4096      2 /
perl    22569 www-data  rtd    DIR    8,6    4096      2 /
perl    22569 www-data  txt    REG    8,6   10336 162220 /usr/bin/perl
perl    22569 www-data  mem    REG    8,6   26936 170219 /usr/lib/perl/5.10.0/auto/Socket/Socket.so
perl    22569 www-data  mem    REG    8,6   22808 170214     /usr/lib/perl/5.10.0/auto/IO/IO.so
perl    22569 www-data  mem    REG    8,6   39112 145112 /lib/libcrypt-2.9.so
perl    22569 www-data  mem    REG    8,6 1502512 145124 /lib/libc-2.9.so
perl    22569 www-data  mem    REG    8,6  130151 145113 /lib/libpthread-2.9.so
perl    22569 www-data  mem    REG    8,6  542928 145122 /lib/libm-2.9.so
perl    22569 www-data  mem    REG    8,6   14608 145125 /lib/libdl-2.9.so
perl    22569 www-data  mem    REG    8,6 1503704 162222 /usr/lib/libperl.so.5.10.0
perl    22569 www-data  mem    REG    8,6  135680 145116 /lib/ld-2.9.so
perl    22569 www-data    0r  FIFO    0,6         157216 pipe
perl    22569 www-data    1w  FIFO    0,6         197642 pipe
perl    22569 www-data    2w  FIFO    0,6         197642 pipe
perl    22569 www-data    3w  FIFO    0,6         197642 pipe
perl    22569 www-data    4u  IPv4 383991            TCP outsidesoftware.com:56869->server12.34.56.78.live-servers.net:www (ESTABLISHED)

Meu sentimento é outsidesoftware.com também está sob ataque? Ou possivelmente sendo usado como um túnel.

Eu consegui encontrar vários arquivos não autorizados em /tmp e /var/tmp , aqui está uma breve saída de um desses arquivos:

#!/usr/bin/perl
# this spreader is coded by xdh
# xdh@xxxxxxxxxxx
# only for testing...

my @nickname = ("vn");
my $nick = $nickname[rand scalar @nickname];
my $ircname = $nickname[rand scalar @nickname];

#system("kill -9 'ps ax |grep httpdse |grep -v grep|awk '{print $1;}''");
my $processo = '/usr/sbin/sshd';

O conteúdo completo do arquivo pode ser visto aqui: link

Estou tentando conseguir algumas coisas aqui ...

  1. Primeiramente, preciso impedir que esses processos sejam executados. Quer desabilitando o SSH de saída ou qualquer regra de tabelas de IP, etc ... esses scripts estão em execução há cerca de 36 horas e minha principal preocupação é impedir que essas coisas sejam executadas e reaparecer sozinhas.

  2. Em segundo lugar, eu preciso tentar encontrar onde e como esses scripts foram instalados. Se alguém tiver algum conselho sobre o que procurar nos registros de acesso ou em qualquer outra coisa, eu ficaria muito grato.

por Gary Garside 06.11.2013 / 10:10

2 respostas

1

Nunca permita o bit 'exec' em sistemas de arquivos onde usuários não confiáveis podem gravar arquivos! Atualize seu / etc / fstab e remonte, ou melhor reinicie o servidor.

Aqui você (finalmente) percebeu que o firewall não é algo extravagante para apenas "proteger" você contra alguns ataques idiotas de fora. Você também deve ter regras de firewall para o tráfego de saída! Ou pelo menos você deve ter algum monitoramento do tráfego de saída. OK, o wordpress gostaria de se atualizar via http (?), Mas por que algum aplicativo da web deve se conectar ao ssh, irc etc ...?

Próxima coisa ... Ah, é executado todos os seus sites em "www-data". Isso é muito bom. Você deve projetá-lo de uma maneira melhor. Execute cada usuário-cliente sob seu próprio uid separado. Você poderia usar php-fpm ou algo similar. Desta forma você teria uma melhor visão sobre a atividade de seus usuários e você poderia até mesmo filtrar via tráfego iptables baseado em userid ... Será que um usuário 'foobar' precisa que seu aplicativo da web se conecte a um servidor irc? Então, nada mais simples do que adicionar uma regra apenas para esse usuário específico.

Outro ponto ... Portos < 1024 pode ser ligado apenas pelo usuário root. Então você deve ter algum tipo de monitoramento de portas de escuta > 1024, então um usuário não teria seu próprio daemon escutando em seu servidor.

Você também pode pensar em aplicativos da web de chrooting ...

Se algum usuário não confiável puder executar seus próprios binários, scripts no servidor, haverá acesso ao servidor do usuário ou eles poderão usar seus recursos para outra coisa.

Algumas informações interessantes sobre como proteger a hospedagem PHP: Linux: 25 Práticas recomendadas de segurança do PHP para sistemas Administradores

    
por 06.11.2013 / 10:27
0

Você disse: "Também estou tentando descobrir exatamente como esse script foi instalado no servidor - meu melhor palpite é por meio de uma exploração do WordPress. O servidor é uma configuração básica da web que executa o Ubuntu 9.04"

O Ubuntu 9.04 foi uma versão de suporte de longo prazo e parou de receber atualizações no final de 2010:

link

Então basicamente o seu SSH, Apache e todos os serviços não receberam atualizações de segurança em idades! Sua melhor aposta é considerar este servidor como 'perdido' e não gastar tempo perseguindo o script. Você pode ter rootkits e todos os outros tipos de maldade nele. Migre os serviços para uma caixa limpa em um sistema operacional que ainda tenha atualizações para o próximo tempo, por exemplo, o CentOS 6 ou o Ubuntu 12.04 LTS Server.

    
por 06.11.2013 / 21:01