vendredi 22 mars 2013

Les virus sous Linux


Le sujet des virus sous Linux n est pas nouveau. Les premiers virus apparus modifiaient la structure ELF des binaires mais présentaient une faible propagation. Aujourd´hui les virus sous Unix ont suivi l´évolution des systèmes Linux et sont beaucoup plus efficaces : propagation avec de simples permissions utilisateurs, aucune utilisation de l´assembleur, virus multi-plateformes.


AVANT DE RENTRER dans le vif du sujet, précisons quelques points. Tout d´abord, nous définissons un virus comme étant une suite d´instructions dont l´objectif est de se reproduire, et rien que cela. II ne dispose pas d´un moyen pour se déplacer tout seul, à la différence d´un ver, et doit donc parasiter des fichiers pour se déplacer et survivre. Beaucoup d´utilisateurs pensent que les virus sous Linux n´existent pas, simplement du fait qu´il existe une notion de permissions et de droits utilisateurs sur ces systèmes. Peut-être que cette introduction aux virus sous Linux leurs fera changer d´avis.



Les premiers virus sous Linux

Les premières recherches pour implanter un virus dans le monde Linux sont en fait des transpositions de ce qui se fait dans le monde Microsoft. En particulier, les programmes constituent le vecteur principal. Sous Linux, les binaires utilisent le format ELF (et le format a.out il y a très longtemps). Ce format est bien plus complexe que le format PE de Microsoft, rendant son infection plus compliquée mais pas impossible.

Différents articles de Silvio Cesare au sujet des virus ELF ont vu le jour peu avant les années 2000. Ces premiers virus injectaient par exemple du code dans le padding du segment .text et redirigeaient le point d´entrée (ou entry point) du programme vers ce code. Mais pour qu´un virus soit efficace, il doit pouvoir se propager facilement (mais pas trop rapidement pour avoir de bonnes chances de survie). La propagation d´un virus se divise en fait en deux parties :

Une fois sur une machine donnée, le virus cherche à se répliquer localement pour éviter de disparaître; une fois une machine hôte infectée, le virus cherche éventuellement à se répliquer sur une autre cible en contaminant des fichiers susceptibles d´être transfé¬rés sur d´autres hôtes.

Avec les virus ELF, la réplication locale est tout à fait envisageable : le binaire infecté fait une recherche des binaires ELF présents sur le système et les infectent (mettons de côté les problèmes de visibilité). La réplication sur une autre machine est beaucoup plus difficile. Même s´il est assez rare que des utilisateurs de Linux n´utilisent pas de binaires, il est par contre moins courant qu´il y ait des transferts de binaires entre machines sur un même réseau.

Les virus dans les packages

Les packages sont en fait un moyen simple et efficace de propager un virus sous Linux que ce soit localement ou entre systèmes. Les distributions actuelles s´appuient toutes sur ce mécanisme, qu´il s´agisse de fichiers .rpm ou .deb (pour les deux plus grandes classes de packages).

De manière générale, un package se décompose en plusieurs parties : un script de pré-installation, l´installation des nouveaux fichiers,, puis un script de post-installation. Nous ne détaillerons pas la structure exacte d´un package et la forme que prendra le virus. Supposons simplement que le virus est un script quelque part dans le package et intéressons nous à sa propagation. Lorsqu´une personne récupère un package, c´est souvent pour l´installer au moins sur le poste local, sinon sur tout un réseau. En supposant que le package soit infecté, son installation déclenche la propagation du virus. L´installation est réalisée avec les privilèges root (c´est sans aucun doute la situation la plus courante). Le virus dispose des mêmes privilèges, ce qui est le cas le plus favorable pour assurer sa survie. Il n´a alors qu´à rechercher tous les packages présents sur le système, et à se répliquer à l´intérieur, sans se poser la question des permissions sur les fichiers.

Pour se propager sur d´autres hôtes, c´est tout aussi simple. Si l´administrateur de la machine doit effectuer une mise à jour de plusieurs systèmes, de manière générale il récupère les packages une seule fois et les copie ensuite sur les autres systèmes dont il s´occupe, ou bien transforme cet hôte en serveur miroir auquel toutes ses machines se réfèrent pour les mises à jour. Il suffit de contaminer un seul package pour que le virus voyage d´hôte en hôte lorsque les packages sont utilisés sur d´autres hôtes du réseau.

Ce type de virus fonctionnait efficacement il y a quelques années. Mais la plupart des distributions ont mis en place un système de signatures permettant de vérifier l´intégrité des packages et de détecter toutes modifications dans celui-ci. Le concept de virus via les packages des distributions est donc beaucoup plus difficile aujourd´hui.

