Como detectar e remover um trojan do Linux?

15

Eu recentemente (re) tropecei nisso:

Sim, sei que adicionar algum software / PPA aleatório de uma fonte não confiável está causando problemas (ou pior). Eu nunca faço isso, mas muitos fazem isso (muitos blogs e tabloides sobre Linux promovem a adição de PPAs para aplicativos sofisticados, sem avisar que ele pode quebrar seu sistema ou, pior ainda, comprometer sua segurança.)

Como um cavalo de tróia ou um aplicativo / script desonesto pode ser detectado e removido?

    
por iamsid 14.11.2010 / 21:42

4 respostas

19

Não há receita geral. Se o seu sistema foi infectado por um trojan desconhecido, tudo o que você pode fazer é reinstalar.

Se você sabe que o trojan opera de certa forma - por exemplo, você sabe que o trojan não infecta o kernel - pode haver uma maneira menos difícil de se recuperar. Mas isso depende inteiramente de saber como o trojan se comporta. Se tudo que você tem são os sintomas (como seu computador enviando spam sem o seu consentimento), não há uma técnica geral: o detector de trojan tem que ser mais esperto que o designer de trojan (e sortudo). No que diz respeito aos trojans, a detecção e a ocultação são como armas e armaduras: há uma escalada tecnológica e nenhuma das partes tem uma vantagem intrínseca (embora os hiders tenham uma vantagem inicial).

Muitos sistemas possuem um canal de distribuição seguro. Por exemplo, quando você instala um pacote dos repositórios do Ubuntu com as ferramentas baseadas no apt (apt-get, aptitude, synaptic, centro de software,…), a ferramenta verifica se o pacote está assinado (vetado) por alguém que o Ubuntu confie. (A maioria das distribuições tem um mecanismo semelhante.) Quando você instala um pacote de um PPA, tudo o que você pode saber é que o proprietário do PPA examinou o pacote, o que não ajuda se você não tiver motivos para confiar no proprietário do PPA.

Sobre trojans e backdoors, recomendo vivamente a leitura da palestra do prêmio Turing de Ken Thompson , Reflexões sobre confiança de confiança . Para resumir, ele alterou o compilador para que, ao compilar o programa de login, ele adicionasse um código que permitisse que ele efetuasse login com uma senha secreta; então ele alterou o compilador para que, quando compilado, ele inserisse o código para adicionar o backdoor; então ele recompilou todo o sistema (em particular o programa de login e o compilador); finalmente ele restaurou a fonte do compilador para a fonte original e inquestionável. Mais uma vez, leia o artigo de Ken Thompson ; então você também pode ler o contraponto de David Wheeler , talvez melhor apreendido através de Bruce Schneier blog artigo .

    
por 14.11.2010 / 22:42
7

Se bem entendi "trojan" descrito neste artigo não pode ser descoberto de forma "normal" como malware "normal". Este IRCd estava se comportando normalmente até que ele fosse usado, então o administrador poderia encontrar essa falha de segurança apenas quando: 1) fosse usado e a ação feita por este buraco causasse entrada nos logs ou fosse visível de alguma outra forma, 2) lendo o código fonte. / p>

O malware "Real" do Linux também deve ser detectado pelo software AV para Linux ou AV LiveCD Rescue Disks, para que você possa verificar o computador usando este software. Como você pode ver em SecureList na lista, há 1941 entradas com o Linux no nome e que o software deve ser detectado pelo software Kaspersky. Um rápido olhar para esta lista mostra que muitas entradas são sobre algumas ferramentas DDoS e explorações ou ferramentas que não podem se espalhar automaticamente e podem ser usadas apenas como ferramentas de ataque (portanto, não são prejudiciais).

Para verificar se há backdoors / rootkits instalados pelo cracker, você pode usar uma ferramenta que verifica as somas de verificação dos arquivos (você deve gerar uma lista de arquivos e somas de verificação no sistema limpo e atualizá-lo após a atualização do software do servidor). Todo novo arquivo ou arquivo com checksum errado é suspeito. A lista de soma de verificação e a ferramenta que a geram devem estar em meio somente de leitura (o cracker também pode mudar, por exemplo, md5sum para sua própria versão que mostra somas de verificação erradas). Essa maneira de encontrar malware pode ser usada em sistemas "estáveis", nos quais o software não é atualizado todos os dias.

Algum malware pode ser detectado executando netstat localmente para verificar o tráfego de rede, mas se o sistema estiver infectado, os dados mostrados por netstat também poderão ser alterados. Nesse caso, alguma solução é monitorar o tráfego de rede de outro computador (por exemplo, do roteador, para verificar qual tráfego é enviado à Internet).

    
por 14.11.2010 / 22:39
4

SELinux e AppArmor existem para prevenção de trojan / rootkit e outras infecções. Eu conto o caso do SELinux, que eu conheço melhor. Com o SELinux ativado, você fornece um contexto para todo o processo (daemon incluído) instalado na máquina. Você também rotula o sistema de arquivos para trabalhar com o contexto, combinando-os. Quando um processo tenta fazer algo que não está dentro de seu contexto, você recebe uma mensagem e, se o SELinux estiver em modo enforcing, a ação não poderá ser concluída. Desta forma, se o seu trojan ircd estivesse disposto a sobrescrever o comando ps ou algo mais (estratégia comum para trojans / rootkits / worms para evitar a detecção), eu não teria permissão para fazer isso. E você seria informado.
Eu sei que é difícil de configurar, mas minhas máquinas estão trabalhando com o SELinux agora, e meus (dois) laptops Fedora podem fazer qualquer coisa que um desktop precise sem muito trabalho. Até meu servidor doméstico agora está no modo de execução.
Outra estratégia é a execução regular de detectores de rootkit, que calculam uma soma de verificação para os comandos circulares e informam sobre alterações nos comandos básicos. Eu trabalho com o SELinux e com o rkhunter habilitado (mais um antivírus clamav).

Atenciosamente

    
por 21.11.2010 / 23:02
2

Outra resposta afirmou que "hiders" (malware invisível) tem uma vantagem intrínseca sobre "detectores". Discordo. Isso é verdade se você se limitar a abordagens de detecção que dependem de assinaturas ou heurísticas para detectar malware. Mas há outra maneira de detectar malware: verificar os produtos conhecidos. Tripwire, AIDE, etc. podem verificar arquivos no disco. O Segundo exame pode verificar o kernel e os processos em execução. O Second Look usa a análise forense de memória para inspecionar diretamente o sistema operacional, os serviços ativos e os aplicativos. Ele compara o código na memória com o que foi lançado pelo fornecedor de distribuição do Linux. Desta forma, ele pode identificar imediatamente modificações maliciosas feitas por rootkits e backdoors, e programas não autorizados que estão sendo executados (trojans, etc.).

(Divulgação: Eu sou o desenvolvedor líder do Second Look.)

    
por 24.07.2012 / 20:31