Alternative Micro Système




Les formats graphiques
Construire un site Web
Protocoles de messagerie
Le protocoles FTP
Le dessin vectoriel
Cours de Basic
Retouche d'images
Le langage XML
Les associations
Le E-commerce
Les virus
La compression
Les cookies
Trouver un job
La comptabilité
Comprendre la paie

Comprendre l'informatique

Les virus

Bref historique

Les Grands Anciens
Avant même que des ordinateurs soient construits, il a fallu les penser. C'est, en partie, l'oeuvre du mathématicien John von Neumann, qui dans sa célèbre Théorie générale et logique des automates de 1948 s'interroge sur la théorie des automates de calcul (1936) d'un autre mathématicien de génie Alan Turing. Une machine de Turing est un automate de cacul, l'ancêtre de l'ordinateur. En ligne, cf. Histoire de l'informatique.
Von Neumann interprète ainsi le théorème concernant l'autoreproduction des automates : un automate A, auquel on fournit la description de n'importe quel automate en termes de fonctions appropriées (une instruction notée I), construit cette entité. un automate B qui peut faire une copie de n'importe quelle instruction I qui lui est fournie un mécanisme de contrôle C : A construit l'automate décrit par l'instruction I, B copie l'instruction I et l'insère dans l'automate qui vient d'être construit par A. Soit D = A+B+C. Afin de fonctionner l'ensemble D doit disposer d'une instruction I. E est le résultat de l'insertion de Id dans A à l'intérieur de D.
«Il est clair que E est autoreproducteur. Remarquez qu'il n'y a pas de cercle vicieux. L'étape décisive se situe dans E, quand l'instruction Id, décrivant D, est construite et incorporée à D. Quand la construction (la copie) de Id se produit, D existe déjà, et n'est en aucune manière modifiée par la construction de Id. Id est simplement ajouté pour former E. D et Id doivent ainsi être formés dans un ordre chronologique et logique défini, et le processus est légitime et correct selon les règles de la logique.»

«La description de l'automate E a d'autres avantages, que je ne développerai pas ici. Mais par exemple, il est clair que l'instruction Id a, en gros, les fonctions d'un gène. Il est clair également que le mécanisme de duplication B effectue l'acte fondamental de la reproduction, la copie du matériau génétique, qui est l'opération fondamentale de la multiplication des cellules vivantes. De même, il est facile de voir comment des modifications arbitraires du système E, et en particulier de Id, peuvent avoir pour conséquence des traits caractéristiques qui apparaissent dans le cadre de mutations, fatales en règle générale, mais avec une possibilité exceptionnelle de continuation de la reproduction avec des traits modifiés. Bien sûr, on voit clairement aussi où s'arrête l'analogie. Le gène naturel ne contient probablement pas la description complète de l'objet dont il stimule la construction. Il ne contient probablement que des pointeurs généraux, des indicateurs.»

Plus près de nous
Quand son ordinateur est infecté par un virus, que le disque dur est plus vérolé qu'une pute de Caracas, que chaque séquence de boot tourne au cauchemar (Warning : 78451 fichiers infectés !), puis que le BIOS est flashé, il est toujours bon de savoir à qui l'on doit ce merveilleux plaisir. Comme d'habitude, les responsables sont trois jeunes informaticiens du laboratoire Bell de la société AT&T, qui dans les années 60, au lieu d'amener leurs petites amies au cinéma pour manger du pop-corn, ont créé un jeu : Core War.

Le principe de ce jeu est simple : chaque joueur écrit un programme court, qui va être chargé en mémoire vive. Le système d'exploitation est multitâche, il permet de faire fonctionner plusieurs programmes simultanément.

Le but est de détruire le programme de l'adversaire et d'assurer sa propre survie. Pour cela, les programmes sont capables de se recopier, de se déplacer, de se réparer eux-mêmes, etc. La partie est donc terminée lorsque l'un des joueurs a perdu tous ses programmes ; par exemple ils ont été modifiés au point d'être rendus inactifs.
Les instructions mises en oeuvre pour ce jeu sont traduites dans un langage assembleur conçu pour l'occasion, le Red Code, qui est exécuté par l'intermédiaire d'une machine simulée (qui s'appelle MARS).
Un langage Assembleur est une version un peu humanisée du langage machine (celui du processeur) car il permet d'utiliser des mnémoniques en lieu et place du code binaire


