Histoire des virus informatique
Les origines

Michel Dubois
myshell.dubois@neuf.fr
http://vaccin.sourceforge.net


On ne peut pas parler des virus informatiques sans étudier auparavant leur histoire. Cette étude va nous permettre de suivre l'évolution de la virologie de sa naissance à aujourd'hui. Nous y découvrirons qu'elles ont été les motivations des premiers codeurs de virus et comment ces motivations ont changées au fil du temps. Nous y verrons aussi comment les virus en général, sont perçus par le public et combien sa prise de conscience a été tardive. Enfin, nous étudierons la mise en place de la lutte antivirale au travers de la création des organismes de veille et d'alerte et le développement des logiciels antivirus.

1  Les origines

Il est difficile de remonter précisément aux origines des virus informatiques. Cependant, nous pouvons affirmer que les premiers ordinateurs, comme l'ENIAC1 inventé en 1946 par P. Eckert et J. Mauchly, n'ont pas connu d'attaque virale. Les ordinateurs des générations suivantes n'ont pas eu cette chance.

1.1  Les fondements scientifiques

1.1.1  John Louis von Neumann

Fondamentalement, ce qui différencie un virus d'un autre programme informatique, c'est sa capacité à se reproduire. Cette capacité s'appuie sur la théorie des automates cellulaires développée par John Louis von Neumann.



Figure 1: John Louis von Neumann (Source Wikipedia Commons)



Mathématicien d'origine hongroise, né à Budapest en 1903, John von Neumann [1], développe sa théorie relative à la structure formelle des automates et des machines reproductrices dans une série d'articles, publiés en 1949: "Theory and organization of complicated Automata". S'appuyant sur la machine de Turing, il développe son automate autour de deux éléments centraux: un ordinateur universel et un constructeur universel. Le constructeur universel est une machine autoreproductrice au sein d'un automate cellulaire. L'ordinateur universel contient un programme qui pilote le comportement du constructeur universel.

L'autoreproduction de l'automate se déroule ainsi:
  1. Le constructeur universel construit un autre ordinateur universel puis un autre constructeur universel;
  2. Le nouvel ordinateur universel est programmé avec une copie du programme contenu dans l'ordinateur universel d'origine;
  3. Le programme du nouvel ordinateur universel est lancé.
John Louis von Neumann est mort sans avoir pu terminer la démonstration de sa théorie. C'est l'un de ses étudiants, Arthur Burks, qui va terminer son travail et en publier les résultats, en 1966, dans "Theory of self reproducing automata by John von Neumann". Par la suite, s'appuyant sur les travaux théoriques de von Neumann, des applications pratiques ont vu le jour parmi lesquelles nous pouvons citer les quines et le jeu de la vie.

1.1.2  Les Quines

Les quines2 sont une application concrète de la mise en oeuvre de l'autoreproduction en informatique. Ces programmes ont pour unique fonction d'afficher, sur la sortie standard de l'ordinateur, l'intégralité de leur code source.

Prenons un exemple. En langage C3 le code d'un quine ressemble à ce que nous pouvons lire dans Code 1.1.2. L'exécution de ce programme affiche à l'écran le contenu exact de son propre code (voir Fig. 2).

#include <stdio.h> int main(void){char n='\n';char b='\\';char q='"';char*p="#include <stdio.h>%cint main(void){char n='%cn';char b='%c%c';char q='%c';char*p=%c%s%c;printf(p,n,b,b,b,q,q,p,q,n);return 0;}%c";printf(p,n,b,b,b,q,q,p,q,n);return
Exemple de quine en langage C



Figure 2: Exemple d'exécution d'un quine



1.1.3  Le jeu de la vie

C'est en essayant de simplifier la théorie de von Neumann sur les automates cellulaires, que John Horton Conway [2] invente en 1970 le jeu de la vie. L'objectif de ce jeu [3] est la survie et la croissance d'une population représentée par des jetons. Le jeu se déroule dans un univers figuré par un quadrillage dont les cases sont des cellules tant au sens biologique que topographique. Chaque cellule connaît deux états: vivant ou mort.



