Vous êtes sur la page 1sur 21

Royaume du Maroc

ESIAS Ecole Spciale dInformatique dAnalyses des Systmes Errachidia

Sous le thme :

STRUCTURE DES VIRUS INFORMATIQUES

Ralis Par : Mr Charboub Abdelilah Encadr Par : Mr Kabba Abdelaziz

Anne scolaire : 2010/2011

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. Structure dun virus informatique


1.1. Dfinition dun systme informatique
On entendra par ordinateur une machine dote dune mmoire contenant des programmes et des donnes, et dune unit centrale (ou CPU) capable dexcuter ces programmes, de lire et dcrire en mmoire. Pour la CPU, toute information situe en mmoire (programme comme donne) peut tre modifie, donc en particulier, un programme peut sauto-modifier ou modifier dautres programmes. On entendra par systme informatique un ordinateur, isol ou en rseau, muni dun systme dexploitation et de logiciels et donnes utilisateurs. On dfinit deux types de fichiers : ceux utiliss par le systme et un ventuel administrateur systme, et ceux de lutilisateur normal. Dans un usage courant, on souhaite conserver lintgrit de certains fichiers, cest dire den interdire toute modification non autorise. Ce peut tre le cas des fichiers systmes en gnral, ou de fichiers utilisateurs de type logiciel ou donnes importantes. Le virus informatique, par son principe de fonctionnement, va porter atteinte lintgrit des fichiers, et prsente donc une menace.

1.2.

Principe de fonctionnement du virus

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

Action facultative (destruction, observation )

Figure 1 : Structures dun virus

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.

1.3. Comparaison critique avec le virus biologique.


Le terme de virus informatique fut propos pour la premire fois par Fred Cohen en 1985 dans une thse sur les programmes auto-reproducteur, et sappuie sur des similitudes entre les virus informatiques et biologiques. Ils ont en effet pour point commun dintroduire une squence dinstruction, sous forme de programme pour lun et de morceau dADN pour lautre, dans un environnement (la cellule ou lordinateur), o cette squence va tre excute, cest dire reproduite. De plus, les virus les plus volus possdent des moteurs de mutations leur permettant de gnrer des versions nouvelles deux mme, et sont capables de sadapter la prsence dun antivirus pour optimiser leur chance de lui chapper (virus gntiques, voir 4.6). Ils ont ainsi des proprits qui rappellent les capacits de mutation et dadaptation des virus biologiques, leur point commun tant de devoir sadapter un environnement hostile, o il faut affronter selon le cas le systme immunitaire ou le logiciel antivirus. Cependant, le terme de virus est sujet polmique. En effet, la mtaphore biologique qui la inspire est limite car ces deux entits agissent dans des environnements totalement diffrents, et leurs fonctionnements dtaills nont rien en commun. En particulier, la notion de vie attache au virus biologique ne peut tre applique un programme informatique. De plus, le terme virus est porteur dune forte charge motionnelle, largement entretenue par la presse informatique, et qui dforme lopinion quon peut se faire de ces programmes. Enfin, pour beaucoup de gens, un virus est simplement un programme nuisible, indpendamment de toute notion dautoreproductibilit. Une dnomination mieux approprie a t suggre par Mark Ludwig dans son ouvrage de rfrence Naissance dun virus : il sagit de Code Parasite AutoPropageable (CPA). Dans le prsent rapport, le terme virus sera toujours prendre dans le sens de CPA.

1.4. Les principaux types de virus : Virus systme et infecteur de fichier


On distingue 2 grandes catgories de virus, indpendamment de la machine pour laquelle un virus est crit : les virus infecteurs de fichiers et les virus systmes (ou rsident). Tout systme informatique possde des programmes lusage de lutilisateur, qui sont susceptibles de contenir un virus. Ceux-ci sont dit infecteurs de fichiers. Ils sont excuts chaque appel du programme qui les contient et assurent alors leur propagation. Dautre part, chaque mise sous tension, tout ordinateur commence par valuer une srie de programmes de dmarrage qui lui permettent de se configurer. Bien souvent, on peut modifier le contenu de ces programmes pour y introduire le code dinstallation dun virus ce qui permettra celui-ci de prendre le contrle du systme ds sa mis en service. Un tel virus est dit virus systme. La diffrence entre ces deux virus viens donc de ce que le second infecte des programmes du systme et nest excut quau dmarrage, tandis que le premier infecte

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.

1.5. La charge facultative dun virus


