Comment détecter et supprimer un cheval de Troie Linux?


16

J'ai récemment (re) trébuché sur ceci:

Oui, je sais que l'ajout de PPA / logiciels aléatoires à partir d'une source non fiable pose des problèmes (ou pire). Je ne fais jamais ça, mais beaucoup le font (de nombreux blogs et tabloïds Linux promeuvent l'ajout de PPA pour des applications sophistiquées, sans avertir que cela peut casser votre système ou pire encore, compromettre votre sécurité.)

Comment détecter et supprimer un cheval de Troie ou une application / un script escroc?


J'ai posé la même question (3 minutes après avoir posé la question ici) sur: askubuntu.com/questions/13265/… Faites-moi savoir s'il s'agit d'une violation, je vais en supprimer une.
iamsid

Réponses:


20

Il n'y a pas de recette générale. Si votre système a été infecté par un cheval de Troie inconnu, tout ce que vous pouvez faire est de réinstaller.

Si vous savez que le cheval de Troie fonctionne d'une certaine manière - par exemple, vous savez que le cheval de Troie n'infecte pas le noyau - il peut y avoir un moyen moins dur de récupérer. Mais cela dépend entièrement de savoir comment se comporte le cheval de Troie. Si tout ce que vous avez est les symptômes (tels que votre ordinateur envoie du spam sans votre consentement), il n'y a pas de technique générale: le détecteur de cheval de Troie doit être plus intelligent que le concepteur de cheval de Troie (et chanceux). En ce qui concerne les chevaux de Troie, la détection et la dissimulation sont comme des armes à feu et des armures: il y a une escalade technologique, et aucune des parties n'a un avantage intrinsèque (bien que les cacheurs aient une longueur d'avance).

De nombreux systèmes disposent d'un canal de distribution sécurisé. Par exemple, lorsque vous installez un package à partir des référentiels Ubuntu avec les outils apt-based (apt-get, aptitude, synaptic, software center,…), l'outil vérifie que le package est signé (vérifié) par une personne de confiance d'Ubuntu. (La plupart des distributions ont un mécanisme similaire.) Lorsque vous installez un package à partir d'un PPA, tout ce que vous pouvez savoir, c'est que le propriétaire du PPA a vérifié le package, ce qui n'est d'aucune aide si vous n'avez aucune raison de faire confiance au propriétaire du PPA en premier lieu.

À propos des chevaux de Troie et des portes dérobées, je recommande fortement de lire la conférence du prix Turing de Ken Thompson , Reflections on Trusting Trust . Pour résumer, il a changé le compilateur pour que lors de la compilation du programme de connexion, il ajoute du code qui lui permet de se connecter avec un mot de passe secret; puis il a changé le compilateur pour que quand il se compilerait, il insérerait le code pour ajouter la porte dérobée; puis il a recompilé l'ensemble du système (en particulier le programme de connexion et le compilateur); enfin, il a restauré la source du compilateur à la source d'origine, incontestable. Encore une fois, lisez l'article de Ken Thompson ; alors vous pouvez également lire le contrepoint de David Wheeler , peut-être mieux appréhendé à travers l' article de blog de Bruce Schneier .


+1 pour la réponse descriptive et pour recommander ces articles: ils ont élargi mes connaissances. Je vous remercie.
iamsid

7

Si je comprends bien, le «cheval de Troie» décrit dans cet article ne peut pas être découvert de manière «normale» comme un logiciel malveillant «normal». Cet IRCd se comportait normalement jusqu'à ce qu'il soit utilisé, donc l'administrateur ne pouvait trouver ce trou de sécurité que lorsque: 1) il était utilisé et l'action effectuée par ce trou provoquait une entrée dans les journaux ou était visible d'une autre manière, 2) la lecture du code source.

Les "vrais" logiciels malveillants Linux devraient également être détectés par le logiciel AV pour Linux ou les disques de secours AV LiveCD, afin que vous puissiez analyser l'ordinateur à l'aide de ce logiciel. Comme vous pouvez le voir dans SecureList dans la liste, il y a 1941 entrées avec Linux dans le nom et ce logiciel doit être détecté par le logiciel Kaspersky. Un examen rapide de cette liste montre que de nombreuses entrées concernent des outils DDoS et des exploits ou des outils qui ne peuvent pas se propager automatiquement et ne peuvent être utilisés que comme outils d'attaque (donc ne sont pas dangereux).

Pour vérifier les backdoors / rootkits installés par cracker, vous pouvez utiliser un outil qui vérifie les sommes de contrôle des fichiers (vous devez générer la liste des fichiers et des sommes de contrôle sur un système propre et la mettre à jour après la mise à jour du logiciel du serveur). Chaque nouveau fichier ou fichier avec une mauvaise somme de contrôle est suspect. La liste de contrôle et l'outil qui le génère doivent être sur un support en lecture seule (le pirate peut également changer par exemple md5sum pour sa propre version qui affiche des totaux de contrôle incorrects). Cette façon de trouver des logiciels malveillants pourrait être utilisée sur des systèmes «stables» où les logiciels ne sont pas mis à jour quotidiennement.

Certains logiciels malveillants peuvent être détectés en s'exécutant netstatlocalement pour vérifier le trafic réseau, mais si le système est infecté, les données affichées par netstatpeuvent également être modifiées. Dans ce cas, une solution consiste à surveiller le trafic réseau à partir d'un autre ordinateur (par exemple à partir d'un routeur, pour vérifier quel trafic est envoyé à Internet).


4

SELinux et AppArmor existent pour la prévention des chevaux de Troie / rootkit et d'autres infections. Je raconte le cas de SELinux, que je connais mieux. Avec SELinux activé, vous donnez un contexte à tous les processus (démon inclus) que vous installez sur la machine. Vous étiquetez également le système de fichiers pour qu'il fonctionne avec le contexte, en les faisant correspondre. Lorsqu'un processus essaie de faire quelque chose qui n'est pas dans son contexte, vous recevez un message et, si SELinux est en mode d'application, l'action ne peut pas se terminer.
De cette façon, si votre cheval de Troie ircd était disposé à remplacer la commande ps ou autre chose (stratégie courante pour les chevaux de Troie / rootkits / vers pour éviter la détection), je ne serais pas autorisé à le faire. Et vous en seriez informé.
Je sais qu'il est difficile à configurer, mais mes machines fonctionnent actuellement avec SELinux et mes (deux) ordinateurs portables Fedora peuvent faire tout ce dont un ordinateur de bureau a besoin sans trop de tracas.
Même mon serveur domestique est maintenant en mode d'application.
Une autre stratégie consiste à exécuter régulièrement des détecteurs rootkit qui calculent une somme de contrôle pour les commandes cirtical et vous informent des changements dans les commandes de base.
Je travaille avec le SELinux et le rkhunter activé (plus un antivirus clamav).

Cordialement


2

Une autre réponse a affirmé que les "cacheurs" (logiciels malveillants furtifs) ont un avantage intrinsèque sur les "détecteurs". Je ne suis pas d'accord. Cela est vrai si vous vous limitez aux approches de détection qui reposent sur des signatures ou des heuristiques pour détecter les logiciels malveillants. Mais il existe un autre moyen de détecter les logiciels malveillants: vérifier les marchandises connues. Tripwire, AIDE, etc. peuvent vérifier les fichiers sur le disque. Second Look peut vérifier le noyau et les processus en cours d'exécution. Second Look utilise la criminalistique de la mémoire pour inspecter directement le système d'exploitation, les services actifs et les applications. Il compare le code en mémoire à ce qui a été publié par le fournisseur de distribution Linux. De cette façon, il peut identifier immédiatement les modifications malveillantes apportées par les rootkits et les backdoors, et les programmes non autorisés en cours d'exécution (chevaux de Troie, etc.).

(Divulgation: je suis le développeur principal de Second Look.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.