Figure 3: John Horton Conway (Source Wikipedia Commons)



Les principes du jeu sont les suivants (voir Fig. 4):
Principe de naissance
Si 3 des 8 cellules voisines d'une cellule donnée sont vivantes, alors cette cellule devient vivante à la génération suivante.
Principe de stase
Si 2 des 8 cellules voisines d'une cellule donnée sont vivantes, alors cette cellule reste dans son état courant à la génération suivante.
Principe de mort



Figure 4: Les règles du jeu de la vie



Ce jeu ouvre un nouveau champ de recherche mathématique, celui des automates cellulaires. En effet, les mécanismes mis en oeuvre permettent de simuler, de façon réaliste, les mécanismes complexes de l'évolution d'une population.

Avec la publication de la théorie de von Neumann sur les automates cellulaires et les travaux de recherche mathématiques qui suivirent, les fondements théoriques permettant la conception des virus sont posés.

1.2  L'apport de la science-fiction

Avant même l'apparition des premiers virus, plusieurs auteurs de science-fiction imaginent des programmes informatiques qui se reproduisent et infectent les réseaux d'ordinateurs. L'un de ces précurseurs est sans doute Thomas Ryan, qui dans son roman "The adolescence of PI" publié en 1969, décrit un programme qui se copie d'ordinateurs en ordinateurs au travers d'un réseau global. Mais ce sont David Gerrold et John Brunner qui, les premiers, décriront des virus et des vers informatiques dans leurs romans.

1.2.1  Harlie avait un an

Né le 24 janvier 1944, David Gerrold de son vrai nom Jerrold David Friedman, est un auteur de romans de science-fiction. Il est surtout connu comme étant l'inventeur et le scénariste de Star Trek. Influencé par les travaux d'Alan Mathison Turing, il utilise le terme de virus dans la première édition de son roman When HARLIE was one parue en 1972.

HARLIE - Human Analogue Robot Life Input Equivalents - est un ordinateur doté d'une intelligence artificielle capable d'imiter le fonctionnement d'un cerveau humain. Cet ordinateur utilise un programme appelé Virus pour appeler des numéros de téléphone au hasard. Lorsqu'un ordinateur est découvert, le programme Virus se recopie sur l'ordinateur distant (voir Fig. 5). Virus est censé se détruire lui-même de l'ordinateur source à chaque infection mais une déconnection prématurée de la communication téléphonique provoque une mutation du programme viral. Le virus ne se détruit plus après infection. HARLIE développe alors un autre programme Vaccine qui immunise contre le premier programme Virus.

You have a computer with an auto-dial phone link. You put the VIRUS program in it and it starts dialing phone numbers at random until it connects to another computer with an auto-dial. The VIRUS program then injects itself into the new computer. ...I'll just tell you that he also wrote a second program, only this one would cost you - it was called VACCINE.
David Gerrold When HARLIE Was One (1972, Ballantine Books, New York)


Figure 5: Extraits de When HARLIE Was One



Au final, David Gerrold, arrive au constat que pour tout programme écrit pour s'immuniser contre un programme viral - un antivirus -, il existe toujours quelqu'un quelque part pour programmer un autre virus qui annihilera l'action de l'antivirus (voir Fig. 6). Il a eu, avec 20 ans d'avance, le pressentiment de la "guerre" que se vouent aujourd'hui les développeurs de virus et d'antivirus.

Any safeguard that can be set up by one programmer can be breached or sidestepped by another.
David Gerrold When HARLIE Was One (1972, Ballantine Books, New York)


Figure 6: Extrait de When HARLIE Was One



1.2.2  The shockwave rider