Red Code

Core War contient donc en lui-même tout le principe de la programmation des virus : des programmes auto-reproducteurs capables de se déplacer au sein de la mémoire, d'analyser l'environnement et de détruire d'autres programmes. En 1984 A.K. Dewdney publiera un article dans le Scientific American qui fera date : « Computer recreations : In the Game called Core War hostile programs engage in a battle of bits », puisqu'il offre une publicité à cette démarche créative et ludique : la fabrication de virus.

Typologie

On a vu que l'ancêtre en quelque sorte du virus informatique est un petit programme qui a pour but déterminé d'assurer sa survie, rejoignant ici le vivant marqué par le conatus (le désir de persévérer dans son être). Oui mais qu'en est-il plus précisément des virus, des vers, des troyens, des bombes logiques et de la couche d'Ozone ? Windows est-il un giga-virus ? Faut-il supprimer kernel32.dll comme me le propose sur le mode de la révélation et d'un mail alarmant (mais plein de faconde méridionale) mon cousin de Toulouse ?

Définitions et généralités
Classiquement, le virus est un petit programme capable de se recopier dans un autre programme, qu'on appelle le programme hôte. Il l'infecte, c'est-à-dire duplique son code dans le fichier cible.
Ce petit programme peut contenir ou non une bombe logique, c'est-à-dire des instructions qui déclencheront une application néfaste pour le système (suppression de fichiers ou crash généralisé à telle date par exemple). Si la bombe est immédiate, le virus sera repéré tout de suite et donc limite ses chances de survie. C'est pourquoi, l'activation de cette bombe est généralement différée et discrète (un petit fichier par ci par là de temps en temps).
Le virus qui infecte les programmes a donc de manière générale « un cycle de vie » divisé en trois étapes plus ou moins espacées :

1/ La contamination, phase d'exécution du virus dans la mémoire vive (RAM), à ne pas confondre avec la réception du fichier contaminé, contenant un virus. Petite distinction classique et simplifiée entre deux types de mémoire : la mémoire vive ou RAM (Random Access Memory) où les applications sont exécutées la mémoire morte ou ROM (Read-Only Memory) qui est la mémoire de stockage.
Un programme infecté ou un virus peut parfaitement être copié à partir d'une disquette, d'un CD ou téléchargé en toute sécurité. Tant que le programme infecté ou le virus n'est pas lancé, cest-à-dire l'application infectée placée en mémoire vive, mais qu'elle reste à l'état de fichier écrit sur le support de stockage, un disque dur par exemple, tout baigne Nicolas. On peut prendre l'image d'un porteur sain d'un virus biologique par opposition à celui qui développe la maladie virale. Image relativement inadéquate car le porteur sain est bien contaminé et vecteur de contamination même s'il n'est pas encore malade.
Cependant, il faut bien que l'on puisse fabriquer sans se contaminer, car un créateur de virus contrairement aux apparences ne souhaite pas véroler sa propre machine, et on le comprend.

2/ La propagation du virus. De manière simplifiée, disons qu'il se recopie dans une zone de la mémoire vive séparée du programme hôte, de sorte qu'il peut rester actif même lorsque l'utilisateur ferme l'application infectée. Le virus va donc pouvoir infecter toutes les autres applications qui vont être lancées par l'utilisateur (ou d'autres qui sont simplement présentes sur le disque dur, cela dépend du virus). Une fois l'ordinateur éteint, et bien plus rien ne se passe. A la prochaine utilisation, à chaque programme infecté lancé, la même manoeuvre se répète, de telle sorte qu'il arrive un moment où toutes les applications sont infectées.

