• Aucun résultat trouvé

12.2 Les macro-virus Office 397

12.2.1 Le virusTitle 397

12.2.2 Quelques autres techniques virales 406 12.2.3 Evolution des macros-virus Office. . . .. 436 12.3 OpenOffice et le risque viral . . . .. 439 12.3.1 Gcncralites : la faiblesse d'OpenOjJice .. 439 12.3.2 Un cas simple de virus pour OpenOjJice. . . .. 440

12.4 Langage PDF et risque viral 444

12.4.1 Le format PDF 446

12.4.2 Le langage PDF. . . .. 456 12.4.3 Mecanismcs de securite et langage PDF . . . .. 464 12.4.4 Attaques virales via le PDF. . . .. 468

12.5 Conclusion 473

Exercices . . . .. 474

Projets d'etudes 477

Virus OpenOjJicepolymorphe . . . .. 477 Generateur PDF polymorphe . . . .. 477

Troisieme partie - Les virus : applications

13 Introduction 481

14 Virus et applications . . . .. 485

14.1 Introduction 485

14.2 Etat de l'art . . . .. 489

14.2.1 Le ver Xerox 492

14.2.2 Le virus KOH . . . .. 493

14.2.3 Les applications militaires 497

14.3 La lutte contre le crime . . . .. 499 14.4 Generation environnementale de clefs cryptographiques ... 501 14.5 Conclusion . . . .. 506 Exercices . . . .. 507

15 Les virus de BIOS 509

15.1 Introduction 509

15.2 Structure et fonctionnement du BIOS 512

15.2.1 Recuperation et etude du code BIOS 513 15.2.2 Etude detaillee du code BIOS. . . .. 514 15.3 Description du virus VBIOS . . . .. 518 15.3.1 Concept de secteur de demarrage viral 519

15.4 Implementation de VBIOS 522

15.5 Perspectives et conclusion . . . .. 525 16 Cryptanalyse appliquee de systemes de chiffrement 527

16.1 Introduction 527

16.2 Description generale du virus et de l'attaque . . . .. 529 16.2.1 Le virus VI : premiere etape de l'infection 530 16.2.2 Le virus V2 : seconde etape de l'infection. . . .. 531 16.2.3 Le virus V2 : la cryptanalyse appliquee 532 16.3 Description detaillee du virus YMUN20 . . . .. 533

16.3.1 Le contexte 533

16.3.2 Le virus YMUN20- VI 534

16.3.3 Le virus YMUN20-V2 537

16.4 Conclusion 540

Projet d'etudes : programmation du virus YMUN20 540

Conclusion

1 7 Conclusion... 545

Avertissement sur Ie CDROM 549

References 551

Index 563

Table des figures

2.1 Schema d'une machine de Turing. . . .. 10 2.2 Voisinage de von Neumann. . . .. 23 2.3 Schema de l'automate autoreproducteur de von Neumann ... 29 2.4 Automate autoreproducteur de Ludwig. . . .. 36 3.1 Definition formelle d'un ensemble viral. . . .. 46 3.2 Illustration de la definition formelle d'un virus 48

3.3 Modele de flot avec seuil de 1 .. 59

3.4 Classes IIn et En et leur hierarchic 76

4.1 Comparaison entre le modele theorique et l'infection reelle

d'un systeme . . . .. 83 5.1 Classification des infections informatiques 111 5.2 Repartition des infections informatiques (janvier 2002) 122 5.3 Mccanismcs d'action d'un cheval de Troie. . . .. 129 5.4 Infection par ecrasement de code .. . . .. 131 5.5 Infection par ajout de code (position terminale) 133 5.6 Structure d'un fichier executable PE . . . .. 134 5.7 Infection par entrelacement de code (fichier PE) . . . .. 138 5.8 Infection par accompagnement de code. . . .. 139 5.9 Infection de code source. . . .. 142 5.10 Nombre d'attaques par macro-virus. . . .. 154 5.11 Nombre de serveurs infectes par Codered en fonction du temps 168 5.12 Nombre de serveurs infectes chaque minute par Codered . . . .. 169 5.13 Repartition des serveurs infectes par Sapphire (H