Auteur de science-fiction anglais, né le 24 septembre 1934, John Kilian Houston Brunner est sans doute le premier à avoir utilisé le terme de ver pour désigner un programme qui se propage par les réseaux informatiques.

Dans sa nouvelle The schockwave rider4, publiée en 1975, il décrit une société dominée par la technologie et les réseaux informatiques. Le héros, Nick Haflinger, s'est échappé d'un programme gouvernemental destiné à éduquer et endoctriner des enfants surdoués. Dans sa fuite, il découvre peu à peu que l'information, délivrée au travers des réseaux d'ordinateurs, est contrôlée par une élite. La population n'a accès qu'à des données aseptisées et à de la propagande.

And - no, it can't be killed. It's indefinitely self-perpetuating so long as the net exists. Even if one segment of it is inactivated, a counterpart of the missing portion will remain in store at some other station and the worm will automatically subdivide and send a duplicate head to collect the spare groups and restore them to their proper place.
John Brunner The Shockwave Rider (1975, Ballantine Books, New York)


Figure 7: Extrait de The shockwave rider



Afin de paralyser le système, le héros développe un programme, le tapeworm. Le ver se propage dans le réseau, apprenant au fur et à mesure à contourner les mesures de sécurité. Les autorités cherchent à le détruire, mais ses systèmes d'autodéfense - autoreprogrammation et reproduction - les en empêchent. Ils comprennent vite que s'ils veulent détruire le tapeworm, il doivent détruire le réseau d'ordinateurs. Au final, l'ensemble des secrets d'états est révélé à la population par le tapeworm.

1.3  Les prémices

Il est intéressant de noter que les premières applications concrètes à caractère viral, n'avaient aucun but néfaste. Il s'agissait le plus souvent de travaux de recherche développés par des scientifiques soucieux d'améliorer notre quotidien. D'autres y voyait un moyen de s'amuser avec de nouveaux jeux de réflexion. C'est le cas de Darwin.

1.3.1  Darwin & Core War

En août 1961, trois amis informaticiens, Doug McIlroy, Victor Vyssotsky et Robert Morris Senior, ingénieurs des laboratoires Bell Telephone créent un jeu baptisé Darwin5. Ce dernier, fonctionnant sur IBM 7090, est constitué d'un programme l'arbitre et d'une interface représentant la mémoire de l'ordinateur: l'arène.

Les concepteurs du jeu le définissent comme un jeu de survie et d'évolution6. Chaque joueur développe - en langage machine pour IBM 7090 - un ou plusieurs programmes: les organismes. Les organismes développés par un joueur constituent une espèce. Une fois placé dans une section de l'arène, chaque organisme essaie d'une part, de se dupliquer dans un emplacement vide de l'arène et d'autre part, de détruire les autres organismes en attaquant leurs emplacements non protégés. Quand un organisme attaque un emplacement protégé d'un autre organisme, le contrôle du jeu passe à l'organisme attaqué.

À l'extérieur de l'arène, l'arbitre garde une trace de l'évolution de la partie. Il informe les organismes de l'emplacement des cellules protégées et répartit le contrôle du jeu aux organismes. Le jeu continue jusqu'à ce que le temps imparti s'écoule ou jusqu'à ce qu'il ne reste plus qu'une seule espèce en lice.

Pendant plusieurs semaines, les trois amis vont s'affronter jusqu'à ce que Robert Morris mette au point l'organisme ultime qui élimine tous les autres.

Le jeu reste peu connu du grand public jusqu'à ce qu'un nouveau jeu, fortement inspiré de Darwin, apparaisse en 1984: Core War. En mars de cette année là, D. G. Jones et A. K. Dewdney publient un texte7 décrivant le langage assembleur Redcode utilisé dans le jeu. C'est en mai 1984 que le grand public découvrira réellement Core War au travers de la publication de Dewdney: In the game called Core War hostile programs engage in a battle of bits8.

