Dor ao remover um rootkit perl


8

Portanto, hospedamos um servidor de geosserviço no escritório.

Alguém aparentemente invadiu essa caixa (provavelmente via ftp ou ssh) e colocou algum tipo de coisa de rootkit gerenciado por irc.

Agora estou tentando limpar tudo, encontrei o processo pid que tenta se conectar via irc, mas não consigo descobrir quem é o processo que chama (já olhou com ps, pstree, lsof) O processo é um perl O script pertence ao usuário www, mas o ps aux | grep exibe um caminho de arquivo falso na última coluna.

Existe outra maneira de rastrear esse pid e pegar o invocador?

Esqueci de mencionar: o kernel é 2.6.23, que pode ser explorado para se tornar root, mas não consigo tocar muito nessa máquina, por isso não posso atualizar o kernel

EDIT: lsof pode ajudar:

lsof -p 9481
COMANDO PID USUÁRIO FD TIPO NOME DO TAMANHO DO DISPOSITIVO NOMESs
perl 9481 www cwd DIR 8,2608 2 / ss
perl 9481 www rtd DIR 8,2608 2 / ss
perl 9481 www txt REG 8,2 1168928 38385 / usr / bin / perl5.8.8ss
perl 9481 www mem REG 8,2 135348 23286 /lib64/ld-2.5.soss
perl 9481 www mem REG 8,2 103711 23295 /lib64/libnsl-2.5.soss
perl 9481 www mem REG 8,2 19112 23292 /lib64/libdl-2.5.soss
perl 9481 www mem REG 8,2 586243 23293 /lib64/libm-2.5.soss
perl 9481 www mem REG 8,2 27041 23291 /lib64/libcrypt-2.5.soss
perl 9481 www mem REG 8,2 14262 23307 /lib64/libutil-2.5.soss
perl 9481 www mem REG 8,2 128642 23303 /lib64/libpthread-2.5.soss
perl 9481 www mem REG 8,2 1602809 23289 / lib64 / libc -2.5.soss
perl 9481 www mem REG 8,2 19256 38662 /usr/lib64/perl5/5.8.8/x86_64-linux-threa d-multi / auto / IO / IO .oss
perl 9481 www mem REG 8,2 21328 38877 /usr/lib64/perl5/5.8.8/x86_64-linux-threa d-multi / auto / Socket / Socket.soss
perl 9481 www mem REG 8,2 52512 23298 /lib64/libnss_files-2.5.soss
perl 9481 www 0r FIFO 0,5 1068892 pipess
perl 9481 www 1w FIFO 0,5 1071920 pipess
perl 9481 www 2w FIFO 0,5 1068894 pipess
perl 9481 www 3u IPv4 130646198 TCP 192.168.90.7:60321->www.****.net:ircd (SYN_SENT)


2
A menos que você atualize o kernel, o que impede o hacker de repetir o hack assim que você remove o rootkit? Pode muito bem haver um módulo de kernel de Trojan que oculte processos.
Pjc50

Isso parece muito semelhante ao bot ddos irc eu só limpou meu VPS: serverfault.com/questions/639699/...
Hayden Thring

Respostas:


37

Se posso lhe dar algum conselho, é para parar de desperdiçar seu tempo limpando. Faça uma imagem do sistema operacional para obter informações forenses para mais tarde e apenas reinstale o servidor.

Desculpe, mas é a única maneira segura de evitar que você seja rootkitted.

Mais tarde, você pode verificar a imagem, por alguns motivos, por que isso aconteceu.

Por experiência própria, fiz isso e, mais tarde, encontrei um usuário interno que tinha uma chave SSH contendo a falha do openssl em 2008.

Espero que isso esclareça as coisas.

Nota:
Se você deseja criar uma imagem / fazer backup do servidor antes de reinstalar, tenha muito cuidado ao fazer isso. Como o @dfranke disse, inicialize de um meio confiável para o backup.

Você não deve se conectar a outras máquinas a partir de um servidor raiz, pois grandes rootkits são capazes de se espalhar por sessões confiáveis, como SSH.


11
Eu fortemente apoio este conselho. Você encontrou um rootkit, mas não tem absolutamente nenhuma idéia do que mais o invasor violou. Uma vez enraizado, sempre enraizado. Inicialize a partir de uma mídia confiável, zere a unidade. Fdisk, formatar, reinstalar, doo dah, doo dah.
dfranke