Dun certain point de vue, le virus informatique est un support pour vhiculer un programme de faon invisible et efficace. Sous ce point de vue, la partie facultative dcrite en 1.2 a un rle essentiel. Dans la majorit des virus, il sagit dun programme destructeur, visant effacer des fichiers importants ou planter la machine. Il peut aussi servir espionner le systme pour, par exemple, lister les mots de passes des utilisateurs et les transmettre au programmeur du virus. Le champ des possibilits a en fait limagination du programmeur pour seule limite. Notons que cette action peut aussi tre bnfique. Il existe par exemple des virus antivirus, qui limine certains virus cibles lorsquils sont prsents sur le programme hte quils infectent, et contrlent ensuite leur hte pour alerter toute tentative dinfection. Dautres servent conomiser de la mmoire en compressant le programme hte, et en le dcompressant chaque excution. Ainsi, la proprit de reproduction autonome des virus prsente la fois de nets risques et de grands avantages. Cest donc une technique digne dtude.

2. Programmations des types fondamentaux de virus


2.1. Prliminaires

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.

2.2. Les virus infecteurs de fichier


Tout virus infecteur de fichier excute en premier une routine de recherche dun fichier hte sain contaminer. Prenons le cas dun virus cherchant un fichier .HOT dans une arborescence de rpertoires DIR. Lorganigramme dune telle routine pourrait tre le suivant :

Y a t il un DIR non explor ? Oui

Non

Fin

Ouvre DIR

Non

Y a t il un fichier .HOT dans DIR ? Oui

Infection de .HOT

Figure 2 : Algorithme de recherche dun fichier infecter

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.

Sa structure en mmoire est typiquement :

Zone Prfixe de Programme

Figure 3.1 : Structure dun fichier 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

Figure 3.2 : Fichier infect par un virus parasite

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.

2.3. Les virus systmes


Chaque systme informatique (PC, station Sun, HP48) possde son propre mode de dmarrage, auquel le virus systme est intimement li. Nous allons donc nous restreindre au cas des PC pour comprendre comment marche un virus systme. Lors de sa mise sous tension, la CPU (unit centrale) du PC commence par excuter un programme crit en ROM, le BIOS, charg de configurer la machine autour de la CPU. En fin dexcution, le BIOS recherche une zone mmoire, appele secteur de dmarrage, et charge la CPU de lexcuter. Ce secteur de dmarrage contient un programme construit par le systme dexploitation pour permettre la CPU de le lancer. Le virus systme est install de faon tre excut avec ce programme. Pour cela, il le remplace en gnral sur le secteur de dmarrage, aprs en avoir fait une copie qui sera excut aprs le virus. Pour se reproduire, le virus systme a 2 possibilits : soit il cherche un autre disque pour en infecter le secteur de dmarrage (Tout disque, ou disquette, en contiens effectivement un). Soit, il infecte un fichier utilisateur, depuis lequel il infectera ultrieurement un autre disque, ou encore il se fait rsidant. Dans ce dernier cas, le virus est dit hybride.

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

Data Data Data Data

Programme Data Data Data Data Data

Copie de sauvegarde du secteur de dmarrage du Disque A

Programme Data Data

Figure 4.1 : appel du virus systme au dmarrage.

Y a t il un disque infecter ? Oui : le disque C Non

Fait une copie de sauvegarde du secteur de dmarrage de C

Se recopie sur le programme de dmarrage du secteur C

Charge et excute la copie de sauvegarde du secteur de A

Figure 4.2 : Action dun virus systme simple

3. Stratgies de lutte contre les virus


Les virus tant le plus souvent dangereux pour lordinateur, il est ncessaire de russir les dtecter pour les liminer. Il existe pour cela de nombreuses techniques.

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.

3.2. Les moniteurs de comportement


Cest un programme qui surveille le systme la recherche dune action trahissant la prsence dun virus. Cette action peut tre par exemple une demande douverture en criture dun fichier programme ou une tentative dcriture sur un secteur de dmarrage. Sur un PC, un tel logiciel se prsente sous la forme dun programme rsidant qui dtourne quelques interruptions du systme gnralement employes par les virus, pour donner lalerte lorsquelles seront employes. Il existe galement des moniteurs matriels, effectuant un contrle au niveau du hardware de faon interdire physiquement un accs douteux certaines zones mmoires. Un tel moniteur offre une scurit absolue, mais doit tre intgr la structure matrielle de lordinateur. Ce genre dantivirus est plus sr que le scanner, car il est susceptible de dtecter un virus inconnu, mais est difficile demploi pour un utilisateur peu averti, car il nidentifie pas formellement un virus et ne peu donc leffacer. Cest lutilisateur de grer lui-mme la prsence du virus.