3/ Étape finale « plus si affinités » durant laquelle le virus maintenant présent à N exemplaires, met en oeuvre des fonctions destructrices. (NB. Nous n'avons parlé ici de manière simplifiée que des virus qui contaminent les programmes exécutables, et pas des virus de secteur de démarrage et des virus de macros.)

Ver et troyen

Un ver quant à lui est un programme qui peut s'auto-reproduire et se déplacer à travers un réseau en en utilisant les mécanismes (les emails par exemple) ; on peut donc dire que le ver est un virus réseau, par opposition au bon vieux virus d'antan qui infectait des programmes qui voyageaient par disquettes.
Le Cheval de troie (ou troyen ou trojan) est une référence à la fin de la guerre de Troie, et à sa chute, telles que nous les raconte Virgile dans l'Enéide, II, v. 13-20. Chacun connaît le stratagème : les Grecs ont fait construire un énorme cheval de bois qu'ils laissent sur le rivage, et feignent de regagner leur pays. En fait les vaisseaux grecs se dissimulent derrière une île proche de Troie (Ténédos) et dans le cheval se sont dissimulés plusieurs chefs grecs, dont Ulysse (le rusé). Un traître incite les Troyens à faire entrer le cheval, qui est prétendument une offrande à Pallas Athéna, dans la ville. La nuit venue les guerriers en sortent, ouvrent les portes de la ville à leurs compatriotes revenus discrètement. Troie est prise, saccagée, puis brûlée, car on savait rire en ce temps là.
Par contre, on connaît moins la mise en garde du prêtre d'Apollon, fraîchement promu prêtre de Neptune, notre ami Laocoon. Restituons son avertissement :

« Malheureux citoyens, quelle est votre démence ? Croyez-vous les ennemis partis ? Pensez-vous qu'il puisse y avoir une offrande des Grecs sans quelque traîtrise ? Est-ce ainsi que vous connaissez Ulysse ? Ou des Achéens se sont enfermés et cachés dans ce bois, ou c'est une machine fabriquée contre nos murs pour observer nos maisons, et pour être poussée d'en haut sur notre ville, ou elle recèle quelque autre piège. Ne vous fiez pas à ce cheval, Troyens. Quoi qu'il en soit, je crains les Grecs, même dans leurs offrandes aux dieux ! » (II, v.41-49)

En paraphrasant de manière horrible, presque sacrilège : Malheureux internaute, es-tu dément ? Crois-tu que le programme attaché au mail que tu viens de recevoir, funnysex.exe, est vraiment fun et à exécuter immédiatement sur ton ordinateur ?
Le cheval de Troie en informatique va donc désigner le programme anodin, qui tel un oeuf Kinder contient une jolie surprise : les guerriers qui vont dévaster la ville, c'est-à-dire les applications qui vont détruire des fichiers, voire le système, ou bien la machine pour observer et pénétrer dans la ville (le beffroi), c'est-à-dire la porte dérobée (backdoor) qui permet à l'intrus par exemple d'observer le contenu du disque dur et de prendre le contrôle du système quand l'ordinateur est connecté à Internet. Généralement en exploitant des failles de sécurité propres aux logiciels et au système d'exploitation installés.

Stratégies

Le but déterminé d'un virus est de se multiplier, car le but de son créateur est en général la notoriété. Ce qui n'est pas pathologique : comme tout géniteur, il a envie que son rejeton réussisse. Il lui faut donc toujours métaphoriquement à ce virus, afin d'assurer sa survie, trouver des supports qui vont être eux-mêmes dupliqués (des programmes populaires, c'est-à-dire utilisés par un grand nombre de personnes), et un milieu de propagation également homogène.
Un système d'exploitation très répandu s'appelle Windows(™), une pratique très répandue se nomme le courrier électronique et un logiciel de messagerie très répandue répond au doux nom d'Outlook Express(™). Si je suis un programmateur de virus, et que je veux assurer une large diffusion à ma création, je vais donc cibler la pièce jointe à un mail pour les utilisateurs clients des produits Microsoft(™). En plus Microsoft(™) c'est le mal, et Billou l'antéchrist, donc c'est tout bénéf.