Les virus multi plates-formes

Au fur et à mesure de mises en place de solutions de sécurité sur les systèmes, certains concepts de virus ont été rendus plus difficiles mais de nouveaux sont apparus et finalement beaucoup plus dangereux que les précédents. Dangereux d´une part parce que ces virus ne dépendent d´aucun système d´exploitation et d´autres part parce qu´il existe de nombreux vecteurs de propagation existants. Faites une liste du nombre d´applications utilisées à la fois sur les systèmes Linux ou Windows et regardez les points communs de ces applications entre ces deux systèmes...

L´idée n´est de loin pas nouvelle. Plusieurs personnes ont déjà fait l´essai avec plus ou moins de succès. Le plus connu est Win32/Linux.Winux (ou W32/Lindose[ créé par Benny du 29A (winux). Il recherche les exécutables Windows et ELF dans le répertoire courant et dans ses répertoires parents. Selon qu´il trouve un exécutable PE ou un exécutable ELF, il effectue une action différente. En fait, il est possible de lire d´après les sources du virus (winux) que le code est scindé en deux parties avec 4 routines d´infection: Windows sous Windows, Linux sous Windows, Windows sous Linux, Linux sous Linux.

Les virus Open Office

Le sujet n´est plus nouveau. Cette suite bureautique est disponible sur plusieurs systèmes d´exploitation dont Windows et Linux. Il suffit alors d´étudier le format de document qu´elle utilise, de trouver des moyens d´exécuter des commandes sur le système hôte (pour la charge virale) à travers ce format et vous avez votre premier virus multi plates-formes fonctionnel. Eric Filiol et ses acolytes ont étudié de long en large (mais il y a certainement encore à faire) le moyen d´écrire un virus OpenOffice et plusieurs documents ont été publiés (openoffice).

En résumé, la suite bureautique OpenOffice ne détient aucun véritable concept de sécurité. Elle fournit un système de macros très évolués mais sans aucun mécanisme réel de protection sur ces macros. L´histoire se répète, les concepts de macro-virus sur Microsoft Office peuvent être reproduit sur OpenOffice avec succès.

Les virus dans les extensions Mozilla

Comme OpenOffice, Firefox et Thunderbird sont dispo¬nibles sur plusieurs systèmes y compris Linux et Windows. Et comme OpenOffice, il y a un point commun entre chaque système, ce sont les extensions (ou add-ons). Installer une extension dans Thunderbird ou Firefox est à la portée de n´importe quel utilisateur. Aucune véritable vérification de l´intégrité de l´extension n´est effectuée. Même si un message de confirmation est demandé à l´installation de l´extension, il est fort probable que l´utilisateur lambda l´installe malgré tout. Pire. Le site http://addons.mozilla.org propose d´héberger vos extensions gratuitement. Elles seront conservées sur le site miroir de Mozilla pour en garantir la disponibilité de téléchargement. C´est un moyen supplémentaire pour le même utilisateur lambda d´avoir une totale confiance dans l´extension qu´il installe ... puisqu´elle provient de chez Mozilla.

Pour se propager localement, c´est assez similaire à celle des virus dans les packages, à la seule différence que les droits root ne sont pas nécessaires. N´importe quel utilisateur d´un système a les permissions d´installer une extension Thunderbird pour son propre usage. La propagation du virus a lieu au moment non pas de l´installation de l´extension mais de son utilisation, à l´aide du code inséré dans l´extension. Ce code peut alors déterminer les extensions corruptibles présentes sur le système, c´est-à-dire d´autres extensions, mais qui ne sont pas encore infectées. Il y a de bonnes chances pour qu´il y en ait d´autres dans le répertoire personnel de l´utilisateur. Les extensions déjà installées peuvent elles aussi être infectées de manière à augmenter les chances de propagation du virus.

Pour une propagation sur d´autres machines, c´est aussi simple. Si une extension doit être installée sur tous les postes utilisateurs par exemple (pour offrir la même fonctionnalité à chacun), la personne en charge de l´installation récupère de manière générale l´extension une seule fois et la copie ensuite sur les autres systèmes dont elle s´occupe. Il suffit de contaminer une seule extension pour que le virus voyage d´hôte en hôte lorsque les extensions sont utilisées ailleurs sur le réseau.

Ce bref article est une "mise en bouche" des concepts possibles de virus sous Linux. Nous n´avons pas abordé les notions de persistances et de visibilité. Quoi qu´il en soit, nous nous apercevons que les outils mutli-plates-formes facilitent certes leurs déploiements et leurs administrations au sein des systèmes d´information des entreprises mais là aussi au prix de la sécurité.

0 Commentaire:

Enregistrer un commentaire

 
;