Professional Documents
Culture Documents
Sous le thme :
Introduction
Prsentation 1. Structure dun virus informatique 1.1. Dfinition dun systme informatique 1.2. Principe de fonctionnement du virus 1.3. Comparaison critique avec le virus biologique. 1.4. Les principaux types de virus : virus systme et infecteur de fichier 1.5. La charge facultative dun virus 2. Programmations des types fondamentaux de virus 2.1. Virus infecteur de fichiers 2.2. Virus systme 3. Stratgie de lutte contre les virus 3.1. Les scanners 3.2. Les moniteurs de comportements 3.3. Le contrle dintgrit 4. Les virus contre-attaquent 4.1. Stratgies de base 4.2. Les virus furtifs 4.3. Les virus rpressifs 4.4. Les virus autocrypts 4.5. Les virus polymorphes. 4.6. Les virus gntiques 5. Riposte des antivirus 5.1. Analyse spectrale 5.2. Analyse heuristique 6. Perspective davenir 6.1. Dangers et bienfaits des virus 6.2. Lescalade technique entre virus et antivirus cessera-t-elle un jour ?
Les virus informatiques sont trs en vogue dans la presse informatique sensation. Ces programmes, qui sinfiltrent et se reproduisent dans un ordinateur linsu de son propritaire pour en prendre le contrle et y causer dventuels dgts, engendrent une fascination craintive et crdule. Il est en effet difficile destimer limportance relle accorder ces programmes, tant les mdias aiment entretenir cette aura trompeuse qui les entoure. Pourtant, linformaticien curieux qui dcide de sintresser au sujet et parvient faire la part de la vrit sur les virus, dcouvre en eux des objets minemment intressant. Le concept mme dun programme capable de se reproduire et d exister de manire autonome est sduisant en soi. De plus, la comptition engage entre les programmeurs de virus et dantivirus a cr une mulation favorable au dveloppement de techniques de programmations de pointes, o libre court est donn limagination du programmeur. Cest ainsi quon rencontre des virus qui se chiffrent eux mme ou sont polymorphes. Lordinateur devient une jungle passionnante o volue une faune virale pittoresque. Malheureusement, les virus, comme leur nom lindique sont souvent employs dans un but destructeur et les dgts logiciels quils causent atteignent des sommes leves. Cest pourquoi la lutte antivirus revt une telle importance. Pour la mener bien, il est ncessaire de commencer par dmystifier et comprendre les virus informatiques. Le but cest dexpliquer le fonctionnement des virus informatiques, puis, de mettre en pratique ces algorithmes pour raliser un virus complet et efficace. Nous nous attacherons dgager les principes gnraux employs dans la programmation des virus, indpendamment de la machine utilise, et ce en faisant la synthse dune double exprience de la programmation des virus, la fois sur PC et ordinateur de poche. Nous commencerons donc par analyser la structure des virus fondamentaux, puis nous tudierons le fonctionnement des logiciels antivirus afin de comprendre les perfectionnements plus rcents des virus. Lobjectif cest de prsenter les principes gnraux de la programmation des virus et des logiciels antivirus, par ordre de complexit croissante des techniques employes, et avec une volont de gnralisation.
1.2.
Un virus informatique est un programme, intgr dans un programme hte ou localis dans un champ spcifique de la mmoire, capable lors de son excution de crer une copie de lui mme quil insre dans un autre programme hte ou sur un autre champ de mmoire. Ce programme possde donc une proprit essentielle et originale : il sauto-reproduit. De tels programmes sont donc assez mobile, et chappent aisment au contrle de lutilisateur, cest pourquoi ils sont souvent utiliss pour vhiculer un algorithme destructeur. Un virus doit contenir au moins deux parties pour pouvoir se reproduire lui mme : un algorithme de recherche dun fichier hte infecter, et un algorithme de recopie sur le fichier hte. On y ajoute ventuellement une troisime tape (destruction, espionnage) qui sera dtaille Lorganigramme fondamental dun virus informatique est donc le suivant :
Recherche dun fichier non contamin, infecter
Modification du fichier trouv et criture dune copie du virus lintrieur ou la place de ce fichier
On verra par la suite quil sagit la dun schma simplifi, et que chacune de ces parties existe sous de trs nombreuses variantes que lon choisira en fonction de lenvironnement dans lequel doit voluer le virus : nature du systme informatique, structure des fichiers infecter, antivirus affronter Nous tacherons de faire le tour de toutes ces variantes.
les programmes de lutilisateur et est excut chaque appel de lun deux. Il existe galement des virus hybrides prsentant la fois ces deux modes de fonctionnements. Le fonctionnement de ces virus dpend intimement du systme informatique, cest dire : Du microprocesseur employ, car un virus efficace est programm en langage machine et nest donc pas portable. De la faon dont interagissent les priphriques et lunit centrale. Par exemple, les PCs emploient une table dinterruptions utilise par les virus pour dtourner certaines fonctions du systme, dont on ne trouve pas lquivalent sur une calculatrice de type HP48. Du fonctionnement du dmarrage de la machine, dans le cas des virus systmes. De la structure des objets excutables. Sur un PC, les fichiers .COM, .SYS et .EXE qui sont les cibles privilgies des virus infecteurs de fichiers ne sont pas structurs de la mme faon en mmoire. De mme pour les objets programmes et librairies que nous tudierons sur la HP48.
On constate au vu de ces contraintes quun virus est un programme trs spcifique, adapt une cible prcise, et dans un environnement prcis. Cependant, un virus peut tre conu de telle sorte quil infecte toute forme de code, mme celui qui doit encore tre compil ou interprt avant dtre excut. Ainsi, un virus peut infecter des programmes de types diffrents, ou encore un programme en C ou en Basic et nest donc absolument pas limit linfection des programmes crits en langage machine.
Les programmeurs de virus utilisent normment dastuces ou de failles des systmes informatiques qui sont trs spcifiques, cest pourquoi les algorithmes qui vont vous tre prsents dans cette partie sont des cas possibles parmi beaucoup dautre, dont on ne peut dresser ici une liste exhaustive. Linventivit des programmeurs de virus est en effet stupfiante. Dautre part, pour ne pas rentrer dans des dtails de programmation qui seront ultrieurement tudis en partie 2, les algorithmes fournis seront simplifis lextrme.
Non
Fin
Ouvre DIR
Non
Infection de .HOT
Il existe plusieurs faons dinstaller un virus infecteur dans un fichier hte (partie infection ci-dessus). Nous en distinguerons 3 : Par recouvrement du programme hte par le code du virus. Le programme hte est alors perdu. Notons quun tel virus est trs facile raliser mais aisment identifiable. En renommant le programme hte avec un nom excentrique, et en prenant le nom original de lhte (virus compagnon). Ou en se copiant lintrieur du programme hte, ce qui impose den modifier la structure.
La dernire stratgie est la plus employe car cest la plus discrte. tudions-la en dtail. Sois un programme .HOT infecter.
Programme .HOT
Un virus a alors 2 faons de sintroduire dans le programme .HOT : en se copiant au dbut du programme et en dcalant ce dernier , ou en se copiant a la fin et en incluant un saut au dbut du fichier .HOT.
Zone Prfixe de Programme Virus Programme .HOT Zone Prfixe de Programme Saut vers le virus Programme .HOT
Virus
Un dernier type de virus infecteur de fichier est le virus rsidant. Celui-ci ne se reproduit pas lorsque le programme hte est excute, mais se recopie dans un zone mmoire o il reste en veille en dtournant par exemple des interruptions systmes (cas du PC). Il ne se reproduira que lorsque linterruption sera appele. Il est ainsi dissoci de son programme hte, ce qui rduit les risques de se faire reprer.
Un virus systme rudimentaire pourrait fonctionner comme suit (Figures 4.1 et 4.2) : CPU
BIOS
Disque A : Secteur de dmarrage Disque A : Secteur de dmarrage
Virus
3.1. Le scanning
Les virus que nous avons vu sont identiques dune copie lautre. Il est donc ais, une fois le virus identifi, de lui prlever une chane doctets, et de parcourir toute la mmoire la recherche dune chane similaire. Cest le principe du scanning. Pour que cette chane soit reprsentative du virus, et que lon minimise le risque de trouver un programme sain comportant une chane identique, on prlve cette chane dans une partie caractristique du virus, par exemple son algorithme dinfection, et on la prend dune longueur maximale. De plus, lantivirus effectue des tests complmentaires lorsque cette chane est retrouve en mmoire, pour viter toute incertitude. Un logiciel antivirus utilisant le scanning contiens une base de donnes de chanes extraites de virus, associes des procdures spcifiques pour identifier prcisment et liminer chaque virus connu. Un tel logiciel a lavantage dtre simple utiliser et de fournir des informations claires, du type Le fichier Truc.HOT a t infect par le virus Un_Tel. Il est donc trs apprci par la majorit non spcialiste des utilisateurs dordinateurs. Son inconvnient est de ncessiter de constantes mises jour de sa base de donne pour sadapter lapparition de virus nouveaux. De plus, il est totalement dmuni face un virus polymorphe.
est quun programme dj infect lors de son marquage par le moniteur de comportement ne sera pas considr comme suspect par la suite.
Tous les virus actuels rpondent au moins ces critres. Cependant, un virus qui vrifie ces conditions peut chapper la vigilance de lutilisateur mais pas celle dun logiciel antivirus, cest pourquoi dautres techniques plus sophistiques ont vu le jour.
4.2.1. Cas du virus systme Lantivirus testera la prsence dun virus systme de deux manires. Il pourra commencer par aller lire les programmes du secteur de dmarrage. Pour cela, il effectue une demande de lecture en faisant appel une interruption du DOS. Or, rien nempche le virus davoir dtourn linterruption en question vers un programme interne au virus, qui teste si la demande de lecture est dirige vers un secteur de dmarrage, et si tel est le cas loriente vers une copie de sauvegarde saine du secteur de dmarrage. Lantivirus croira ainsi le secteur sain et en conclura labsence de virus. Cette mthode est efficace en particulier pour tromper les scanners. Cette mthode est ancienne (anne 80) et les antivirus actuels la contournent en faisant une lecture directement sur les ports dentre-sortie de la machine, mais cela ncessite une programmation dlicate qui prenne en compte laspect lectronique de la machine. On peut aussi imaginer que le scanner se dote dun programme danalyse heuristique qui vrifie que la routine daccs en lecture pointe par la table des interruptions nest pas celle dun virus. Les virus peuvent encore ragir en dtournant dautres interruptions systmes quun antivirus souhaitant utiliser les entres-sorties directement est oblig dappeler, afin de le tromper de nouveau. Lantivirus peut son tour contourner lusage de ces interruptions. On prend ici conscience dun phnomne essentiel : virus et antivirus se font une guerre continuelle o chacun tente de dpasser lautre par lemploi de techniques de plus en plus complexes. Un antivirus pourra galement chercher un virus systme en mmoire vive. En effet , un virus systme sinstalle souvent comme rsidant en mmoire et doit donc y assurer sa furtivit. En gnral, lantivirus teste la prsence dun virus rsidant en calculant la taille de mmoire vive disponible et en la comparant avec la valeur indique par le systme. Pour viter dtre localis ainsi, le virus essaie de modifier le paramtre systme donnant la taille de mmoire vive. Il peut galement quitter la mmoire vive ds que le systme dexploitation a fini de se charger, pour aller se cacher dans une zone mmoire inutilise. 4.2.2. Cas du virus infecteur de fichier Un virus infecteur de fichier dispose lui aussi dun large panel de tactiques pour devenir furtif. La principale consiste dtourner les interruptions servant lire un fichier, pour, lorsquil sagit dun fichier infect, modifier laccs en le re-dirigeant vers le mme fichier mais sain. L encore, virus et antivirus se talonnent pour respectivement dtourner et contourner un maximum dinterruptions ayant trait laccs au fichiers. Toutes les techniques si dessus concernent des virus dans un environnement PC sous DOS. Un autre systme informatique ne possde pas forcement de possibilits analogues au dtournement des interruptions du DOS, aussi ces techniques de furtivit ne sont elles pas gnralisables. Par exemple, on ne peut rien faire de tel sur HP48, et il faut y inventer dautres mthodes.
que lorsque celui-ci est excut ou en cours dexcution. Le virus est donc libre de vrifier la prsence dun antivirus connu, et sil le trouve, dentreprendre une action en consquence. Cette technique peut tre dautant plus efficace que les antivirus les plus rpandus sont en petit nombre, et quil est donc possible de les lister et dinclure dans le virus un programme de traitement pour chacun. Les virus utilisent alors les mmes techniques que les antivirus pour trouver ces derniers. Le virus peut agir de diffrentes manires contre lantivirus: il peut simplement faire planter lordinateur ou dtruire le contenu dun disque. Il peut reconnatre lantivirus et le modifier pour le rendre inoffensif. Dans le cas dun contrleur dintgrit, par exemple, il peut rechercher le fichier dans lequel le contrleur stocke les proprits des programmes et leffacer, ou le modifier pour y inclure les modifications apportes un programme lorsque celui-ci est infect. Certains virus dsassemblent lantivirus et y cherchent certaines routines spcifiques pour les rendre inoprantes. Mais les techniques de ce genre sont employes au cas par cas, car elles sont trs dpendantes de lantivirus contourner.
La figure 5.1 reprsente un cas possible de virus autocrypt infecteur de fichier, et la figure 5.2 explique le fonctionnement du programme dinfection de ce virus.
V I R U S
Action facultative
Dcale le programme Cible.HOT et crit dans lintervalle un saut vers lemplacement futur de la boucle de dchiffrement
Figure 5.2 : Dtail des actions du programme dinfection du virus dcris en 5.1
Comment seffectue le chiffrement ? Il existe une quantit de mthodes de chiffrement. Ici, on ne cherche pas protger une information, mais juste la rendre mconnaissable, aussi les programmeurs de virus
autocrypts optent ils le plus souvent pour le chiffrement le plus simple : le ou-exclusif avec une clef choisie alatoirement. Cette clef est souvent une chane de bit prise dans une zone mmoire dont le contenu change frquemment.
V I R U S
Programme dinfection
4.5.2. Fonctionnement du Moteur de Mutation Le Moteur de Mutation est un programme capable de construire des boucles de dchiffrement implantant la mme fonction, mais codes diffremment. Il y a plusieurs faons de raliser un tel programme, selon que lon souhaite une plus ou moins grande efficacit dans la varit des boucles gnrer. Une premire possibilit consiste fabriquer une fonction de dchiffrement simple, et la stocker comme donne, instruction par instruction, dans un programme. Celui-ci la recopiera en intercalant alatoirement entre chaque instruction de la boucle une instruction inutile et sans effet sur le fonctionnement de la boucle. On pourra par exemple intercaler des instruction nop (instruction qui ne fait rien, code sur un nombre variable de bits), ou modifier des registres qui ne servent pas (mov a b, xor a b). Un tel programme est une version simple dun Moteur de Mutation et permet dj de gnrer une grande varit de boucles diffrentes. Nous allons illustrer cette ide. Prenons deux registres a et b dun microprocesseur. Linstruction mov x y sert charger la valeur de y dans x. nop est une instruction qui ne fait rien. Considrons le court programme :
Mov a #123 Mov b #ABC
Ce programme se contente de charger les registres a et b avec respectivement les nombres 123 et ABC, crit en base hexadcimale. Un tel programme pourrait aussi scrire :
Mov a #123 Nop Nop Mov b #ABC Nop
Le Moteur de Mutation dcrit ci dessus pourrait partir du programme initial gnrer ces 2 programmes. Pour cela, il na besoin de connatre que le code machine des instructions mov a #123 et mov b #ABC, ainsi que les registres auxquels il ne doit pas toucher (ici a et b). Il possde galement une base de donnes contenant les codes dinstructions tels que nop et mov c #000 quil repartira alatoirement entre les instructions composant le programme initial. Cependant, dans cette premire version du Moteur de Mutation, les instructions qui composent la partie active de la boucle de dchiffrement restent les mmes dune copie lautre. Or il est galement possible de les faire varier dune copie lautre. En effet, tout programme en assembleur peut tre cod de plusieurs faons diffrentes car il faut faire des choix sur les registres utiliss, les instructions pour les manipuler de sorte que plutt que de reprsenter une unique boucle en donne dans le Moteur de Mutation, on pourrait enregistrer un arbre reprsentant pour chaque instruction ou groupe dinstructions toutes les programmations possibles. On introduit ainsi un grand nombre de variantes de boucles supplmentaires. En reprenant lexemple prcdent, le programme initial pourrait aussi tre crit :
Ou :
Mov a #ABC Mov a #123 Xchg a b (change les contenus des registres a et b)
Pour intgrer ces possibilits au moteur de mutation, il suffit de lui donner choisir, au moment o il devra crire le code du programme initial, lune des 3 sries dinstructions quivalentes que nous venons dexpliciter. Il intercale ensuite des instructions inutiles entre celles quil doit crire. Ceci ne fait que prsenter le principe de base du Moteur de Polymorphisme. Il existe de multiples perfectionnements aux 2 techniques prsentes ci avant. A lheure actuel, un bon moteur de mutation est capable de djouer tous les scanners existants.
4.5.3. Choix alatoire Le Moteur de Mutation fait constamment appel une procdure de choix alatoire (pour slectionner un bloc dinstruction dans larbre des possibilits, une instruction inutile insrer). Pour cela, il doit gnrer un nombre alatoire, ce qui est un problme pour un ordinateur. La technique la plus souvent employe pour obtenir un grand nombre alatoire consiste utiliser une suite rapidement divergente et lui entrer en paramtre une valeur qui varie toujours, comme le compteur de lhorloge systme. Un exemple dune telle suite est :
X(n+1)=(a*X(n)+c)mod(m)
des allles de lensemble des allles possibles. On introduit ainsi une notion de filiation travers la conservation de caractristiques gntiques dune gnration lautre du virus polymorphe. Le rsultat est une population de virus qui sadapte la prsence dun antivirus, et apprend lui chapper. Cest le fleuron des techniques de programmation de virus.
Notons quun virus polymorphe dou de furtivit pourrait djouer lanalyseur heuristique en interceptant sa demande de lecture du fichier infect. Ainsi, cette technique, comme toute les autres, nest efficace que si elle est employe conjointement avec dautre. Il en va de mme pour les virus, qui tendent combiner un maximum de techniques diffrentes pour chapper aux antivirus. On assiste une vritable course poursuite atteignant des sommets de technicit dans la programmation.
6. Perspectives davenir
6.1. Applications des virus
On entend frquemment parler des virus informatiques dans la presse, mais on mesure rarement lampleur du phnomne virus travers ce brouillard mdiatique. Au demeurant, le virus est prsent comme un objet dangereux, et on oublie souvent que la technique du virus peut galement servir dans un but bnfique. Actuellement, les virus sont un danger rel et de nombreuses entreprises ont subies des pertes cause deux. La technique virale est en effet idale pour un programmeur mal intentionn souhaitant sinfiltrer dans un systme informatique. Des tentatives ont t faites pour chiffrer prcisment les pertes des entreprises, mais elles se heurtent leur mauvaise volont. En effet, les entreprises rechignent avouer la faiblesse de leur protection informatique, et essayent donc souvent de cacher leurs ventuels problmes. Au demeurant, les virus ne sont pas le principal danger informatique quelles doivent affronter. Elles tentent avant tout de se protger des attaques des pirates informatiques, qui tentent de pntrer dans leur rseau pour y voler de linformation. Pour cela, la stratgie est dassurer une meilleur intgrit au rseau local de lentreprise, ce qui de surcrot le protge des virus. Il reste alors le danger rsiduel et anecdotique de virus implants volontairement, et dans un but destructeur, par un employ de lentreprise. Il existe donc des mesures contre le danger des virus, mais il semble quelles ne soient appliques que localement, si bien quune partie des entreprise et la majorit des utilisateurs particuliers sont exposs. Ce sont autant de clients potentiels pour lindustrie des antivirus, qui est particulirement fructueuse.
Infections Per Thousand Per Month
40 35 30 25 20 15 10 5 0 Jan- Feb- Mar- Apr- May- Jun96 96 96 96 96 96
Jul96
Figure 7 : Nombre dinfections par milliers dordinateurs et par mois entre 96 et 97. Sondage de la NCSA.
La figure 7 est extraite dun rapport officiel de la NCSA (National Computer Security Association), paru en 1997 la demande dun regroupement de grandes entreprises du
secteur informatique. Cette figure montre que la proportion dordinateurs infects dans le parc informatique des entreprises a doubl entre fvrier 96 et janvier 97. Cependant, on a tendance oublier que la technique des virus pourrait galement tre employe des fins bnfiques. Comme nous lavons tudi, la force du virus vient de sa capacit fondamentale se reproduire de faon autonome et sans intervention de lutilisateur. Il est donc tout indiqu pour certaines taches utiles, comme celles dcrites dans la partie 1.5. Sur les charges virales. Il est souhaiter que la technique du virus perde son aura malfique et marginale, pour que lon voie se dvelopper de telles applications.
Quels enseignements peut on tirer de ce travail de programmation concernant les virus ? Dabord, on a prouv lincontestable supriorit des virus crits en langage machine. Ensuite, on saperoit quil est particulirement difficile dcrire un code parasite autopropageable et ce pour plusieurs raisons. La premire est quil faut une connaissance extrmement pointue du systme informatique dans lequel doit voluer le virus, dabord pour y trouver la faille qui permettra la ralisation dun virus, puis pour viter que ce virus ne commette derreurs qui le trahissent, et pour pouvoir tirer au mieux partie de ce systme dans lcriture de virus les plus synthtiques et efficaces possibles. La seconde difficult provient de lemploi ncessaire du langage machine. Cela impose un long travail de rflexion sur papier et lcriture pralable du code complet avant de le rentrer sur la machine. La phase de dbbugage qui suit alors est dautant plus difficile quun code en langage machine est peu lisible et contrlable, et que les erreurs commises viennent souvent dune comprhension insuffisante du systme.