+

30

minutes) 170

5.14 En haut

a

gauche, un modele classique de propagation. En haut

a

droite, modele de ver

a

reveil periodique, En bas, profil de propagation d'un ver contournant des mccanismes

de defense . . . .. 171 5.15 Evolution de l'attaque par W32/Bugbear-A (Octobre 2002) .. 173 5.16 Evolution de l'attaque par W32/Netsky-P et W32/Zafi-B

(Juillet - aout 2004) 174

8.1 Structure d'infection par vbashp 218

9.1 Principe de fonctionnement du virus vcomp_ex 237

10.1 Organisation des donnees dans la pile 294

10.2 Structure de la requete lIS utilisee par lIS_Worm 297

10.3 Organisation du code d'IIS _ Worm 298

10.4 Charge finale du ver Xanax . . . .. 312 11.1 Partition et infection d'un reseau cible selon une structure

a

deux niveaux 368

11.2 Exemple de graphe ayant un vertex cover de taille 3 375

11.3 Micro-roseau simule par WAST 379

11.4 Taux d'infection du reseau (TIR) et Taux de surinfection

(TS) pour a == 2,4,6,8,9,10 . . . .. 385 11.5 Taux d'infection du reseau (TIR) et Taux de surinfection

(TS) pour a E [0,5] et 0 < Po< 0.10 386 12.1 Principe general d'action des macro-virus 398 12.2 Lancement du Visual Basic Editor de Word . . . .. 399 12.3 Code du virus W97/Title sous Visual Basic Editor . . . .. 400 12.4 Structure d'un fichier PDF modifie . . . .. 450 12.5 Rapport Calipari declassifie (agauche) et la version classifiee

(adroite) . . . .. 451

16.1 Organigramme du virus YMUN-VI 531

16.2 Organigramme du virus YMUN-V2 (etape infection) 532 16.3 Organigramme du virus YMUN-V2 (charge finale) 533 16.4 Infection par le virus YMUN20-VI . . . .. 535 16.5 Action du virus YMUN20-VI . . . .. 536

16.6 Organigramme fonctionnel d'YMUN20-V2 538

Liste des tableaux

1.1 Exemple de code viral. . . 4 2.1 Machine de Turing pour le calcul de la somme de deux entiers 11 2.2 Table de transition de la boucle de Langton. . . .. 32 2.3 Configuration initiale de la boucle de Langton. . . .. 36 2.4 Configurations initiales des automates de Byl 37 2.5 Table de transition de byll. . . .. 37 2.6 Table de transition de byl2. . . .. 38 5.1 Virus biologiques - virus informatiques : comparaison 120 5.2 Ports et protocoles utilises par quelques chevaux de Troie . . .. 130 5.3 Formats permettant l'existence de virus de documents. . . .. 153 5.4 Repartition des differents types de macro-virus. . . .. 155

8.1 Le virus vbash 213

8.2 Virus vbashp :fonction de restauration . . . .. 218 8.3 Virus vbashp gestion de la surinfection (Debut CPV) 219 8.4 Virus vbashp :infection (suite et fin CPV) .. 220 8.5 Le virus UNIX O W R . . . . 224 8.6 Le virus UNIX H E A D . . . . 224

8.7 Le virus UNIX COCO 226

8.8 Le virus UNIX_BASH (debut) 227

8.9 Le virus UNIX_BASH (suite et fin) 228

9.1 Valeurs octales, masques des autorisations d'acces et type de fichiers . . . .. 239 9.2 TVDes nossibles Dour la fonction ftw . . . .. 265

12.1 Points d'appels des macros preexistantes 418

12.2 Agencement d'un macro-virus chiffrant 426