0;};name Imp ;author Walter Hofmann <walterh@gmx.de> org start start mov $start, $start+1
Exemple de warrior écris en redcode



Figure 8: Exemple de jeu Core War



Core War est un jeu informatique dans lequel, deux ou plusieurs programmes - appelés des warriors - se battent pour obtenir le contrôle de l'ordinateur virtuel MARS9. Les warriors sont écrits dans un langage assembleur particulier appelé Redcode. L'objectif du jeu est de forcer les processus des autres programmes à s'arrêter laissant à son propre programme le contrôle total de la machine MARS.

Darwin puis Core War mettent en oeuvre des programmes virtuels qui préfigurent les futurs virus informatiques. En effet, ces organismes ou warriors sont des programmes qui cherchent, entre autres, à se propager dans un ordinateur virtuel afin d'assurer leur survie. Cependant, comme nous l'avons déjà dit précédemment, la principale caractéristique d'un virus est sa capacité à se reproduire. Or les programmes virtuels mis en oeuvre dans Darwin et Core War font beaucoup plus que se reproduire, ils attaquent et cherchent à détruire les autres programmes présents dans la mémoire du jeu. En cela, ils sont plus proches des malwares que nous connaissons aujourd'hui.

1.3.2  Creeper & Reaper

Creeper est considéré comme le premier ver informatique. Développé, en 1971, pour les ordinateurs fonctionnant avec le système d'exploitation Tenex par Bob Thomas de la société Bolt Beranek and Newman (BBN), il rentre dans la catégorie des vers créés par des chercheurs soucieux d'améliorer notre quotidien.

Creeper, est un programme de démonstration10 développé en réponse aux besoins des contrôleurs aériens. Ces derniers, à partir de l'ARPANET11, souhaitaient recevoir une notification lorsque les avions sous leur contrôle passaient de la surveillance d'un ordinateur à l'autre. Le ver se propage de machine en machine et s'efface des machines qu'il visite, au fur et à mesure de sa progression. À chaque exécution, le message I'm creeper! Catch me if you can! s'affiche sur les consoles.

D'autres versions12 du ver ont vu le jour par la suite. Dans ces versions, Creeper se reproduisait de machine en machine sans s'effacer à chaque passage. Face à ce dysfonctionnement, Bob Thomas développe un autre ver Reaper qui efface et élimine Creeper et s'autodétruit ensuite. Le premier ver antiviral est né.

1.3.3  Animal & Pervade

Contrairement à Creeper, Pervade n'est pas un ver utile aux utilisateurs mais plus un outil facilitant le travail du programmeur.

En 1974, John Walker, futur fondateur de Autodesk, Inc., développe un jeu: Animal13 qui, à partir d'une vingtaine de questions, essaie de déterminer le nom de l'animal auquel le joueur pense. Au fur et à mesure des réponses apportées par les joueurs, le programme développe une base de connaissances qui lui permet d'être de plus en plus performant.

Le jeu, écrit en langage assembleur pour UNIVAC14, rencontre un succès immédiat et l'auteur reçoit une demande croissante de copie du programme. Pour répondre à toutes les sollicitations, il décide de développer une routine: Pervade15. Cette dernière, intégrée au jeu, parcours les répertoires accessibles par le réseau et y installe une copie du jeu. Si une copie plus ancienne existe déjà dans le répertoire, elle la remplace par une copie plus récente.

Pour pouvoir se propager ainsi, Pervade utilise une fonctionnalité peu connue des systèmes UNIVAC. En effet, lorsqu'un utilisateur saisit au clavier le nom d'un répertoire, le système exécute alors, automatiquement, le dernier programme qui y a été placé16.

1.3.4  Fred Cohen

Il est impossible de parler de l'origine de la virologie sans parler des travaux du Docteur Fred Cohen. En effet il est le premier à avoir donné une définition formelle à la notion de virus informatique.