3.3. Le contrleur dintgrit


Schmatiquement, un contrleur dintgrit va construire un fichier contenant les noms de tous les fichiers prsents sur le disque, ainsi que quelques unes de leurs caractristiques (date de dernire modification, taille, code de redondance cyclique). Ils surveillent rgulirement ces fichiers, et alerteront lutilisateur ds que les paramtres de lun deux auront t modifis. Il effectue alors des tests sur le fichier suspect, pour dterminer si il est infect ou si il sagit dune manipulation de lutilisateur. Linconvnient

est quun programme dj infect lors de son marquage par le moniteur de comportement ne sera pas considr comme suspect par la suite.

4. Les virus contre-attaquent


4.1. Stratgie de base
Avec lapparition des premiers logiciels antivirus, les programmeurs de virus se sont mis chercher des mthodes pour permettre leur virus dchapper la dtection de lantivirus. Ils en ont trouv de nombreuses, allant de la simple astuce de programmation la conception sophistique de virus auto-modifiants. Les mthodes les plus simples sont passives, et consistent rendre le virus le plus discret possible dans son excution. Les contraintes imposes au virus seront par exemple : Dtre le plus petit possible en terme de taille mmoire. Le virus sera donc crit en utilisant au maximum des appels des fonctions toutes faites intgres au systme dexploitation (interruptions du DOS dans le cas des PC et appel des programmes bass en ROM pour la HP48). Il vitera galement de contaminer plus dune fois un mme programme afin de ne pas modifier exagrment sa taille. Pour cela, les virus posent en gnral une sorte de signature sur les programmes infects, qui peuvent tre une modification dans la date de cration du programme ou linsertion dune chane doctets caractristique. A titre danecdote, il existe des virus infecteurs de fichiers qui compressent leur programme hte avant de sy recopier pour ne pas en modifier la taille. Ils le dcompressent ensuite chaque utilisation. De sexcuter rapidement pour ne pas veiller lattention de lutilisateur. En effet, un lecteur de disquette en train dcrire alors que lutilisateur ne sen sert pas peut lalerter. Le virus doit donc possder un algorithme de recherche de fichiers contaminer et dun mcanisme de rplication les plus rapides possibles, quitte, par exemple, abandonner la recherche dune cible sil a dpass un temps limite. De ne pas apporter de modifications visibles la structure des rpertoires utilisateurs, par exemple en renommant un programme.

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. Les virus furtifs


Le principe de la furtivit est de faire croire lantivirus que le virus nest pas l. Les techniques employes diffrent selon que lon considre un virus systme et un virus infecteur de fichiers. Pour pouvoir tre prcis, plaons-nous dans un environnement PC.

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.

4.3. Les virus rpressifs


Les virus peuvent aussi adopter une attitude agressive vis vis des antivirus. En effet, part le scanner et les analyseurs, les antivirus ne dtectent la prsence dun virus

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.

4.4. Les virus autocrypts


Les virus autocrypts sont une tape prliminaire lcriture de virus polymorphes. Leur objectif est de minimiser les chances dtre reconnus par un scanner ou un analyseur en modifiant dune copie lautre une partie de leur code. Ceci est obtenu en chiffrant une partie du code du virus avec une clef de chiffrement qui varie chaque gnration. Ainsi, diffrentes copies dun virus autocrypts ne possdent quune faible portion de code en commun, portion constitue en fait par la fonction de dchiffrement. Du coup, un scanner doit possder une portion du code de cette fonction pour esprer identifier le virus. Un virus autocrypt agit comme suit : Lorsquil est dans un programme hte, il est entirement chiffr lexception de la fonction de dchiffrement. Lors de lexcution du programme hte, cest cette fonction qui est appele en premier. Elle recopie alors le virus dans un espace de mmoire libre, ly dchiffre, et lui passe le contrle. Celui-ci sexcute, puis passe le contrle en retour au programme hte qui sexcute normalement. Lorsquil est en mmoire ltat dchiffr, il recherche un fichier ou un secteur infecter. Celui-ci trouv, il ne sy recopie pas tel quel, mais y cris une version chiffre de lui-mme, avec une nouvelle clef de chiffrement alatoire quil inclut dans la nouvelle fonction de dchiffrement, afin quelle puisse dchiffrer le code de son virus. Ainsi, le code de cette version lui diffre totalement, lexception de la boucle de dchiffement toujours visible.

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.

