Mettez-vous à notre place, comment feriez-vous pour détecter de tels virus ? Vous devrez désassembler, analyser et comprendre le générateur de code du virus, et ce n'est pas une tâche aisée. Mais, une fois ce travail accompli, vous pourrez déterminer la relation entre les octets (des règles telles que, si l'octet de l'offset 14 est 67 alors l'octet de l'offset 19 doit être 73). Finalement, vous pourrez écrire un sous-programme qui sera inclus dans le logiciel anti-virus et qui détectera toutes les versions du virus. Nous en sommes maintenant arrivés à ajouter du code alors que jusqu'à présent nous nous étions contentés d'utiliser des chaînes de recherche. Ce qui est beaucoup plus difficile et source d'erreurs. Si vous faites la plus petite faute, vous déclencherez des fausses alarmes ou ne détecterez pas un ou plusieurs exemplaires du virus qui pourront ainsi "renaître de leurs cendres". De plus, si vous ne savez qu'utiliser des chaînes de recherche publiées par d'autres, vous ne pourrez absolument pas détecter ce virus. Chaque virus utilisant un tel décrypteur/chargeur génère une grosse quantité de travail pour les éditeurs d'anti-virus et certains d'entre eux abandonnent la partie (à la grande joie des auteurs de virus). Relevons encore la barrière. Puisque les chercheurs anti-virus doivent absolument désassembler, analyser et comprendre le générateur de code du virus, les auteurs de virus ont décidé de leur compliquer encore plus la tâche. Cette technique est utilisée dans Virus 101 : une partie du code est écrite de façon presque incompréhensible et utilise des fonctionnalités du 8088. Une autre technique consiste à rendre l'exécution pas à pas extrêmement difficile. Un de ces virus utilise le pipeline 8088 de telle façon que la machine redémarre lorsque vous l'exécutez pas à pas. Si vous exécutez le virus normalement, cette instruction effectue juste un branchement vers l'instruction suivante. 1260 et la famille des V2 utilisent une autre méthode. Ils disposent de deux couches d'encryptage. Quelques douzaines d'octets du virus sont encryptée à l'aide d'une autre routine. Ainsi vous vous contentez de désassembler le virus après le premier désencryptage, les parties importantes du virus n'auront aucun sens. Vous devez donc vous débarrasser de la seconde couche d'encryptage, ce qui ne peut pas être fait avec Debug. Debug place dans le code une interruption d'un octet (interruption 3 0C Ch) et sauvegarde l'octet qui se trouvait là. Lorsque le programme arrive à cet endroit, l'INT 3 est exécutée, stoppe le programme et déclenche l'affichage de Debug. Debug utilise également une seconde méthode qui consiste à mettre le processeur en mode pas à pas. Chaque instruction exécutée provoque alors une interruption 1 qui peut être programmée à volonté pour, par exemple, afficher le contenu des registres. Par conséquent, Debug a besoin des interruptions 1 et 3. Tenbyte, 1260 et la famille des V2 utilisent ces interruptions pour leur deuxième couche d'encryptage. La famille française Fichv utilise les interruptions 1 et 3 dans une séquence clé variable. Tout cela explique pourquoi vous ne pouvez pas exécuter ces virus en mode pas à pas. Dans le code des virus de la famille des V2, vous rencontrez très souvent une instruction 0cch qui appelle les interruptions 3 et 1 pour décrypter les deux octets suivants: l'une utilisée pour la clé, l'autre pour l'octet à décrypter. Il est impossible d'écrire un programme pour décrypter automatiquement le virus, car certains octets 0cch ne sont pas exécutés et par conséquent ne servent pas au décryptage des deux octets suivants. Un programme traitant systématiquement tous les 0cch serait donc amené à décrypter des parties non cryptées. Lorsque l'un de nos chercheurs a désassemblé Fish6, il nous a avoué qu'il lui avait fallu deux semaines pour comprendre le virus et deux autres semaines pour retrouver une vue normale. Désassembler Whale, c'est comme faire des mots croisés dans Le monde. Si vous devez un jour partir su une île déserte avec un micro et Debug et que vous avez à choisir un virus pour passer le temps, emmenez Whale. Même un an après son apparition, la majorité des détecteurs ne sont toujours pas capables de détecter toutes ses versions. Heureusement, Whale ne peut pas fonctionner dans un environnement normal, mais il reste toujours la possibilité de le voir un jour faire des petits. Cette technique de protection contre le désassemblage est parfois appelée "armure". Elle est très souvent utilisée par certains développeurs pour lutter contre le piratage. Après avoir disserté sur les techniques de dissimulation, prenons maintenant un exemple réel et étudions son impact. Le virus Tequila est très connu en Europe et commence aujourd'hui à apparaître aux États-Unis. Il est originaire de Suisse et a commencé à se répandre lorsque l'ami de son concepteur l'a installé sur les disquettes d'un vendeur de "Shareware". Ce qui lui a donné un bon départ dans la vie. Lorsqu'un programme EXE infecté est exécuté, le virus s'installe sur le secteur de partition du disque dur. Pour ce faire, il utilise une autre technique de dissimulation: le "tunneling". Tequila met le processeur en mode pas à pas, et appelle l'interruption 13h pour réinitialiser le disque. Chaque instruction déclenche l'appel de l'interruption 1 que Tequila a reprogrammé pour connaître l'emplacement de la mémoire utilisée. Il cherche ainsi à connaître l'adresse du contrôleur disque. Lorsqu'il l'a obtenue, il désactive le mode pas à pas. A ce stade, en faisant directement appel au contrôleur, Tequila détourne tous les programmes bloquant les tentatives d'écriture sur le disque par l'intermédiaire des interruptions. Il s'installe alors sur le secteur de partition. Au démarrage de la machine, le secteur de partition est exécuté avant l'intervention de tout logiciel anti-virus. Tequila se charge en mémoire et dissimule le secteur de partition de telle façon que tous les logiciels qui examinent cette partie du disque ne voient que le secteur original. Tequila peut maintenant infecter les fichiers. Il intègre un générateur de code complexe qui rend le décrypteur/chargeur extrêmement variable. Il n'existe que quelques chaînes de recherche d'un ou deux octets. La difficulté est telle que certains détecteurs n'arrivent pas à trouver toutes les versions du virus ou que d'autres déclenchent des fausses alarmes. Le virus ajoute 2468 octets à chaque fichier infecté. Lorsque le virus est en mémoire, cette augmentation de taille est dissimulée par tous les programmes utilisant les appels DOS. Le virus est ainsi plus difficile à voir et peut se propager lors des échanges de disquettes. Le principal effet du virus est l'affichage d'un bloc graphique trois mois après la première installation du virus sur le disque dur. Il est généralement détecté à cause d'incompatibilités avec certaines applications, comme par exemple Windows. |
| (HTML Studio v6.0.5) Mis à jour le 12.8.03 à 16:07 Par SCS'in (c) Sch. |
Index | Page précédente |