ti-enxame.com

Como detectar e remover um trojan Linux?

Recentemente (re) deparei com isto:

Sim, eu sei que adicionar algum PPA/software aleatório de uma fonte não confiável está pedindo problemas (ou pior). Eu nunca faço isso, mas muitos fazem (muitos blogs e tabloides do Linux promovem a adição de PPAs para aplicativos sofisticados, sem avisar que isso 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?

16
iamsid

Não existe uma receita geral. Se o seu sistema foi infectado por um cavalo de Tróia desconhecido, tudo o que você pode fazer é reinstalar.

Se você sabe que o trojan opera de uma determinada maneira - por exemplo, você sabe que o trojan não infecta o kernel - pode haver uma maneira menos dura de recuperação. Mas isso depende inteiramente de saber como o trojan se comporta. Se tudo o 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 inteligente que o criador de trojan (e sorte). No que diz respeito aos cavalos de Tróia, detecção e ocultação são como armas e armaduras: há uma escalada tecnológica e nenhuma das partes tem uma vantagem intrínseca (embora os esconderijos tenham uma vantagem inicial).

Muitos sistemas possuem um canal de distribuição seguro instalado. Por exemplo, quando você instala um pacote dos repositórios do Ubuntu com as ferramentas baseadas em apt (apt-get, aptitude, synaptic, centro de software, ...), a ferramenta verifica se o pacote foi assinado (verificado) por alguém de confiança do Ubuntu. (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 verificou o pacote, o que não ajuda se você não tiver nenhuma razão para confiar no proprietário do PPA em primeiro lugar.

Sobre trojans e backdoors, recomendo fortemente a leitura de Ken Thompson palestra sobre o prêmio Turing, Reflexões sobre confiança em confiança . Para resumir, ele mudou o compilador para que, ao compilar o programa de login, fosse adicionado o código que lhe permitia fazer o login com uma senha secreta; em seguida, ele mudou o compilador para que, quando se compilasse, ele inserisse o código para adicionar a porta dos fundos; 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. Novamente, leia artigo de Ken Thompson ; então você também pode ler contraponto de David Wheeler , talvez melhor apreendido através de Bruce Schneierartigo do blog .

20

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

O malware "real" do Linux também deve ser detectado pelo software AV para Linux ou AV LiveCD Rescue Disks, para que você possa examinar o computador usando este software. Como você pode ver em SecureList na lista, há 1941 entradas com Linux no nome e esse software deve ser detectado pelo software Kaspersky. Uma olhada rápida nesta 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 para ataque (portanto, não são prejudiciais).

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

Alguns malwares podem ser detectados executando netstat localmente para verificar o tráfego de rede, mas se o sistema estiver infectado, os dados mostrados por netstat também podem 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 para a internet).

7
pbm

O SELinux e o AppArmor existem para a prevenção de trojan/rootkit e outras infecções. Conto o caso do SELinux, que conheço melhor. Com o SELinux habilitado, você fornece um contexto para todo o processo (daemon incluído) que você instala na máquina. Você também rotula o sistema de arquivos para trabalhar com o contexto, correspondendo-os. Quando um processo tenta fazer algo fora de seu contexto, você recebe uma mensagem e, se o SELinux estiver no modo forçado, a ação não poderá ser concluída.
Desta forma, se o seu cavalo de troia ircd estivesse disposto a sobrescrever o comando ps ou outra coisa (estratégia comum para cavalos de tróia/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 SELinux reforçado agora, e meus (dois) laptops Fedora podem fazer qualquer coisa que um desktop precisa sem muito incômodo.
Até meu servidor doméstico agora está no modo de aplicação.
Outra estratégia é uma execução regular de detectores de rootkit que calculam uma soma de verificação para os comandos cirtical e informam sobre as mudanças nos comandos básicos.
Eu trabalho com o SELinux e o rkhunter habilitados (além de um antivírus clamav).

Saudações

4
lucabotti

Outra resposta afirmou que "hiders" (malware furtivo) têm uma vantagem intrínseca sobre os "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 produtos conhecidos. Tripwire, AIDE, etc. podem verificar os arquivos no disco. Second Look pode verificar o kernel e os processos em execução. O Second Look usa 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 da distribuição Linux. Dessa forma, ele pode localizar imediatamente modificações maliciosas feitas por rootkits e backdoors, e programas não autorizados em execução (cavalos de troia, etc.).

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

2
Andrew Tappert