L’objectif de cette partie est de présenter
les principes généraux de la programmation des virus et des logiciels
antivirus, par ordre de complexité croissante des techniques employées, et avec
une volonté de généralisation.
Elle a été entre autre inspiré par les
travaux de Mark Ludwig, chercheur américain, et en particulier par son livre
‘Du virus à l’antivirus’.
- Structure d’un virus informatique
1. Définition d’un système informatique
On entendra par ordinateur
une machine dotée d’une mémoire contenant des programmes et des données, et
d’une unité centrale (ou CPU) capable d’exécuter ces programmes, de lire et
d’écrire en mémoire. Pour la CPU, toute information située en mémoire (programme
comme donnée) peut être modifiée, donc en particulier, un programme peut
s’auto-modifier ou modifier d’autres programmes.
On entendra par système informatique un
ordinateur, isolé ou en réseau, muni d’un système d’exploitation et de
logiciels et données utilisateurs. On définit deux types de fichiers :
ceux utilisés par le système et un éventuel administrateur système, et ceux de
l’utilisateur normal. Dans un usage courant, on souhaite conserver l’intégrité
de certains fichiers, c’est à dire d’en interdire toute modification non
autorisée. Ce peut être le cas des fichiers systèmes en général, ou de fichiers
utilisateurs de type logiciel ou données importantes. Le virus informatique,
par son principe de fonctionnement, va porter atteinte à l’intégrité des fichiers,
et présente donc une menace.
1.2.
Principe de fonctionnement
du virus
Un virus informatique est un programme,
intégré dans un programme hôte ou localisé dans un champ spécifique de la
mémoire, capable lors de son exécution de créer une copie de lui même qu’il
insère dans un autre programme hôte ou sur un autre champ de mémoire. Ce
programme possède donc une propriété essentielle et originale : il
s’auto-reproduit. De tels programmes sont donc assez mobile, et échappent
aisément au contrôle de l’utilisateur, c’est pourquoi ils sont souvent utilisés
pour véhiculer un algorithme destructeur.
Un virus doit
contenir au moins deux parties pour pouvoir se reproduire lui même : un
algorithme de recherche d’un fichier hôte à infecter, et un algorithme de recopie
sur le fichier hôte. On y ajoute éventuellement une troisième étape
(destruction, espionnage…) qui sera détaillée en 1.5.
L’organigramme fondamental d’un virus
informatique est donc le suivant :
On verra par la
suite qu’il s’agit la d’un schéma simplifié, et que chacune de ces parties
existe sous de très nombreuses variantes que l’on choisira en fonction de
l’environnement dans lequel doit évoluer le virus : nature du système
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 première fois par Fred Cohen en 1985 dans une thèse sur les programmes
auto-reproducteur (voir Références Bibliographiques), et s’appuie sur des
similitudes entre les virus informatiques et biologiques.
Ils ont en effet pour point commun
d’introduire une séquence d’instruction, sous forme de programme pour l’un et
de morceau d’ADN pour l’autre, dans un environnement (la cellule ou
l’ordinateur), où cette séquence va être exécutée, c’est à dire reproduite. De
plus, les virus les plus évolués possèdent des moteurs de mutations leur
permettant de générer des versions nouvelles d’eux même, et sont capables de
s’adapter à la présence d’un antivirus pour optimiser leur chance de lui
échapper (virus génétiques, voir 4.6). Ils ont ainsi des propriétés qui
rappellent les capacités de mutation et d’adaptation des virus biologiques,
leur point commun étant de devoir s’adapter à un environnement hostile, où il
faut affronter selon le cas le système immunitaire ou le logiciel antivirus.
Cependant, le terme de virus est sujet à
polémique. En effet, la métaphore biologique qui l’a inspirée est limitée car
ces deux entités agissent dans des environnements totalement différents, et
leurs fonctionnements détaillés n’ont rien en commun. En particulier, la notion
de vie attachée au virus biologique ne peut être appliquée à un programme
informatique. De plus, le terme ‘virus’ est porteur d’une forte charge
émotionnelle, largement entretenue par la presse informatique, et qui déforme
l’opinion qu’on peut se faire de ces programmes. Enfin, pour beaucoup de gens,
un virus est simplement un programme nuisible, indépendamment de toute notion
d’auto-reproductibilité. Une dénomination mieux appropriée a été suggérée par
Mark Ludwig dans son ouvrage de référence ‘Naissance d’un virus’ : il
s’agit de Code Parasite Auto-Propageable (CPA). Dans le présent rapport, le
terme virus sera toujours à prendre dans le sens de CPA.
1.4.
Les principaux types de
virus : Virus système et infecteur de fichier
On distingue 2 grandes catégories de virus,
indépendamment de la machine pour laquelle un virus est écrit : les virus
infecteurs de fichiers et les virus systèmes (ou résident).
Tout système informatique possède des
programmes à l’usage de l’utilisateur, qui sont susceptibles de contenir un
virus. Ceux-ci sont dit infecteurs de fichiers. Ils sont exécutés à chaque
appel du programme qui les contient et assurent alors leur propagation.
D’autre part, à chaque mise sous tension,
tout ordinateur commence par évaluer une série de programmes de démarrage qui
lui permettent de se configurer. Bien souvent, on peut modifier le contenu de
ces programmes pour y introduire le code d’installation d’un virus ce qui
permettra à celui-ci de prendre le contrôle du système dès sa mis en service.
Un tel virus est dit virus système.
La différence entre ces deux virus viens donc
de ce que le second infecte des programmes du système et n’est exécuté qu’au
démarrage, tandis que le premier infecte les programmes de l’utilisateur et est
exécuté à chaque appel de l’un d’eux. Il existe également des virus hybrides
présentant à la fois ces deux modes de fonctionnements.
Le fonctionnement de ces virus dépend
intimement du système informatique, c’est à dire :
·
Du
microprocesseur employé, car un virus efficace est programmé en langage machine
et n’est donc pas portable.
·
De
la façon dont interagissent les périphériques et l’unité centrale. Par exemple,
les PCs emploient une table d’interruptions utilisée par les virus pour
détourner certaines fonctions du système, dont on ne trouve pas l’équivalent
sur une calculatrice de type HP48.
·
Du
fonctionnement du démarrage de la machine, dans le cas des virus systèmes.
·
De
la structure des objets exécutables. Sur un PC, les fichiers .COM, .SYS et .EXE
qui sont les cibles privilégiées des virus infecteurs de fichiers ne sont pas
structurés de la même façon en mémoire. De même pour les objets programmes et
librairies que nous étudierons sur la HP48.
On constate au vu de ces contraintes qu’un
virus est un programme très spécifique, adapté à une cible précise, et dans un
environnement précis. Cependant, un virus peut être conçu de telle sorte qu’il
infecte toute forme de code, même celui qui doit encore être compilé ou
interprété avant d’être exécuté. Ainsi, un virus peut infecter des programmes
de types différents, ou encore un programme en C ou en Basic et n’est donc
absolument pas limité à l’infection des programmes écrits en langage machine.
1.5.
La charge facultative d’un
virus
D’un certain point de vue, le virus
informatique est un support pour véhiculer un programme de façon invisible et
efficace. Sous ce point de vue, la partie facultative décrite en 1.2 a un rôle
essentiel. Dans la majorité des virus, il s’agit d’un programme destructeur,
visant à effacer des fichiers importants ou à planter la machine. Il peut aussi
servir à espionner le système pour, par exemple, lister les mots de passes des
utilisateurs et les transmettre au programmeur du virus. Le champ des
possibilités a en fait l’imagination du programmeur pour seule limite.
Notons que cette action peut aussi être
bénéfique. Il existe par exemple des virus antivirus, qui élimine certains
virus cibles lorsqu’ils sont présents sur le programme hôte qu’ils infectent,
et contrôlent ensuite leur hôte pour alerter toute tentative d’infection.
D’autres servent à économiser de la mémoire en compressant le programme hôte,
et en le décompressant à chaque exécution.
Ainsi, la propriété de reproduction autonome
des virus présente à la fois de nets risques et de grands avantages. C’est donc
une technique digne d’étude.

je connais une personne qui fait la suppression virus langon à votre domicile c'est tiptop
RépondreSupprimer