"Virus - Antivirus" Auteur Marc FALZON (BTS IG-1) Date 30/01/2004 -- Table des matières : . |_1. PRELUDE |_2. VIRUS | \__2.1. Définition - Principe | \__2.2. Historique | \__2.3. Catégories | \__2.3.1. Virus | \__2.3.2. Chevaux de Troie | \__2.3.3. Vers | \__2.3.4. Rumeurs - Canulars |_3. ANTIVIRUS | \__3.1. Définition - Principe | \__3.2. Catégories | \__3.2.1. Scanneurs ponctuels | \__3.2.2. Scanneurs résidents | \__3.2.3. Analyseurs heuristiques |_4. CONCLUSION |_5. BIBLIOGRAPHIE ° 1. PRELUDE A mesure que l'informatique s'est développée, les risques liés à son utilisation se sont également amplifiés. Les virus sont le meilleur exemple qui puisse prouver cet état de fait. Véritable fléau pour certains, petites merveilles technologiques pour d'autres (déjà plus rares), ce phénomène n'a depuis son apparaition jamais laissé indifférent. De plus en plus de virus "naissent" depuis ces dernières années, et sont de plus en plus rapides et efficaces. Ce qui autrefois n'était encore que de banals petits défis entre créateurs de virus et d'antivirus à tourné aujourd'hui à la guerre des nerfs, doublée d'un marché de services de plus en plus rentable pour ces derniers. Mais que sont vraiment ces engins capables de paralyser des systèmes informatiques entiers en quelques heures au point de faire la une des journaux télévisés, comment peut-on envisager l'avenir d'Internet au vu des bulletins d'alerte de plus en plus fréquents ? Devons-nous ressortir nos poussiéreuses machines à écrire mécaniques du grenier pour être en sécurité ? Vous trouverez les réponses à ces questions et qui sait même plus en lisant ce document qui ne se veut pas exhaustif, car la virologie informatiques est un domaine plus vaste qu'il n'y paraît... 2. VIRUS 2.1. Définition - Principe -- Mais qu'est-ce qu'un virus, au juste ? Parmi les définitions les plus vagues voire fausses que j'ai eu l'occasion de rencontrer, je ne retiendrai que celle de Fred Cohen ("A short course on computer viruses") qui est la plus cohérente : "Programme capable _d'infecter_ d'autres programmes en les modifiant de manière qu'ils contiennent une copie de lui-même, parfois évoluée." Et c'est tout ; pas de destruction de données ni de destruction de matériel informatique comme certaines interprétations à peine chaotiques des virus le laissent présager, ou tout du moins pas tout de suite. Le principe même des virus (99.99% des cas) étant de rester en _vie_ le plus longtemps possible, son seul moyen de survie reste de se reproduire. Pour ce faire, il peut procéder de différentes manières, mais l'autre principe implicite du virus informatique étant de rester le plus discret possible le nombre de ces manières reste relativement limité... Un virus traditionnel peut être décomposé en trois parties, qui accessoirement sont aussi des phases de sa "vie" : | Infection (ou "mécanisme d'infection") : | - - - | C'est le concept même qui différencie un virus d'un autre | programme. Le virus cherche à se reproduire avec les moyens prévus | par son programmeur, il doit donc "infecter" d'autres programmes. | | Un virus peut avoir des directives spécifiques quant à sa/ses | cible(s) (recherche active), c'est-à-dire qu'il va parcourir | l'arborescence du disque dur à la recherche de fichiers | correspondant à ses critères : taille, type, format etc... | La plupart du temps, la routine d'infection d'un virus peut se | schématiser comme suit : | | IF fichier_infectable AND fichier_pas_encore_infecté | THEN infecter_fichier() | | La concrétisation d'une telle procédure peut prendre plusieurs | formes : le programme infectieux peut ajouter son code au | programme cible dans le cas de virus compagnons voire à le | remplacer carrément pour les virus à écrasement ou bien à se | copier en mémoire au démarrage dans le cas de virus de boot. Mais | les effets de l'infection peuvent être bien plus profonds, car le | virus peut également infecter des bibliothèques de fonctions (*.dll) | du système pour détourner certains signaux de manière à camoufler sa | présence, et les virus de macro parviennent dans le même but à | supprimer certaines options dans les menus de fameux logiciels | bureautiques utilisant les macros. \ | / | Déclencheur ("trigger") : | - - - | Le déclencheur est en quelque sorte le mécanisme qui va "lâcher" | la charge du virus, si charge il y a bien-sûr. Ce détonateur est | programmé pour s'enclencher en fonction d'événement(s) prévu(s) par le | programmeur ou réalisé(s) inconsciement par l'utilisateur de la | machine infectée et, pas de chance pour les paranoïaques, tout ou | presque est prétexte à déclencher le mécanisme : date précise et/ou | récurrente, suite de caractères entrés au clavier, format de fichier | spécifique détecté lors du parcours de l'arborescence, journée | excécrable pour le programmeur dudit virus... les idées ne manquent | hélas pas. | | A l'instar de l'infection, la phase de déclenchement peut aussi | être schématisée à l'aide de pseudo-code : | | IF date_système == "vendredi 13" OR nom_utilisateur == "Gates" | THEN trigger = TRUE | | Comme nous illustre cet exemple de fort mauvais goût, si le jour | où s'exécute le virus est un vendredi 13 ou si l'utilisateur actuel | a "Gates" pour patronyme, le virus enclenche le détonateur... \ | / | Charge ("payload") : | - - - | C'est ce que le virus peut entreprendre de faire si le déclencheur | du virus est activé. Cela peut aller de bénignes actions comme | l'affichage d'une phrase à l'écran à l'inversement des boutons de | la souris en passant par les redémarrages intempestifs de la | machine infectée ; mais malheureusement le programmeur peut parfois | s'avérer moins "fair-play" et prévoir une charge plus vicieuse comme | l'envoi d'un e-mail contenant une copie du virus à tous les | contacts figurant dans le carnet d'adresses de l'utilisateur | voire dévastatrice, de la suppression de tous les | exécutables/bibliothèques du système au formatage pur et dur du | disque dur (le tout en rimes, s'il-vous-plaît)... 2.2. Historique -- Je présenterai uniquement dans cette partie les programmes qui ont introduit les techniques usitées par les virus actuels, et les virus qui ont marqué l'histoire de la virologie informatique. Le premier specimen de virus informatique vit le jour en 1981 sur une plateforme Apple II : il s'agissait en réalité d'une version "modifiée" de l'OS présent à la base sur les disquettes formatées Apple II (je n'ai pas encore bien saisi en quoi il consistait). _Elk Cloner_ est le deuxième virus à avoir fait parler de lui en 1983 ; évoluant également sur plateforme Apple (AppleDOS 3.3 plus précisément), celui-ci était nettement moins sympathique car il provoquait des nuisances -involontaires si l'on en croit son auteur- telles qu'une mauvaise reconnaissance des types de fichiers, l'inversement de l'affichage et des clics dans les haut-parleurs. Toujours sur Apple (Apple IIGS et ProDOS), un virus réussit le tour de force de se dupliquer sur les disquettes à l'époque nécessaires pour booter sous un autre OS installé sur la machine, lui permettant ainsi d'être encore actif après le redémarrage... D'après la légende, le premier virus PC répondait au doux nom de _(c) Brain_ et aurait été écrit par deux frères pakistanais en 1986. Ce virus de boot avait la particularité de garder une copie de l'état du MBR avant d'être infecté, copie qu'il retournait si l'on cherchait à vérifier l'état de ce dernier. Ce virus a été décliné en une multitude de variantes, ce qui en fit une famille de virus parmi les plus réputées de l'histoire de la virologie informatique. 1987 fut marquée par l'arrivée du virus _Lehigh_, premier d'une longue lignée à s'attaquer directement à l'exécutable COMMAND.COM en se copiant dans l'espace vierge de ce programme de manière à ne pas en augmenter sa taille pour ne pas se faire détecter ; précaution toutefois inutile car sa charge consistait à effacer le contenu de tous les disques durs de la machine un fois qu'il avait infecté quatre disques. Ce comportement barbare a fait sa renommée en très peu de temps, mais a aussi contribué à la création par Ken Van Wyk d'une liste de diffusion et d'un newsgroup "VIRUS-L/comp.virus" sur USENET, qui fut pendant de longues années une excellente source d'informations sur les virus... _Morris/Internet Worm_ est le premier ver apparu en 1988 s'attaquant aux systèmes UNIX ; il a plongé l'Internet de l'époque dans une pagaille monstrueuse car il était entièrement autonome, s'appuyant uniquement sur les faiblesses de sécurité de certains serveurs et n'avait donc pas besoin d'être exécuté par un utilisateur non-averti. Il était équipé d'un module qui gagnait les privilèges des comptes protégés par des mots-de-passe peu sûrs. C.I.H (ou "Tchernobyl") est le premier virus à s'attaquer au matériel : il parvenait en effet à effacer le BIOS de la machine infectée. 2.3. Catégories -- Avant de sortir les grands mots, il convient de différencier les différents agents infectieux. Nous pouvons d'ores et déjà établir trois grandes catégories : 2.3.1. Virus Ce terme est utilisé souvent à tort pour qualifier tous les programmes suceptibles d'être à l'origine de dysfonctionnements sur une machine. Les virus sont plus exactement un type d'agent infectieux caractérisés par la définition donnée dans le 2.1. Cette définition a été proposée en 1983 par Fred Cohen et acceptée comme quasi-norme dans le domaine de la virologie informatique. On distingue plusieurs types de virus, correspondant aux méthodes qu'utilisent ces derniers pour se reproduire ou agir : | Virus non-résidents : | - - - | Les virus de ce type on besoin d'un programme "hôte" pour se | propager dans un système. Ils sont facile à programmer, mais aussi | facile à éradiquer... | | [ virus à recouvrement ] | Le virus recopie son code directement sur le programme cible, | rendant ce dernier obsolète ; chaque appel à ce programme exécutera | désormais le virus. Cette méthode peu fine n'est que peu | recommandable car elle a le don de rendre un virus relativement voyant. | | [ virus parasites - sans recouvrement ] | Le principe est le même qu'un virus à recouvrement à la différence | près que le virus recopie son code à la fin du programme cible et | place une routine d'appel à son code malveillant en début de fichier, | ce qui permet de garder le programme hôte fonctionnel. Le virus | s'exécute donc en premier puis exécute ensuite le programme initial, | ce qui le rend légèrement moins bourrin et par conséquent plus | discret et augmentant ainsi son espérance de vie. | | [ virus compagnons ] | Ce type de virus sévit sous DOS car il utilise une des | propriétés de cet OS qui donne la priorité à l'exécution des | fichiers .COM sur les .EXE ; prenons un exemple : le virus a détecté | un programme edit.exe infectable. Il va créer un fichier edit.com, | -lequel contiendra le code du virus- qui grâce à cette propriété du | DOS sera exécuté avant edit.exe puis il redonnera la main la | programme original. \ | / | Virus résidents : | - - - | De conception plus complexe que les virus non-résidents, ces | programmes présentent l'indéniable avantage de rester toujours en | mémoire une fois qu'il aient été exécutés. Une fois en mémoire, ce | dernier peut choisir d'attendre certaines interruptions (clavier, | disque dur etc...) pour les détourner vers son code et ensuite les | rediriger vers l'adresse mémoire recherchée. Ce type d'agents | infectieux est particulièrement difficile à détecter par les | antivirus car le virus détourne toujours les interruptions visant à | scanner la mémoire et leur renvoie une image "propre" de | l'emplacement où il se trouve. \ | / | Virus d'amorçage - BSI (Boot sector Infector) : | - - - | Les agents infectieux de ce type cherchent à copier leur code | directement sur le MBR du disque dur infecté de façon à être chargé | en mémoire avant l'OS pour pouvoir détourner les interruptions | pouvant le démasquer ; c'est un type de virus résident. \ | / | Virus à cible multiples ("multipartite") : | - - - | Ce sont des virus qui combinent les techniques des BSI et des virus | non-résidents : ils se logent dans le MBR pour résider en mémoire à | chaque démarrage de la machine mais s'attaquent également aux | exécutables du disque. Ils sont en général assez rares en raison de | leur complexité à les programmer et de leur taille, car ils utilisent | des procédures empruntées à ces deux types. \ | / | Virus polymorphes : | - - - | Les virus de ce type utilisent une technique relativement | sophistiquée pour se camoufler : ils changent régulièrement leur | "forme", c'est-à-dire toute partie du code susceptible de les trahir ; | cela peut aller du délai avant de déclencher sa charge à l'ordre | des procédures composant son code en passant par | l'inclusion/suppression de NOP pour s'allonger ou se rétrécir. Ces | virus sont loins d'être indétectables, car la plupart du temps la | procédure de chiffrement/déchiffrement doit être laissée en clair | dans le code, ce qui en fait sa "signature". \ | / | Virus de macros : | - - - | Apparus peu de temps après la création par une certaine firme de | Redmond d'un pseudo-code destiné à automatiser certaines commandes | dans les applications bureautiques, ils sont généralement trouvables | sous les formats .doc et .xls ; les virus de macro doivent être | exécutés dans ce même environnement mais peuvent malheureusement | avoir accès à tout le système, pour peu que les applications soient | dépourvues de limitation de leur champ d'action. \ | / | Virus de scripts : | - - - | Les virus de scripts sont actuellement les virus les plus répandus | en raison de leur déroutante facilité à programmer à aussi du fait | qu'ils évoluent sur une plateforme très répandue (win32) qui | y est extrêmement vulnérable. | Arborant généralement l'extension .VBS, ces scripts sont encore | plus généralement codés en VBA (Visual Basic for Applications), | utilisé entre-autres pour écrire des macros (et par conséquent des | virus de macros... rien ne se perd) et au maximum de la | généralité se transmettent par e-mail. 2.3.2. Chevaux de Troie (Trojan horses, backdoors) On pourrait qualifier un programme de cheval de Troie à partir du moment où il exécute des instructions ou possède des fonctions dont l'utilisateur n'a pas connaissance. Classiquement ces fonctions "bonus" sont rarement amicales car elles consistent pour la plupart en la récupération d'informations personnelles sur la machine infectée, voire à l'installation d'une "porte" (backdoor) dans le but de pouvoir s'introduire ultérieurement sur la même machine, par exemple pour surveiller les agissements de son utilisateur. 2.3.3. Vers (worms) Ces agents infectieux sont dans leur conception très proches des virus, mais leur rayon d'action se situe généralement dans les réseaux d'entreprises mais (toujours) plus généralement d'Internet ; c'est d'ailleurs ce qui est à la base de nombreuses erreurs de la presse non-spécialisée à propos d'alertes aux virus : les "virus" les plus efficaces et médiatiques sont pour la plupart des vers, et non pas des virus. Leur principale fonction est, à l'instar des virus, de se reproduire le plus rapidement possible et plus particulièrement de semer la pagaille dans les serveurs de messagerie et/ou de traffic réseau dans le but de les saturer. Ils sont dans la majorité des cas dépourvus de charge, ou alors celle-ci consiste uniquement en l'affichage d'une phrase pour faire peur à l'utilisateur (ce qui fonctionne très bien la plupart du temps). Les vers sont le plus souvent des scripts exploitant les failles encore non-patchées (et qui parfois ne le seront jamais) des différentes versions de windows. 2.3.4. Rumeurs - Canulars (Hoaxes) Ces derniers ne sont aucunement des agents infectieux, mais au vu de l'ampleur que peut prendre un canular envoyé par mail à quelques personnes qui ne trouvent rien de plus intelligent que de le faire suivre à leurs collègues/proches, ces derniers n'ayant pas plus de choses intéressantes à faire finissent par en faire de même... et ainsi de suite, contribuant à créer une pagaille générale pour rien. Le simple fait que ce soit très irritant suffit à justifier la présence de ce paragraphe. 3. ANTIVIRUS 3.1. Définition - Principe -- Alors que la motivation première des pionniers en matière de créations virales était uniquement par pur défi algorithmique ou blagues de (très) mauvais goût, rien ne laissait à l'époque présager que ce phénomène allait prendre une telle ampleur, tant et si bien que des moyens de défense contre des programmes (et accessoirement programmeurs) ont dû être mis au point pour limiter les dégâts. Voici donc les antivirus, programmes quasi-autonomes ayant pour fonction première de détecter toute trace d'activité virale sur la machine où ils sont déployés (ou des réseaux à filtrer) et à en avertir l'utilisateur (qui dans nombre de cas voit tout son univers s'écrouler) ; les versions récentes de ces programmes parviennent même à identifier clairement l'agent infectieux détecté voire à l'éradiquer du système. Une véritable (et fort rentable) industrie se tient aujourd'hui à disposition de l'utilisateur en proie aux plus abominables programmes viraux lâchés tous les jours sur Internet, dominée par deux grandes entreprises proposant des produits sensiblement identiques : Symantec (Norton) et McAfee (Virus Scan). 3.2. Catégories -- On peut séparer les antivirus en deux familles distinctes, ayant leurs avantages et leurs inconvénients respectifs. Autant briser tout de suite le mythe : aucun antivirus au monde n'est efficace à 100%... 3.2.1. Scanneurs ponctuels (on-demand scanners) Ces antivirus fonctionnent grâce à une base de données de virus reconnus en fonction de leur signature, base sans cesse alimentée par les laboratoire de recherche antivirale (habituellement les mêmes entreprises qui fournissent les logiciels antivirus). Pour être efficace, la base de données doit être REGULIEREMENT mise à jour en récupérant sa dernière version sur le site de l'éditeur. Ce type est le plus utilisé actuellement du fait de sa simplicité d'utilisation et des faibles ressources système requises (utilisation ponctuelle), mais son principal défaut est que généralement quand il vous alerte sur une éventuelle infection il est déjà trop tard... (problème en partie pallié par des procédures de désinfection quasi-automatisées fournies par les éditeurs des logiciels). 3.2.1. Scanneurs résidents (on-access scanners) Ils fonctionnent exactement de la même manière que le précédent antivirus, à la différence près qu'ils sont lancés au démarrage de la machine (souvent en mode DOS, donc avant l'OS pour détecter les BSI) et scannent en permanence la mémoire de l'ordinateur pour y trouver des signatures de virus qu'il "connaît". De cette manière il avertit l'utilisateur en temps réel ou presque (ce qui contribue à le mettre très, très mal à l'aise dans la plupart des cas). Il est à noter que les logiciels antivirus actuels les plus prisés combinent ces deux techniques. 3.2.2. Analyseurs heuristiques Derrière ce nom barbare se cache un concept plus que douteux qui a connu son heure de gloire lors des années qui ont suivi sa mise au point, mais qui tend à être utilisé avec parcimonie aujourd'hui ; en effet, les analyseurs heuristiques sont des antivirus résidents en mémoire qui "écoutent" toutes les interruptions et analyse en permanence les instructions qui vont être exécutées par les programmes actifs et en "déduire", en fonction d'un comportement qu'il juge plus ou moins approprié pour un programme normal, si ce programme est un agent infectieux. Pour ce faire il dispose d'un "catalogue" de procédures et de comportements qui sont caractéristiques des virus et peuvent ainsi les trahir avant qu'ils n'aient le temps de s'exécuter (très efficace pour détecter les virus polymorphes par exemple). Le principal problème de ce type d'antivirus est que certains programmes tout ce qu'il y a de plus normaux peuvent avoir recours à des procédures semblables à celles usitées par les virus et donc provoquer de fausses alertes... L'autre soucis de ces antivirus réside plutôt dans la forme, ce qui revient à ceci : - antivirus : "HEY ! J'ai trouvé un truc pas net !!" - utilisateur : "C'est quoi ?! C'est un virus ??!!" - antivirus "p'têt ben qu'oui, p'têt ben qu'non..." Plutôt frustrant, n'est-ce pas ? 4. CONCLUSION Il existe peu de sujets aussi fascinants que celui des virus informatiques, mais le traiter dans son intégralité est un travail qui demanderait des années entières, ne serait-ce que pour noter les évolutions de leurs méthodes de reproduction. Ce document vous a permis -je l'espère- de mieux saisir les différences entre les différents agents infectieux susceptibles de venir vous passer un petit bonjour. Le plus important étant sans nul doute de ne pas avoir une confiance aveugle en son antivirus, mais bel et bien d'adopter une attitude responsable et cohérente face aux virus, vers et autres gâteries attachées aux mails vous proposant une expression cinématographique de la copulation canine... Pour en finir, je vous rappellerais les règles de base à observer pour profiter pleinement de cette irremplaçable source d'information qu'est Internet : - si vous disposez d'un antivirus, le mettre SCRUPULEUSEMENT à jour au moins une fois par semaine. - supprimer automatiquement tout mail ne comportant ni expéditeur ni sujet. - configurer votre client e-mail pour ne pas ouvrir les attachements, et surtout qu'il ne les interprète EN AUCUN CAS. - scanner toute pièce jointe à l'aide d'un antivirus à jour. - désactiver l'interpréteur de scripts de Windows. - si vous n'en avez pas la moindre utilité, désactiver les commandes macro dans vos logiciels de bureautique. - dans la mesure du possible... éviter les logiciels Microsoft ; loin de moi l'idée d'affirmer que GNU/Linux est invulnérable, mais le ratio de virus win32/linux parle de lui-même : environ 2000/1. - dans le doute : SUPPRIMER. 5. BIBLIOGRAPHIE | Documentation en ligne : | - - - | http://www.claymania.com/nav-map-fr.html | http://www.madchat.org/vxdevl/ | http://www.sophos.fr/virusinfo/explained/ | http://www.wildlist.org/ \ | / | Ouvrages : | - - - | "Virus" D. Harley / R. Slade / U.E. Gattiker - CampusPress