Titulaire d'un Master of Science en Science de l'Information de l'Université de Pittsburgh et d'un Doctorat en Électricité de l'Université de Californie du Sud17, le Docteur Fred Cohen s'est spécialisé dans la sécurisation des systèmes d'information. Dans les années soixante-dix, il participe à différents projets comme l'élaboration de protocoles réseaux pour le transport sécurisé de données, de vidéos et de la voix ou encore le développement du paiement électronique sécurisé. Plus tard, il travaille à l'élaboration de mécanismes d'intégrité pour des systèmes d'exploitation sécurisés. En 1989, il obtient le Information Technology Award pour son travail sur la protection de l'intégrité. Dans les années quatre-vingt-dix, il développe des techniques de sécurisation et d'audit pour les systèmes d'information, les principes de la guerre de l'information défensive18, un système innovant de protection de l'information utilisant des techniques de déception...



Figure 9: Le Docteur Fred Cohen



Le 3 novembre 198319, Fred Cohen, après huit heures de travail sur un système VAX 11750 fonctionnant sous Unix, achève le développement d'un programme autoreproducteur de démonstration. En moins d'une semaine, cinq expériences d'infection virale sont réalisées. Dans chacune des cinq attaques, l'ensemble des droits d'accès du système sont alloués à l'attaquant en moins d'une heure20. Le programme autoreproducteur, sans charge hostile, est programmé pour laisser des traces derrière lui afin de suivre sa progression et de faciliter la désinfection. L'expérimentation révèle que non seulement le concept fonctionne mais aussi que l'infection s'étend à une très grande vitesse et qu'elle n'attire pas l'attention de l'utilisateur21.

Le 10 novembre 1983, les résultats de l'expérimentation sont présentés à un séminaire de sécurité informatique. Le responsable de thèse de Fred Cohen, Leonard Adleman22, faisant un lien avec le phénomène biologique, propose le terme de virus pour désigner ces programmes autoreproducteurs. Les virus informatiques sont nés et avec eux une nouvelle branche de l'intelligence artificielle: la virologie informatique [5, page IX].

Par la suite, Fred Cohen va continuer ses expérimentations. Son intuition est que, les techniques d'autoreproduction mises en oeuvre par son virus de démonstration doivent pouvoir s'implémenter sur d'autres systèmes d'exploitation. Malgré la réticence grandissante des administrateurs, mais toujours avec leur autorisation, il crée et implante de nouveaux virus de test dans des systèmes TOPS-20, VMS, VM370 et sur un réseau comprenant l'ensemble de ces systèmes. Finalement, il constate d'une part, que le temps de développement d'un virus est relativement réduit pour un informaticien23, et que d'autre part, ces programmes se reproduisent et infectent leurs cibles en passant outre les droits limités des utilisateurs standards.

Après plusieurs mois de tests, les administrateurs systèmes décident d'interdire les essais. Les conclusions de Fred Cohen se résument en deux points:

De John Louis von Neumann à Fred Cohen, près de trente ans se sont écoulés. De nombreux chercheurs et informaticiens se sont penchés sur le problème des automates cellulaires pour aboutir à une nouvelle science: la virologie informatique. Ce qui au départ n'est qu'un jeu ou le fruit de l'imagination éclairée d'écrivains devient un outil puissant ouvrant un large champ d'application. Parallèlement à cette ouverture, un nouveau sentiment apparaît, l'impact potentiellement néfaste des virus informatiques sur un système d'information fait peur. Il s'en suit une phobie qui va nuire à une meilleure sécurité en confinant les technologies virales dans le secret et favorisant ainsi l'explosion de la virologie des pirates informatiques.

References

[1]
Wikipedia.  von neumann, john . http://en.wikipedia.org/wiki/John_von_Neumann, 2006.

[2]
Wikipedia.  John horton conway . http://en.wikipedia.org/wiki/John_Horton_Conway, 2006.

