Christophe Casalegno

Virus informatiques : les origines

IBM Mainframe 7090

Dans ce post je vais vous parler des virus informatiques sous un angle différent : je vais vous raconter l’histoire de leurs origines.

L’histoire commence peu après la seconde guerre mondiale. John Louis Von Neumann, mathématicien considéré aujourd’hui comme l’un des pères des ordinateurs de l’informatique moderne, propose lors d’une conférence à Pasadena en 1948, un article intitulé « théorie organisation des automates« .

Cet article sera également suivi d’une série de cours qu’il donnera en 1948 sur le thème « théorie et organisation des automates complexes« .

L’homme à qui on doit l’idée de programmes stockés en mémoire et modifiables plutôt que des programmes plus rapides mais figés dans les composants matériels évoque alors la possibilité pour un programme, de prendre le contrôle d’un autre programme.

Il y développe également les concepts d‘autoproduction des programmes, faisant de lui et malgré lui, le père fondateur des théories de virologie informatique.

En juin 1959 le magazine « Scientific American » publie un article sur les mécanismes auto réplicateurs écrit par L.S Penrose, intitulé « Self reproducing machines« .

Self reproducing machines

Présentées dans le sommaire du magazine comme traitant de simples unités qui sont construites qui s’assemblent entre elles pour former des unités plus importantes, qui vont à leur tour faire des copies d’elle-même à partir d’autres unités simples.

Le processus met en lumière les mêmes mécanismes d’auto reproduction que ceux pouvant être retrouvés dans les organismes biologiques.

En août 1961 trois jeunes programmeurs des célèbres Bell Laboratories chez ATT, Robert Thomas Morris, Douglas McIlroy et Victor Vyssotsky, développent un jeu appelé Darwin qui se joue sur mainframe IBM 7090. Le jeu est composé d’un programme (Umpire) ainsi que d’une section de la mémoire de l’ordinateur appelé l’arène, dans laquelle deux programmes ou plus, écrits par les joueurs sont chargés.

IBM Mainframe 7090

Les programmes sont écrits en langage machine IBM 7090 sur cartes perforées…

cartes perforees

Chacun des programmes peut appeler un certain nombre de fonctions fournies par Umpire, dans le but d’occuper d’autres emplacements dans l’arène, tuer des programmes ennemis et de remplir toute la mémoire libre par des copies d’eux-même.

Umpire

Le jeu peut se terminer après une durée prédéfinie, ou quand il ne reste plus qu’un seul programme en vie. Le joueur qui a écrit le programme qui reste le dernier survivant est déclaré vainqueur.

Ces programmes, les combattants qui s’affrontent dans une arène ont notamment inspiré le film Tron, dans lequel un programmeur est projeté à l’aide système de dématérialisation, au cœur d’un système informatique.

Tron

Cependant le jeu ne perdure pas car Robert Thomas Morris réussit alors à développer un combattant composé de 44 instructions, capable d’adapter sa stratégie de se protéger que plus personne n’arrive à vaincre. De ce fait, personne ne développe plus d’adversaires et le jeu est abandonné. C’est suite à l’abandon de Darwin, entre 1961 et 1970 que va naître le véritable ancêtre des virus : le Core War.

CoreWar

Appelé également le jeu des programmeurs et à l’instar de Darwin dont il s’inspire, le Core War consiste à faire s’affronter au minimum deux programmes où chacun a pour objectif de détruire le ou les programmes adverses et d’occuper toute la mémoire disponible en assurant sa prolifération.

L’arène se trouve maintenant au sein de l’espace mémoire d’une machine virtuelle appelée Mars au sein duquel l’attaquant, qui ignore où sont situés les différents segments de son adversaire, à la manière d’une bataille navale doit le localiser et le détruire.

Le langage utilisé pour créer les combattants dans le Core War s’appelle le RedCode : attention à ne pas le confondre avec le malware « CodeRed » : ce dernier avait en effet infecté en quelques heures des centaines de milliers de machines dans le monde.

Le RedCode donc, est un langage proche de l’assembleur avec toutefois un jeu d’instructions simplifié.

RedCode