Zone Prfixe de Programme Saut vers le virus Programme .HOT

Boucle de dchiffrement Clef 1 Code chiffr du virus

V I R U S

Recopie le virus en mmoire Le dchiffre avec Clef 1 Evalue la copie

Copie dchiffre du virus Recherche de fichier sain Oui Non Infection

Action facultative

Retour au programme hte

Figure 5.1 : Fonctionnement dun virus autocrypt infecteur de fichier

Dcale le programme Cible.HOT et crit dans lintervalle un saut vers lemplacement futur de la boucle de dchiffrement

Gnre une clef alatoire Clef 2

Recopie le code du virus aprs Cible.HOT

Chiffre ce code avec Clef 2, lexemption de la boucle de dchiffrement

Ecrit Clef 2 dans la nouvelle boucle de dchiffrement

Amnagements supplmentaires (Rcriture de la zone prfixe, calcul de CRC)

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.

4.5. Les virus polymorphe.


Les virus autocrypts possdent une faille dimportance : la fonction de dchiffrement est conserve dune gnration lautre, et permet donc didentifier aisment le virus laide dun scanner. Do un dfi pos aux programmeurs de virus : concevoir un programme qui puisse fabriquer des boucles de dchiffrement en nombre lev et toutes diffrentes les unes des autres. Ce programme serait inclus dans la partie chiffre dun virus autocrypt. Ainsi, un tel virus naurait potentiellement aucun point commun avec les copies de lui-mme quil gnrerait, puisque le code de sa partie crypte serait chaque fois diffrent, et que celui de sa boucle de dchiffrement prsenterait toujours de lgres variations dune copie lautre, empchant ainsi lexistence de chanes de code commune. Pour cette raison, on baptiserait ce virus : polymorphe. Un virus polymorphe serait invulnrable aux scanners, qui reprsentent la majorits des logiciels antivirus utiliss, et pourrait mme employer des techniques de furtivit pour chapper aux autres antivirus. Or, il est possible dcrire un tel programme gnrateur de fonctions de dchiffrement. Il est appel Moteur de Mutation (Mutation Engine). 4.5.1. Structure dun virus polymorphe La figure 6 illustre la structure possible dun virus polymorphe infecteur de fichiers.

Zone Prfixe de Programme Saut vers le virus Programme .HOT

Code chiffr du virus

Recherche dun fichier sain infecter

Boucle de dchiffrement Code chiffr du virus polymorphe

V I R U S

Programme dinfection

Moteur de Mutation gnrant 1 nouvelle boucle de dchiffrement

Algorithme de recopie et de chiffrement de la partie chiffr du virus Actions dinfections supplmentaires

Figure 6 : Exemple de fonctionnement dun virus polymorphe infecteur de fichier

Mesures de furtivit et/ou de rpression Action facultative

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

Ou encore, si c est un registre inutilis :


Mov a #123 Mov c #000 Nop Mov b #ABC

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 :

Mov a #ABC Mov b a Mov a #123

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)

4.6. Les virus gntiques


Lide des virus gntiques est dintroduire un facteur dapprentissage dune gnration lautre dun virus polymorphe. En effet, il est courant que les copies dun virus polymorphe ayant infect un ordinateur ne soient pas toutes dtectes par un antivirus (cela dpend du type dantivirus employ). Le population des copies ayant survcu lantivirus prsente donc de meilleures caractristiques dadaptation lenvironnement que lensemble des copies possibles en gnral. Or, ds la gnration suivante, le moteur de mutation va crer des copies susceptibles dtre de nouveau repres. On aimerait donc que le moteur connaisse la structure de la boucle de dchiffrement du virus depuis lequel il est excut, et quil en tienne compte en contraignant la nouvelle boucle de dchiffrement quil va gnrer lui ressembler. On suppose implicitement que puisque le virus est toujours actif, sa boucle de dchiffrement prsente des caractristiques utiles conserver. Pour conserver les proprits de polymorphisme et dvolution, on impose tout de mme un taux de variation dune gnration lautre de cette boucle de dchiffrement. Dans la pratique, on utilise des techniques inspires des algorithmes gntiques. La structure dune boucle de dchiffrement est reprsente par un gne, et lensemble des boucles que peut gnrer le moteur de mutation est lensemble des allles de ce gne. Le moteur a sa disposition la liste de toutes ces allles. Le moteur effectue alors, chaque gnration, et de manire alatoire, des croisements entre lallle de la boucle initiale et

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.