[3]
Ludwig (M.), Computer viruses, Artificial Life and Evolution. American Eagle Publications, Inc., 1993. Consultable sur http://vx.netlux.org/lib/vml02.html.

[4]
Paget (F.), Vers & Virus. Dunod, 2005.

[5]
Filiol (E.), Les virus informatiques: théorie, pratique et applications. Springer, 2004.

1
L'ENIAC (Electronic Numerical Integrator and Computer) est un calculateur électronique dont la programmation s'effectue en recablant entre eux, ses différents éléments. Composé de 19000 tubes, il pèse 30 tonnes, occupe une surface de 72 m2 et consomme 140 kilowatts. Horloge : 100 KHz. Vitesse : environ 330 multiplications par seconde.
2
Du nom du philosophe et logicien américain Willard van Orman Quine.
3
http://www.nyx.net/~gthompso/quine.htm
4
http://vx.netlux.org/lib/mjb01.html
5
http://en.wikipedia.org/wiki/Darwin_\%28programming_game\%29
6
"Darwin is a game of survival and (hopefully) evolution..."
7
http://www.ociw.edu/~birk/COREWAR/DOCS/guide2red.txt
8
http://corewar.co.uk/vogtmann/first.htm
9
Memory Array Redcode Simulator
10
http://snowplow.org/tom/worm/history.html
11
L'ARPANET - Advanced Research Projects Agency NETwork - est le premier réseau à transfert de paquets développé aux États-Unis par la DARPA. L'objectif de ce projet est de construire un réseau décentralisé qui doit pouvoir résister à une attaque nucléaire. Lancé en 1967, la première démonstration officielle date d'octobre 1972. L'ARPANET est le prédécesseur de l'INTERNET.
12
"The "Worm" Programs - Early Experience with a Distributed Computation" de John Shoch et Jon Hupp. Document disponible sur http://vx.netlux.org/lib/?lang=EN
13
http://www.fourmilab.ch/documents/univac/animal.html
14
http://www.fourmilab.ch/documents/univac/animalsrc.html
15
http://www.fourmilab.ch/documents/univac/pervade.html
16
Ce qui explique que certains utilisateurs recevaient des messages du type Think of an animal en changeant de répertoire [4, page 38].
17
http://all.net/resume/bio.html
18
The Defensive Information Warfare. Les théories liées à la guerre de l'information - The Information Warfare - sont étudiées et développées par les américains depuis plusieurs décennies. L'un des spécialistes en la matière, Martin Libicki, définit sept formes de guerre de l'information: Command and Control Warfare, Intelligence Based Warfare, Electronic Warfare, Psychological Warfare, Hacker Warfare, Economic Information Warfare et Cyber Warfare. Voir l'article en ligne: http://www.ndu.edu/inss/strforum/SF_28/forum28.htm.
19
http://all.net/books/virus/part5.html
20
Quand les administrateurs des systèmes ayant servit aux expériences ont eu connaissance des résultats, ils décidèrent d'interdire toute nouvelle expérimentation. Fred Cohen ne peut que constater que This apparent fear reaction is typical, rather than try to solve technical problems technically, policy solutions are often chosen..
21
Le virus s'installe dans un programme lors de son appel par l'utilisateur. Cette infection dure moins d'une demie seconde: l'utilisateur ne s'aperçoit donc pas du délai supplémentaire d'exécution de son programme
22
Leonard Adleman, né le 31 décembre 1945, est chercheur en informatique théorique et professeur en informatique et en biologie moléculaire à l'Université de la Californie du Sud. Il est, avec Ron Rivest et Adi Shamir, le co-inventeur du cryptosystème RSA. http://www.usc.edu/dept/molecular-science/fm-adleman.htm
23
Fred Cohen demande à différents programmeurs de développer des virus. Les temps de développement vont de 6 à 30 heures.
Page précédente SourceForge.net Logo

This document was translated from LATEX by HEVEA.