LE POINT SUR LES VIRUS par Jack Damn Un virus est tout simplement un programme qui se répand de système en système. Il n'y a aucun moyen d'être plus précis. Il peut soit s'accrocher aux fichiers exécutables (COM ou EXE), soit aux fichiers de système (SYS), aux "overlays" (OVL, etc), aux boot sectors (Premier secteur d'une disquette ou d'un disque dur, mais ceci s'appelerait un Partition Table infector) et aux systèmes de fichiers. (Comme le virus DIR-II) FICHIERS EXéECUTABLES =-=-=-=-=-=-=-=-=-=-= Dans cette catégorie de virus, il y a trois sortes de virus. Il sont les suivants : Overwritting Parasitiques Compagnon Les virus classés dans la catégorie overwritting sont les plus primitifs. Ils ne font que se copier au début d'un fichier "victime". Alors, ce qu'y arrive, c'est que quand le pauvre gars essaie d'exécuter son programme, ce programme infecté exécute tout d'abord le virus qui s'est attaché à lui, et retourne directement au DOS sans exécuter le fichier que le gars voulait exécuter. Les overwritting virus sont destructifs, sans vraiment vouloir l'être. Donc, les fichiers sont à tout jamais détruits. Parfois, quand le virus infecte un fichier de type EXE d'une grosseur plus grande que 64k, l'exécution de ce fichier ne pourra plus se faire. Ils imprimeront le message "Program too big to fit in memory". Le SEUL avantage de ce virus, c'est que la taille du fichier infecté ne change pas. ex: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ <-- C'est le fichier ²²²² <-- C'est le virus ²²²²ÛÛÛÛÛÛÛÛÛÛÛÛÛ <-- C'est le fichier infecté par le virus Les virus classés dans la catégorie parasitiques sont les plus répandus. Ils se copient à la fin du fichier (Augmentant ainsi la taille du fichier), remplacent les trois premiers bytes du fichier par une commande (JMP) qui dira au programme d'aller à la fin du programme pour exécuter le virus. Les trois bytes du début seront sauvés dans le virus pour faire que le fichier original puisse fonctionner convenablement. Cette dernière théorie ne s'applique qu'aux virus infecteurs de fichiers COM. L'infection du EXE est un peu différente. C'est qu'à la place de sauver les trois premiers bytes, il sauve TOUT le "file header". (Qui est de 27 bytes si je me rappelle bien) ex: ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ <-- C'est le fichier ²²²² <-- C'est le virus ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²²²² <-- C'est le fichier infecté par le virus Les virus classés dans la catégorie compagnon sont assez primitifs. Ce type de virus exploite le fait que DOS exécute les fichiers COM avant les fichiers EXE. Alors, ce qu'il fait, c'est qu'il crée des fichiers COM du même nom que le EXE en question. (Le fichier COM est de type "HIDDEN") Alors, en principe DOS exécute le fichier caché COM, et après exécute le fichier EXE. ex: Si on avait un fichier EXE du nom de JACK.EXE Le virus créera un fichier du nom de JACK.COM (Qui sera caché) Alors quand quelqu'un écrira JACK, JACK.COM sera exécuté avant, et par la suite JACK.EXE sera exécuté. AUTRES INFECTEURS DE FICHIERS =-=-=-=-=-=-=-=-=-=-=-=-=-=-= Les virus qui sont infecteurs de fichiers SYS, OVL etc. fonctionnent presque de la même façon. Les fichiers SYS sont habituellement les "DRIVERS", et des affaires de même, alors ils sont exécutés au moment du BOOT up. Les fichiers OVLs (et d'autres), sont des fichiers dits OVERLAY. Ils sont des fichiers auquels le programme principal fait appel et peuvent donc être infectés comme tout autres fichiers exécutables. (Je ne peux pas vraiment m'attarder à des choses que j'ai déjà expliqué!) INFECTEURS DE BOOT SECTOR =-=-=-=-=-=-=-=-=-=-=-=-= Ces virus sont les plus difficiles à détecter SANS l'aide d'un scanner. (D'après moi. Les activités de ces virus sont souvent bien cachées) Ce sont des virus qui se copient au premier secteur d'une disquette (qui est le boot sector), et qui copient le boot sector original quelque part d'autre sur la disquette. TOUTE disquette a un boot sector, qu'elle possède un système ou pas. Si il n'y a pas de système, c'est le boot sector qui imprime le message "NON-SYSTEM DISK OR DISK ERROR". (Quelque chose de même) Ainsi, le virus s'installe dans le boot sector, l'exécute à chaque boot-up, et appelle ensuite le VRAI boot sector situé quelque part sur la disquette en question. Si, par hasard, le VRAI boot sector (situé quelque part sur la disquette) se fait effacer, la disquette ne peut plus BOOTER. Chaque virus place le vrai boot sector dans une place différente sur la disquette. Il peut être soit à la fin du root directory, soit à la fin de la disquette, ou soit dans un secteur que le virus a changé en bad sector, etc. Parfois, le virus en question n'est qu'un boot sector modifié. C'est un boot sector qui fonctionne convenablement, mais qui contient des codes de virus. LES VIRUS ENCRYPTéS =-=-=-=-=-=-=-=-=-= Avant de commencer ceci, laissez-moi vous expliquer comment un programme anti-virus détecte habituellement les virus : Le programmeur analyse bien le virus en question, et il essaye de trouver des morceaux de codes du virus que personne d'autre n'emploierait. Ceci s'appelle le SCAN STRING. Prenons comme exemple un virus qui fait ceci: Virus parasitique infecteur de fichiers COM et qui imprime le message "PEEK-A-BOO! I'LL KILL YOU!". Le programmeur de l'anti-virus utilisera ce message comme étant son SCAN STRING. Ansi, pour la détection de ce virus, il regardera TOUS les fichiers COMs (car CE VIRUS n'infecte que les fichiers COMs) et regardera si ces fichiers contiennent le message "PEEK-A-BOO! I'LL KILL YOU!". Alors, ayant su ceci, les programmeurs de virus ont décidé d'utiliser ce qu'on appelle l'encryption. L'encryption consiste à prendre la valeur numérique de chaque byte et de le modifier. Prenons comme exemple le virus précédant : Si on prenait chaque byte du virus et on ajoutait 1 à sa valeur, le message deviendrait un message incompréhensible. Donc le message "PEEK-A-BOO!" deviendra "QFFL.B.CPP"". Mais en utilisant une simple méthode d'encryption, on ne changeait pas grand chose au travail du programmeur anti-virus. Le programmeur ne faisait que détecter le "QFF.B.CPP"" à la place. Ils ont alors décidé d'utiliser une autre méthode d'encryption plus avancée appellée le semi-polymorphisme. (est-ce que ça se dit?) Le semi-polymorphisme consiste à changer l'encryption à chaque infection. (ou presque) Alors, dans le cas précédent, on ajoutait 1 à la valeur numérique de chaque byte. Maintenant, à la première infection, on ajouterait 1 à sa valeur, et à la deuxième, on ajouterait 2 à sa valeur numérique et ainsi de suite. Mais là encore, les maudits anti-virus ont découvert que ce semi-polymorphisme DEVAIT utiliser un engin dont les bytes restaient constants. Alors, ils utilisaient les bytes de l'engin pour les détecter. L'engin ne consiste que de la partie du virus qui l'encrypte et qui la désencrypte. L'invention la plus récente a été le polymorphisme total. Le virus était encrypté d'un semi-polymorphisme, et l'engin polymorphique était également modifié à chaque infection. (ou presque) Certains engins de polymorphisme total ont été inventés dont : le DAME (Dark Avenger Mutating Engine), le TPE (Trident Polymorphic Engine) et le NED (NuKE Encrypting Device). (Le NED n'étant pas été mis à la disposition du public encore) Ces engins ne sont pas des virus, mais sont des accessoires pour aider un virus à devenir polymorphique. Et jusqu'à présent plusieurs anti-virus PENSENT pouvoir détecter ces virus à 100%, mais ils se foutent le doigt dans le trou-du-cul. Ils peuvent détecter quelques variations de ces virus, mais CERTAINEMENT pas TOUTES! LES VIRUS QUI RéSIDENT EN MéMOIRE =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Les virus qui résident en mémoire ne sont PAS une autre catégorie de virus. N'importe quelle sorte de virus peut résider dans la mémoire d'un ordinateur. Pour se faire, il se trouve une place de libre en mémoire, la réserve, qui réduit la quantité de mémoire nécessaire et copie le virus dans cet espace. En étant résident en mémoire, il S'ATTACHE à une ou plusieurs commandes de DOS ou du BIOS, donc à chaque fois que cette commande est exécutée, le virus s'active et infecte les fichiers ou les boot sectors qui sont présents. Une fois installé en mémoire, le virus est ainsi plus virulent et peut donc infecter plus de fichiers. Un virus de boot sector doit absolument résider en mémoire pour qu'il puisse se répandre. (Il s'attache habituellement au INTERRUPT 13H qui sera discuté plus tard dans un autre numéro de NPC) Les autres types de virus s'attachent souvent à la commande d'exécution d'un programme. (C'est-à-dire qu'il infecte un programme lorsqu'il est exécuté) (La commande c'est le AH=4BH INTERRUPT 21H...Ceci sera aussi expliqué dans un autre numéro de NPC) LES ENGINS "STEALTHs" : -=-=-=-=-=- Il y a plusieurs moyens de se protéger contre les programmes anti-virus. Il y a l'encryption, et maintenant, on va parler des engins dits STEALTH. (ça sonne mieux en anglais) Ces engins consistent à changer certaines données en mémoire vive pour que l'utilisateur de l'ordinateur ne puisse pas se rendre compte de la présence du virus. C'est pour cela que les engins stealth NECESSITENT la présence du virus en mémoire. Les engins les plus populaires sont les suivants : - Faire de façon qu'un fichier infecté conserve sa largeur originale en interceptant la fonction DIR du DOS et de changer la largeur du fichier infecté avant qu'il ne soit imprimé sur l'écran. (DIR du DOS ah=11h et 12h du INTERRUPT 21h) - Faire qu'un fichier infecté se désinfecte lorsque qu'il est "ouvert" par un autre programme en interceptant la fonction OPEN du DOS. (ah=3dh du INTERRUPT 21h) - Faire de façon que si un programme essaye de regarder le premier secteur d'une disquette infectée, qu'il montre le VRAI boot sector. Comme par example, si un virus de boot sector copie le boot sector original au secteur 7, lorsqu'un programme voudrait visionner le boot sector, le virus ferait de façon à ce qu'on voit le secteur 7. (En interceptant ah=2 du INTERRUPT 13h) Ceux-là sont les engins stealths les plus communs. Bon, c'est à peu près ce que vous avez besoin de savoir pour pouvoir vous débrouiller avec les virus. Si vous avez des questions sur ce texte ou sur la programmation d'un virus, vous pouvez me rejoindre sur Cybernetic Violence, The Dialup, The Saphire (514) 458-3102 NUP: Unix, ou sur IRC sous le surnom de FrostByte. Dans mon prochain article, je vais entrer plus dans les détails sur la programmation du virus. (Et aura une allure moins sérieuse..)