Il s’exécute dans une machine virtuelle appelée Mars pour Memory Array Redcode Simulator. Il existe plusieurs versions du langage RedCode dans lequel le nombre d’instructions peut varier il reste dans tous les cas très proche d’un l’assembleur.

Malgré l’utilisation de ce langage au jeu d’instructions réduit le Core War intègre des sa création la plupart des mécanismes viraux et antiviraux connus aujourd’hui : réplication, protection, polymorphisme, destruction, réparation, furtivité, injection de code, arrêt d’un processus et même la reconnaissance des signatures si chère encore aujourd’hui à la plupart de nos antivirus.

Le vainqueur est celui qui possède à la fin de la partie le plus grand nombre de copies active du programme.

Dans le cas où la partie n’est pas limitée dans le temps, celui qui a réussi à détruire le programmes adverse est déclaré vainqueur. Le Core War est encore joué aujourd’hui et donne lieu encore à des compétitions mondiales.

Dans le même temps en 1971, Bob Thomas créé le Creeper, un programme expérimental qui tourne sur Mainframe DEC PDP-10 équipé du système d’exploitation TENEX, et qui a pour particularité de se recopier tout seul sur un système distant. Il s’agit dans la pratique du premier Worm ou « ver informatique », un autre type de code malveillant souvent confondu à tort avec les virus.

PDP-10

Nous venons de voir comment pendant près de dix ans les mécanismes préfigurant des virus sont apparus mais il faudra encore attendre plus de dix ans pour voir apparaître le premier virus…

En parlant de ce premier virus que peut-on en dire ? De nombreuses sources sur internet ou ailleurs citent « Brain » comme étant le premier virus de l’histoire, celui ci développé en 1986 par deux frères pakistanais, les frères Alvi, contaminait les disquettes 5 pouces 1/4 uniquement, et ne s’attaquait pas aux disques durs.

BRAIN VIRUS

Durant l’infection « Brain » se plaçait sur le secteur de démarrage de la disquette, puis renommait le nom du volume de cette même disquette par l’intitulé (C) BRAIN

Si Brain est le premier virus à faire son apparition sur IBM-PC, il n’est pas le premier virus informatique recensé, dont la paternité revient à Rich Skrenta : un étudiant américain alors âgé de 15 ans, qui en 1982 crée « Elk Cloner » sur Apple II.

Elk Cloner

Elk Cloner envoyait un poème expliquant sa manière de s’auto-répliquer. Rich aurait ainsi réussi à infecter les ordinateurs de ses amis en leur proposant des jeux piratés infectés.

En 1983 le terme virus est utilisé pour la première fois pour définir un programme qui peut infecter d’autres programmes, par Frédéric Cohen. C’est son professeur, Leonard Adleman, qui lui aurait suggéré.

Cohen fera la démonstration d’un « virus-like » sur un VAX11/750 à l’université de Lehigh.

VAX11/750

Par la suite tout va s’accélérer Vienna, Stoned, Ping Pong, Cascade, Jerusalem, SCA, Byte Bandit, les premiers virus polymorphiques de type « Chameleon » arriveront en 1990, suivis, en 1992 de Michelangelo qui infecte 6 millions d’ordinateurs, tandis que trois ans plus tard, le premier macro virus « Concept » apparaît s’attaquant aux documents de Microsoft Word.

Le 2 juin 1998 reste encore un souvenir de terreur pour beaucoup d’informaticiens il s’agit de leur première rencontre avec CIH un virus destructeur appelé également Tchernobyl, capable de flasher le bios de votre carte mère rendant votre ordinateur inutilisable…

CIH / Tchernobyl

Les années qui suivront feront la part belle aux vers informatiques tels que Mélissa, Happy99 ou IloveYou dont la presse s’emparera cataloguant a tort le tout comme “virus”… Voilà c’est ici que ce post s’achève à la fin de la préhistoire des virus qui sont depuis bien longtemps déjà, entrés dans l’histoire que nous leur connaissons.

En video ? Follow the white rabbit: https://www.youtube.com/watch?v=lCHsIZceyVU

You can follow me on : Twitter | Facebook | Linkedin | Telegram

Leave a Comment