Il n'est pas question ici de rentrer dans l'épineuse question de savoir s'il s'agit de mauvais produits, d'une sécurité calamiteuse... Ils sont le standard nécessaire (quel intérêt à programmer de nos jours un virus pour Atari ST ?). Il y a ainsi plus de virus pour et sur les PC que pour Mac, tout simplement parce que seuls quelques rares nostalgiques passéistes amateurs d'antiquités hors de prix, à moitié pervers, utilisent des produits Machinchose. Illustration en quelque sorte de la barrière des espèces, puisqu'un virus conçu typiquement pour un PC sous Windows laisse le machin avec une pomme faire coin-coin comme d'habitude. Le plus simple est d'écrire le code, de le compiler pour obtenir un fichier exécutable sous Windows, dont la terminaison est par exemple : *.exe, *.com. (cf. « bibliothèque de tutorial : Qu'est ce que vous voulez coder aujourd'hui ? », par UnKm). Nommer le fichier non pas virus_qui_te_nike_ton_computer.exe, mais de préférence jetekiffetropgrave.exe. Pour le diffuser, le proposer en download n'est pas la meilleure tactique, mieux vaut l'envoyer par mail, la taille en ko le permet tout à fait, avec une jolie pochette : « Hi ! How are you ? Look at this, it's funny ! ;-) ».