14.1 Agent aveugle de recherche de donnees 505

15.1 Structure du secteur de demarrage maitre 521 15.2 Structure des entrees de la table de partition. . . .. 522 15.3 Structure d'un secteur de demarraae secondaire (OS) 523

Les virus : aenese et theorie

1

Introduction

Comment decrire un virus? Comment expliquer ce qu'est un virus? Entre la definition formelle du mat.hcmaticicn! qui suit:

VM VV (M, V) E VB [V

c

II*]et [M E M] et [Vv E V [VHM [VtVj EN

[ 1. PM(t)== j et 2. $M (t)== $M (0) et

3. (DM(t,j), ... ,DM(t,j

+ Ivl -

1)) == v]

*

[::lv' E V[::It', t",j' E N et t' > t

[ 1. [[(j'

+ Iv'l)

:S j]ou [(j

+ Ivl)

:S j']]

2. (DM (t' , j'), ... ,DM (t' , j'

+

Iv'I - 1))== v' et 3. [::It'' tel que [t < t" < t']et

[PM(t") E {j', ... ,j'

+ Iv'l-

I}]

]]]]]]]]

et celle du programmeur, donnee en table 1.1, quelle relation existe-t-il?

Laquelle est la plus adaptee?

La notion memc de virus recouvre dans l'esprit du grand public de nom-breuses acceptions, au point qu'elle est le plus souvent confondue avec la no-tion, plus generale, d'infections informatiques. Le terme de virus est apparu en 1988. Pourtant, les organismes artificiels que ce terme designe existaient concretcmcnt deja depuis plusieurs annees et leurs bases theoriques etaient encore plus anciennes.

1 Cette definition. dueaFred Cohen f511. sera etudiee en detail dans le chanitre 3.

for i in *.sh; do

if test" .j$i"!= "$0" ; then tail -n 5 $0 Icat >> $i;

fi done

TAB. 1.1. Exemple de code viral

Une science, un domaine de connaissances ne parviennent

a

un stade

de maturation que lorsqu'ils ont pu etre forrnalises. Cela permet ensuite de mieux en comprendre tous les aspects et toutes les implications. Dans le domaine de la virologie informatique, cette formalisation, si elle n'est pas encore totalement achevcc, a debute il y a maintenant soixante-dix ans, avec les travaux de Turing. Les resultats theoriques ulterieurs, ceux de von Neu-mann, de Cohen, d' Adleman et de quelques autres, ont permis de jeter une base que l'on peut qualifier de solide, concernant

a

la fois les virus et autres infections informatiques et leur inevitable et indispensable contrepartie, la defense et la lutte antivirale.

La formalisation du mathematicien a largement contribue au developpe-ment des virus cux-memcs. De nombreux programmeurs ont tres vite trouve un immense champ d'applications. Cette realite est peut-etre moins connue.

Les premiers virus ne sont que la mise en application des resultats de von Neumann sur les automates autoreplicatifs. De meme, par exemple, le poly-morphisme viral n'est pas apparu ex nihilo. II a ete directement inspire par les travaux theoriques de von Neumann et de Cohen. Et d'autres exemples pourraient etredonnes, Ils montreraient que les virus informatiques que nous connaissons ne sont, en fait, que la mise en pratique des perspectives offertes par le champ theorique,

La formalisation theorique a egalement permis de comprendre l'autre face de la virologie informatique,

a

savoir la lutte antivirale. Le choix, des le depart, du scanning comme technique de detection principale, n'est pas le fait du pragmatisme ou du hasard, mais bien un choix raisonnc et etaye par des considerations theoriques prealables, qui, en memc temps, ont montre les limites de cette technique. II en est de memc pour des techniques antivirales plus efficaces comme le controle dintegrite. Ces memes resultats permettent de fortement relativiser ou d'infirmer les arguments marketing outranciers, Dour ne nas dire irrealistes et faux. de certains editeurs de loaiciels antivirus.

Ces derniers tentent souvent de nous vendre la pierre philosophale et la quadrature du cercle dans un meme emballage.

L'importance de la formalisation theorique de la virologie informatique ne peut etre nice meme si elle n'est pas achevee, C'est pourquoi elle constitue la premiere partie de cet ouvrage. Afin de ne pas effrayer le lecteur non-mathematicien et dans un souci de clarte, certaines preuves mathematiques ont ete omises, renvoyant le lecteur interesse aux articles ou livres originaux.

C'est la meilleure facon de rendre hommage et de payer tribut

a

ceux qui

ont defriche avec succes Ie monde fascinant des virus informatiaues.

Les bases de la formalisation de Turing a von Neumann

(1936-1967)

••

L 'art de la pedaqoqie est fait d 'humilii« et non de [aiuite : le but de tout enseignement n'esi pas que le professeur, par un discours inuti-lement complique et pedant, paraisse intelligent, mais que ses eleues en aient vaincu les moindres difficultes et en ressortent grandis.

Emile Gabauriaud-Pages

L'art d'enseigner aux autres (1919)

2.1 Introduction

La formalisation des mecanismcs viraux utilise essentiellement la notion de machine de Turing. Cela n'est pas etonnant puisque les virus informa-tiques ne sont en fait que des programmes, certes particuliers, et que la formalisation de l'informatique a debute avec les travaux d'Alan Turing! en 1936 [218].

Une machine de Turing est - definition en premiere approche qui sera explicitee dans ce chapitre - la representation abstraite et generale d'un or-dinateur et des programmes susceptibles d'etre executes sur cet oror-dinateur.

Le lecteur qui souhaiterait approfondir les relations exactes entre les ordi-nateurs reels et leur modele theorique pourra lire [40, p. 68]. Ce modele theorique a permis de repondre

a

de nombreux problemes fondamentaux parmi lesquels :

1 En fait, les annees 1930 ont connu une intense production de resultats dans ce do-maine. La formulation de Turing a ete redefinie, independamment et de manicre diffe-rente quoique equivalente, par plusieurs auteurs, notamment Church[49],Kleene[146], Markovf1701 et Post f1841.

- Soit une fonction

f

donnee. Cette fonction est-elle « effectivement » calculable? En d'autres termes, existe-t-il un algorithme permettant de realiser, de calculer f?

Pour ce qui nous interesse, les virus informatiques, la fonction

f

est celIe de l' autoreproduction. Un programme peut-il se reproduire lui-merne ? Les travaux de Turing et ceux de ses exegetes ne se sont pas interesses

a

ce probleme particulier.

Ce n'est que quelques annees plus tard, que John von Neumann et Ar-thur Burks [40,221]' partant des travaux et des resultats de Turing, se sont interesses

a

la notion d'autoreproduction, dans le cadre des automates cellu-Zaires. Ils ont prouve, en particulier, que ce phenornene pouvait etre realise en pratique. Toutefois, l'exemple qu'ils ont exhibc etait d'une complexite telle que plusieurs chercheurs ont par la suite tente de trouver d'autres exemples plus simples, et surtout plus faciles

a

etudier et

a

realiser en pratique, pour comprendre cette propriete d'autoreproduction. La question principale etait de savoir jusqu'a quel degre de simplicite il etait possible de descendre pour un automate, tout en conservant la propriete d'autoreproduction.

Par la suite, plusieurs auteurs, en particulier Codd [50] en 1968, Her-man [134] en 1973, Langton [158] en 1984 et Byl [41] en 1989 sont parvenus

a

construire d'autres automates autoreproductifs, beaucoup plus simples.

L'autoreproduction est devenue une realite pratique. Avec elle, les virus in-formatiques et.aient nos, mais il ne s'est agi que d'une premiere naissance. II faudra encore quelques annees avant de voir apparaitrc de tels programmes et le terme memc de virus.