5. La riposte des antivirus


Les analyses spectrale et heuristique sont les deux mthodes antivirus les plus avances, qui furent cres pour lutter contre les virus polymorphes. Ces virus ont en effet la particularit de gnrer des copies deux mme qui ne leur sont jamais identiques. Il ne possde donc aucune chane doctet constante qui puisse servir les identifier grce un scanner. Or le scanner est la seule mthode de dtection qui repre le virus tandis quil nest pas actif. Il a donc fallu imaginer de nouvelles techniques pour reprer les virus polymorphes sans devoir attendre quils se manifestent.

5.1. Lanalyse spectrale


Lanalyse spectrale se sert des particularits propres chaque moteur de mutations des virus polymorphes. En effet, celui-ci sert gnrer une boucle de dchiffrement en langage machine, et possde ses propres particularits dans le choix du codage des instructions utilises, au mme titre que les compilateurs ou les assembleurs. Rappelons en effet quune instruction du langage machine peut souvent tre code de plusieurs faons diffrentes, et ainsi chacun de ces programmes utilise tels codages plutt que tels autres. Comme tous font des choix diffrents, il devient possible en analysant le codage des instructions employes dans un code den dduire le programme qui la assembl. Dun point de vue thorique, on reprsente toute instruction code du langage machine par un point dans lespace des codages possibles, puis on tablit les zones de cet espace que chaque compilateur, assembleur ou moteur de mutation utilise. Ainsi, par analyse du spectre des instructions dun code, on peut situer celui-ci dans cet espace et faire des recoupements avec les zones voisines. On en dduit par quoi il a t construit, ce qui permet didentifier un virus polymorphe dont on connat le moteur. On pourra par exemple rechercher dans un code susceptible dtre infect par tel virus polymorphe, si il y a des codes dinstruction que seul le moteur de mutation de ce virus emploie, ou au contraire quil nemploie jamais, et en dduire ainsi la prsence ou labsence du virus. Malheureusement, si une version du virus polymorphe ne prsente aucune particularit, ce qui statistiquement doit arriver, elle ne pourra tre dtecter par analyse spectrale. De plus, un virus polymorphe peut riposter en introduisant dans son programme hte une srie dinstructions inutiles que son moteur ne pourrait pas gnrer, pour tromper lanalyse.

5.2. Lanalyse heuristique


Lanalyse heuristique sert rechercher des codes correspondant des fonctions virales. Supposons, comme cest souvent le cas, que lon veuille trouver les codes qui se chiffrent eux-mmes (cas des virus polymorphe et autocrypts). Un antivirus utilisant lanalyse heuristique contient un dsassembleur lui permettant de lire le code machine et de lexcuter ensuite virtuellement sur des registres simuls. Il considre donc le code comme une simple donne et ne cherche en aucun cas lexcuter. Il pourra ainsi simuler lvaluation dun code suspect en regardant si il essaie de se lire puis de se rcrire au mme endroit, ce qui est la signature dun programme auto-modifiant, et en particulier dun virus polymorphe.

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

Aug- Sep- Oct- Nov- Dec- Dec- Jan- Mar96 96 96 96 96 96 97 97

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.

6.2. Lescalade technique entre virus et antivirus cessera-t-elle un jour ?


On se rend compte travers cet expos quon assiste une escalade sans fin dans les techniques virales et antivirales. Les programmeurs des deux bords dveloppent des trsors dimagination, et rien ne permet de dire sil sera possible dcrire un jour un virus totalement indcelable, ou un antivirus parfait. Il faut donc sattendre voir ces techniques senrichir de plus en plus, jusqu atteindre des limites de complexit o un programmeur ne pourra plus crire un virus seul. On peut montrer mathmatiquement quun scanner parfait ne peut exister. Il sagit dune dmonstration par labsurde supposant lexistence dun tel scanner, puis construisant un programme utilisant cette fonction scanner et qui aboutit la contradiction. Ainsi, un scanner ne peut fondamentalement pas dtecter tous les virus. Dautre part, nous avons vu quun contrleur dintgrit et un moniteur de comportement doivent attendre lexcution du virus pour le dtecter, ce qui est dangereux puisque le virus peut, avant sa dtection, prendre des mesures rpressives qui empcheront justement sa dtection. A long terme, ce sont donc les antivirus utilisant les analyses heuristiques et spectrales qui ont les meilleures perspectives davenir, et il faut sattendre les voir de plus en plus employs.

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.