Yah ... Bons kits de raiz executado sob o seu kernel .. Sem chance de excluí-los, com fora um monte de esforço
Arenstar

4
+1 Para qualquer sistema de produção (realmente, qualquer sistema), não há razão para limpar. Mate-o com fogo e reconstrua.
Phoebus

1
+1 para reinstalar. O rootkit provavelmente mexeu com seus binários ou kernel e tudo o que você está vendo (caminhos falsos, etc ...) é provavelmente uma cortina de fumaça do rootkit para se esconder.
Coredump18

1
Oblig. citação : "Eu digo que decolamos e destruímos todo o site da órbita. É a única maneira de ter certeza."
Charles Stewart

1

A linha de comando pode ser alterada se o processo alterar argv [0]. Tentarls -l /proc/[pid]/exe

De man 5 proc

esse arquivo é um link simbólico que contém o nome do caminho real do comando executado. Esse link simbólico pode ser desreferenciado normalmente; tentar abri-lo abrirá o executável. Você pode até digitar / proc / [número] / exe para executar outra cópia do mesmo executável que está sendo executada pelo processo [número]. Em um processo multithread, o conteúdo desse link simbólico não estará disponível se o encadeamento principal já tiver terminado

ps auxwf | less fornece a "visualização da floresta" dos processos que podem mostrar qual processo iniciou esse processo (a menos que o rootkit o oculte ou o pai do aplicativo tenha saído e ele tenha sido reparado para iniciar).

Isso seria principalmente acadêmico e provavelmente apenas uma mudança de tempo, mas strings -n 10 /proc/[pid]/mempode ser divertido observar o passado. Você também pode echo 0x7 > /proc/[pid]/coredump_filterusar o gdb gcorepara forçar um coredump com todo o possível, mas o processo morre, o que pode bloquear uma análise mais aprofundada.

Mas definitivamente siga o conselho de Arenstar. Faça backup apenas dos dados, restaure tudo que pode ser executado nos backups e reinicie. Você provavelmente também deve restaurar o site a partir de backups, pode haver javascript malicioso adicionado a todos os arquivos html ou php. Se você está considerando uma ação legal, basta deixar a máquina de lado, desconectá-la da rede e interromper o que estiver fazendo até que especialistas forenses tenham feito seu trabalho.


Realmente ótima resposta.
22910 paul_ago

infelizmente ls -l / proc / [pid] / exe retorna o caminho do bin perl5.8.8, e o ps / pstree diz que o processo pai é init, isso parece muito bem oculto. Definitivamente, eu começaria novamente com uma nova instalação, mas o desenvolvedor original do aplicativo em execução está fora do país por um tempo, então estava procurando uma solução temporária. Resposta realmente ótima por sinal
paul.ago 12/11/2010

0

Tente "cat / proc / [identificação do processo] / cmdline" Embora se for um rootkit verdadeiro, ele pode modificar o kernel para se esconder melhor.


isso me dá o mesmo do ps aux "/ usr / sbin / apache / logs", que é falso. Nem o / usr / sbin / apache diretório existe
paul.ago

0

Você deve reinstalar, eu concordo. Você já tentou escapar dos personagens no caminho? Talvez uma dessas barras faça parte de um nome de arquivo e não de um diretório. No mínimo, você deve usar o iptables para bloquear o tráfego de saída para esse host ou o IRC geral até que seja corrigido. Verifique netstat também.


não, o caminho parece "real". Infelizmente, o iptables parece instalado, mas o módulo do kernel está ausente, então devo recompilar o kernel. Eu provavelmente ir por esse caminho para corrigir a coisa por alguns dias até que eu entrar em contato com o cara que tem o código-fonte da aplicação, para que eu possa reinstalar o servidor
paul.ago

0

Eu acho que agora você reinstalou. Seu desperdício de tempo tentando rastrear os processos e fazer análises forenses, pois as chances de qualquer coisa legalmente se desenvolver a partir dele seriam muito pequenas e as chances de encontrar o hacker seriam inúteis de qualquer maneira. A menos que seja interessante pesquisar e reverter rootkits, o que pode ser divertido :)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.