Notez qu'il suffit d'un utilisateur pour lancer le programme pour, sur le modèle de la pyramide, assurer la diffusion. Le mode opératoire est généralement le suivant : le programme, une fois lancé, s'expédie automatiquement à de nouvelles victimes potentielles grâce au carnet d'adresses (l'indexation automatique des adresses emails de tous les correspondants dans Outlook lui facilite la tâche). N'oublions pas que son but est de se mutiplier. Or, comme tout parasite, il doit se servir de l'hôte mais pas s'y limiter, ce sans quoi il disparaît définitivement, lorsque l'utilisateur se rend compte que son ordinateur ne répond plus du tout et commence à l'attaquer à la hache.

L'avantage de cette tactique est que le destinataire du mail infecté ouvrira les yeux fermés la fameuse pièce jointe, en ricanant : «je sais bien qu'il ne faut pas ouvrir les pièces jointes de n'importe qui, ni télécharger des programmes sur des sites pirates car peuvent s'y dissimuler des virus, mais là c'est dudule qui m'écrit, et dudule c'est un super pote à qui je fais confiance». Or bien sûr, Dudule ne sait même pas qu'il a envoyé un mail contenant un virus à son pote.

De plus avec les nouveaux vers, ce n'est même plus l'ordinateur ou le véritable compte mail de Dudule qui envoie le courrier, mais simplement quelqu'un d'infecté qui possède l'adresse électronique de dudule, par exemple dans son carnet d'adresses (dudule@aol-winners.com). Ainsi, le ver Klez possède son propre serveur SMPT. Le SMTP (Simple Mail Transfer Protocol) est le protocole de transfert de courrier. Grâce à ce dispositif, le ver Klez est capable de composer un courrier, en choisissant l'objet, les pièces jointes et l'adresse électronique de l'expéditeur qui apparaît dans le champ «from». De telle sorte qu'à première vue, on croit que c'est bien dudule qui écrit lorsqu'on reçoit le courrier, à moins de vérifier les propriétés du message (clique droit sur le mail, propriétés/détails) : le champ «Return-Path» indique l'adresse de l'expéditeur du mail, le champ «from» indique celle choisie par le ver

Macro des documents MS Word

Mais le fameux virus en question n'est pas nécessairement et explicitement un programme. Trop facile, mieux vaut accompagner un document de type Word. C'est le problème des terribles Macros MS Word et MS Excel. Brrrrr... A l'origine du mal, nous trouvons (comme par hasard) Microsoft(™) qui a mis au point un langage de script propriétaire Visual Basic for Applications (VBA), dont un sous-ensemble VBScript (Visual Basic Scripting Edition) sert pour les macros. Une macro, abréviation de macro-commande, est une série de commandes que l'on regroupe au sein d'une même commande afin d'automatiser des tâches répétitives. Par exemple sous MS Word, les tâches de composition d'un texte. Les virus de macros sont donc des virus qui utilisent le langage des macros pour se reproduire ; on les reconnaît par leur extension en .VBS. Il existe également des virus qui utilisent d'autres langages de script, mais nous n'en parlerons pas ici, afin de ne pas lasser. De même, le développement sur les vers ne doit pas faire oublier que la consultation de pages web est également une source de contamination potentielle. Le lecteur désireux d'en savoir plus pourra consulter les sites des éditeurs d'anti-virus.

Le comparatif

On a vu, dans la citation de Von Neumann, le rapprochement propre à la cybernétique entre l'informatique naissante et la biologie. La question du rapport métaphorique ou non entre le virus informatique et le virus biologique est un sujet débattu avec passion, car elle se place dans celle plus large des rapports entre l'intelligence et les ordinateurs, toute une série de problématiques relevant de l'Intelligence Artificielle, notée IA.
Ce qui caractérise le virus biologique c'est son mode de duplication : il ne peut se reproduire sans l'intervention de la cellule qu'il parasite, la cellule hôte. Cette dernière va en effet, et malgré elle, reproduire le virus, une fois que l'acide nucléique de ce dernier l'a pénétrée.

Immuniser ?

Comme disent les linuxiens (qui sont tous des Casanova) : «l'informatique c'est comme le sexe, c'est meilleur quand c'est libre (et gratuit)». Cependant, le surf libre est risqué. Nous vivons dans un monde plein de dangers, Nicolas ! Voici donc quelques conseils de base.
On a vu que la plupart des virus cible Windows et autres produits Microsoft. Il peut donc être intéressant de changer d'OS, ou de navigateur et de logiciels de messageries (mais de conserver Outlook pour poster sur comp.os.linux.misc), et en tout cas de suivre régulièrement les bulletins d'alertes afin de patcher, et patcher encore. Non seulement les logiciels sensibles, mais également mettre à jour son anti-virus. Un anti-virus de 1997 laissé en l'état, en 2002 prend inntilement de la place sur le disque dur.
Il n'existe pas d'anti-virus qui vous immunise à vie et contre tout, mais des produits plus ou moins performants. Lire à ce propos l'analyse de tonton Guillermito sur l'éditeur Viguard. Par définition, les programmes de virus évoluent, sans parler des virus polymorphes (qui ont la possibilité de modifier automatiquement leur signature afin de ne pas être reconnus par l'anti-virus). Ceci ne doit pas vous priver d'en installer un, même si l'on peut très bien vivre sans, à condition de respecter certaines habitudes :

ne pas ouvrir les pièces attachées à vos mails susceptibles de contenir un virus (typiquement tout ce qui permet de lancer des applications) ;
configurer correctement son logiciel de messagerie (prévisualisation des messages sous Outlook) ;
ne pas copier à tout va des fichiers d'origines inconnues (typiquement des programmes crackés) ;
avez-vous vraiment besoin d'un énième économiseur d'écran pour fêter la nouvelle année ?
prévoir une sauvegarde des fichiers et des informations vraiment importantes, pour éviter de pleurer lors d'une infection

Nous avons insisté dans la partie intitulée «stratégies» sur les techniques populaires d'attaque. La seule intentionnalité des virus (pour l'instant) est celle de leur programmateur, ce qui veut dire que la prudence à adopter est celle que vous adoptez généralement dans les relations avec vos semblables. Pour les plus petits : ne pas accepter les bonbons que vous propose le monsieur en imperméable. Inutile de sombrer dans la paranoïa aïgue, de suivre tous les canulars (hoaxs), puisque de manière schématique : ou bien le virus est répertorié, auquel cas votre anti-virus le bloquera, ou bien il s'agit d'un nouveau virus inconnu jusqu'ici (dans son mode opératoire), et votre anti-virus, avant que son éditeur ne publie un bulletin d'alerte et propose une mise à jour ou kit de désinfection, vous sera aussi utile qu'un trèfle à quatre feuilles en pendentif. (D'autant que les virus ciblent prioritairement l'anti-virus présent sur l'ordinateur, infection et neutralisation).

Logiciels en rapport