CE SERVICE PEUT CONTENIR DES TRADUCTIONS GÉNÉRÉES PAR GOOGLE. GOOGLE DÉCLINE TOUTE GARANTIE, EXPLICITE OU IMPLICITE, Y COMPRIS LES GARANTIES D'EXACTITUDE, DE FIABILITÉ, AINSI QUE TOUTE GARANTIE IMPLICITE DE COMMERCIALISATION ET D'ADAPTATION À DES FINS PARTICULIÈRES ET À L'ABSENCE DE CONTREFAÇONS.

Le site internet de Kaspersky Lab a été traduit pour votre commodité en utilisant un logiciel de traduction générée par Google. Des efforts raisonnables ont été faits pour fournir une traduction exacte. Cependant, aucune traduction automatique n'est parfaite et l'objectif n'est pas de remplacer le travail des traducteurs. Le site internet de Kaspersky Lab fournit ces traductions comme un service pour ses utilisateurs, et elles ont été publiées "telles quelles". Aucune garantie, explicite ou implicite, n'est faite au sujet de l'exactitude, de fiabilité ou de conformité de ces traductions faites de l'anglais vers une autre langue. Certains contenus (images, vidéos, Flash, etc.) peuvent ne pas être traduits correctement à cause des limites du logiciel de traduction.

Virus.Win9x.Sk

Date de la détection 01/11/2002
Classe Virus
Plateforme Win9x
Description

Détails techniques

Ceci est un virus Windows parasite. Il se propage sous Windows95 / 98, installe sa copie dans la mémoire de Windows, accroît les fonctions d'accès aux fichiers et infecte les fichiers PE (Windows Portable Executable). Le virus affecte également les fichiers d'aide de Windows (.HLP) – il les modifie de sorte que quand ils sont activés, le code du virus est déposé sur le disque et exécuté. Le virus ajoute également ses droppers à quatre types d'archives: RAR, ZIP, ARJ et HA. Les droppeurs de virus dans les fichiers HLP et les archives ont un format de fichier DOS COM et sont exécutés dans une boîte DOS, mais ils peuvent installer du code viral dans la mémoire Windows ainsi que des exécutables Windows infectés (voir ci-dessous).

Le code du virus est crypté avec des routines polymorphes à la fois dans les droppers DOS et dans les fichiers Windows PE. Dans le cas des fichiers Windows, le virus utilise également la technologie "Entry Point Obscuring": le code viral ne prend pas le contrôle immédiatement lorsqu'un fichier infecté est exécuté. L'instruction JMP_Virus est dans la plupart des cas quelque part dans le corps du fichier infecté, pas dans l'en-tête du fichier et pas dans l'adresse de démarrage du fichier, et n'est exécutée que lorsque la branche correspondante du programme prend le contrôle.

Le virus est un "infecteur lent": avant de l'infecter, il vérifie de nombreuses conditions et par conséquent affecte très peu de fichiers sur l'ordinateur – seulement une dizaine de fichiers EXE dans l'installation standard de Windows 95/98. La même chose pour les fichiers HLP et les archives – très peu d'entre eux peuvent être infectés. Le virus retarde également sa routine d'infection pendant une minute avant la première infection, et infecte les fichiers HLP et les archives uniquement au cas où il n'y aurait pas d'accès à ces fichiers pendant deux minutes.

Le virus est très dangereux. Lorsque les fichiers disque sont accédés, il vérifie leurs noms et dans le cas de plusieurs programmes anti-virus (ADINF, AVPI, AVP, VBA, DRWEB) le virus supprime tous les fichiers dans tous les répertoires sur tous les disques de C: jusqu'à Z: que le virus est capable de supprimer, puis arrête le système par l'appel Fatal_Error_Handler VMM.

Il y a un fichier victime de plus qui est supprimé par le virus chaque fois qu'il s'installe dans le système. C'est le fichier COMMAND.PIF dans le répertoire Windows.

Le virus a des bogues qui sont mortels sous certaines configurations de Windows 95/98 – en infectant le virus provoque "l'écran bleu" avec le message standard "faute de protection générale".

Lors de l'installation dans le système le virus en fonction de son compteur aléatoire (dans un cas à partir de 48) affiche le message:


1997 VBA Ltd. E-mail: support@vba.minsk.by

Installation de mémoire résident

La copie "résidente" du virus fonctionne au niveau VxD (Ring0 – noyau Windows). Les programmes DOS et les applications Windows ne peuvent pas accéder à cette zone par des méthodes standard. Le virus utilise donc plusieurs astuces pour y installer son code.

Lorsque le compte-gouttes DOS est exécuté, le virus vérifie que Windows est installé et renvoie à DOS, si ce n'est pas le cas. Sinon, le virus en utilisant les appels DMPI accède aux tables de description locales (tables d'allocation mémoire du mode de protection du processeur), les corrige et passe son code DOS 16 bits au mode de protection 32 bits. Le code du virus fonctionne alors comme une partie du noyau Windows et peut accéder à toutes les fonctions Windows nécessaires.

Lorsque le fichier PE infecté est exécuté, le virus corrige également les tables d'allocation de mémoire système et passe son code du niveau de l'application (Ring3) au niveau du noyau (Ring0). Le virus transmet ensuite le contrôle à la même routine d'installation que les droppers DOS infectés.

La routine d'installation, lorsqu'elle prend le contrôle, alloue un bloc de mémoire système, copie le virus là-bas, accroche les fonctions Windows et libère le contrôle. La copie de virus d'origine retourne alors à DOS (dans le cas d'un compte-gouttes DOS), ou restaure les données et le code du fichier PE hôte et renvoie.

Virus Hookers

Le virus accroche trois fonctions Windows. Le premier est la procédure de rappel pour le recouvrement des ports d'E / S. Le virus bloque le port 534Bh et l'utilise dans son "Are you here?" appels. La lecture de ce port dans des conditions système infectées renvoie 21h (caractère "!") Dans le registre AL. Les routines d'installation de virus DOS et Windows l'essaient avant d'installer le résident en mémoire. Le numéro de ce port a été utilisé pour nommer le virus – 534Bh est "SK" en ASCII.

Le deuxième crochet est "standard" pour les infecteurs Windows résidents – il s'agit du hook de l'API File System. Il intercepte les fonctions d'ouverture de fichier, de renommage et d'obtention / définition d'attribut de fichier. Sur ces appels, le virus exécute ses routines d'infection.

Le troisième crochet intercepte la fonction "Install FileSystemApiHook" elle-même (celle qui est utilisée pour installer le hook précédent). Cet appel est utilisé par les virus pour cacher son hooker: lorsqu'un nouveau hook est installé, Windows appelle cette fonction. À ce moment le virus l'intercepte, supprime son propre hook de l'API IFS, en installe un nouveau (qui est demandé), puis réinstalle le hook de son virus. En conséquence, le talonneur de virus est toujours en haut dans la liste des hooks, et il est le premier à recevoir le contrôle lorsque des fichiers disque sont accédés.

Il y a une autre astuce dans le talonneur de l'API IFS: pour accéder aux pilotes du système de fichiers (la destination des appels FileSystem), le virus utilise l'adresse du gestionnaire de système "natif". Le virus obtient cette adresse du champ purement documenté dans la pile de l'appelant, et en utilisant cette adresse effectue des appels directs aux fonctions de fichiers nécessaires.

Infecter des fichiers

Lorsque le hooker IFS API obtient le contrôle et que la routine d'infection est activée pour la première fois, il infecte l'application shell Windows (généralement – EXPLORER.EXE). Pour le localiser, le virus ouvre le fichier SYSTEM.INI dans le répertoire Windows, le scanne pour l'instruction "shell =" et l'infecte.

Ce fichier est toujours exécuté, donc le virus ne peut pas le modifier. Pour résoudre ce problème, le virus utilise la "mise à niveau" astuce. Le virus copie ce fichier avec un autre nom (ajoute un à la dernière lettre dans le nom de fichier: EXPLORER.EXE -> EXPLORER.EXF, par exemple), infecte le nouveau fichier et force Windows à "mettre à jour" le fichier original infecté. Pour ce faire, le virus utilise la méthode standard: il crée le fichier WININIT.INI dans le répertoire Windows et écrit les instructions "Renommer" nécessaires à cet endroit.

Si le shell Windows est déjà infecté, le virus infecte le fichier auquel il accède. Tout d'abord, il vérifie l'extension du nom de fichier. Dans le cas des fichiers .EXE, .SCR et .DLL, le virus saute dans la routine d'infection du fichier PE; dans le cas du fichier .HLP, le virus le corrige avec son code de suppression; dans le cas des archives .RAR, .ZIP, .ARJ et .HA, le virus insère dans son contenu son propre dropper exécutable.

Infecter Windows PE

Tout en infectant les fichiers PE, le virus crypte et écrit son code dans la section Relocation (Fixup), ce qui écrase ces données. En raison de la façon dont Windows utilise pour charger les applications dans la mémoire, dans la plupart des cas, il ne fait pas attention aux relocalisations – toutes les applications sont chargées aux mêmes adresses, et aucune relocalisation n'est utilisée. Dans certains cas, lorsqu'une application est chargée par une autre application hôte dans la mémoire de l'hôte, le chargeur Windows traite la table de relocalisation et apporte les modifications nécessaires au code de l'application. Pour résoudre ce problème, le virus modifie les champs d'en-tête PE: efface les indicateurs de relocalisation dans le champ Caractéristique (cela signifie qu'il n'y a pas de relocalisation dans le fichier) et définit l'adresse zéro de la section Relocation. Par conséquent, l'application affectée ne peut tout simplement pas être chargée à une autre adresse (pour adresser l'espace d'une autre application), mais fonctionne parfaitement comme une application autonome.

Le virus effectue alors les changements nécessaires dans l'en-tête de section Relocation: définit ses caractéristiques comme Readable et Initialized, en fonction de son compteur aléatoire (dans 1 cas de 8) change le nom de la section en random, chiffre son corps et écrit là. Le virus vérifie également la taille de la section Relocation – est-elle assez grande pour le code du virus et n'infecte les fichiers que si le code du virus remplit le corps de la section. En conséquence, le virus n'augmente pas la taille des fichiers PE en les infectant.

Pour obtenir le contrôle lorsque les programmes infectés s'exécutent, le virus ne modifie pas l'adresse d'entrée dans l'en-tête PE. Il utilise une autre méthode plus complexe: il corrige le code sélectionné de manière aléatoire dans le corps du programme victime et y écrit la routine JMP_Virus. Par conséquent, le code du virus n'est pas exécuté immédiatement lorsque le programme infecté est activé. Il est exécuté uniquement si la branche corrigée obtient le contrôle. Dans certains cas, lorsque cette branche est exécutée très rarement (si c'est une routine de gestion d'erreur, par exemple), le virus peut "dormir" dans le programme pendant une longue période, puis saute dans une situation supplémentaire.

Pour localiser la position dans le programme à patcher, le virus lit les blocs du fichier victime et l'analyse pour les sous-programmes C / Pascal. Ces routines ont des en-têtes et des pieds de page standard, et le virus a juste besoin de les trouver et de voir qu'il y a suffisamment d'espace pour son code JMP_Virus entre les instructions d'entrée et de sortie du sous-programme.

La routine JMP_Virus qui transmet le contrôle du sous-programme de correctifs au code de virus principal n'est pas une simple instruction JMP. Il est plus sophistiqué: il s'agit d'une boucle polymorphe qui décrypte le code principal du virus avant de lui transmettre le contrôle – il a jusqu'à 168 octets de code.

Résumé, l'exécution des programmes infectés ressemble à ceci: Windows charge et exécute le programme, et ses routines commencent à faire un peu de travail. Le virus "dort" pour le moment car le sous-programme corrigé n'a pas encore été exécuté. Lorsque ce code prend le contrôle, la routine JMP_Virus du virus est activée. Il déchiffre le code du virus principal (qui est placé dans la section Relocation) et saute au code déchiffré. La routine d'installation de virus obtient le contrôle, copie le virus dans la mémoire de Windows, installe les crochets de virus, restaure le sous-programme de l'hôte corrigé et lui renvoie le contrôle.

Il est nécessaire de noter que dans certains cas (lorsque le shell Windows est infecté, ou aucune routine C / Pascal trouvée), le virus écrit son correctif JMP_Virus directement dans l'adresse d'entrée du programme. Dans ce cas, le code du virus obtient le contrôle immédiatement lorsque le fichier infecté est exécuté.

Infecter des archives

Le virus affecte quatre types d'archives: RAR, ZIP, ARJ et HA. En les infectant, le virus analyse les formats internes des archives, ajoute le compte-gouttes DOS à la fin de l'archive en tant que dernier élément et modifie soigneusement la structure de l'archive, y compris les champs CRC. Les seules archives sont infectées: elles n'ont pas moins de dix fichiers et ont au moins un fichier COM ou EXE. L'ajout de virus aux archives est un fichier COM DOS qui a un nom généré de manière aléatoire et une extension COM ou EXE.

Dans le cas des archives RAR, le virus a une branche de plus qui se compare à d'autres routines infectant les archives. Cette branche recherche les fichiers "stockés" dans les archives RAR, et si un fichier a une date et une heure spécifiques, le virus lit les données stockées exécutées à la fin. Cette astuce permet au virus d'exécuter d'autres programmes sans action de l'utilisateur – il peut être utilisé pour "mettre à niveau" le virus, pour exécuter un espion ou tout autre type de programme. Cette fonctionnalité de virus ressemble à une "porte dérobée" qui peut être utilisée par un auteur de virus pour obtenir le contrôle sur d'autres ordinateurs.

Aide infectée

La possibilité d'infecter des fichiers d'aide Windows est basée sur le fait que ces fichiers ont leurs propres sous-programmes de script (macros). Ces scripts sont automatiquement exécutés lorsque WinHelp active les fichiers d'aide, et le langage de script est suffisamment puissant pour accéder aux fichiers de disque, les créer et les exécuter.

Le virus utilise cette fonctionnalité pour infecter les fichiers d'aide Windows. Il écrit son compte-gouttes DOS à la fin du fichier HLP comme une "superposition" (l'en-tête du fichier HLP contient le champ "longueur du fichier" et le compte-gouttes est hors de ces données), modifie la structure interne de HLP et ajoute son propre script là-bas. Ce script a dix instructions qui sont écrites dans la section [CONFIG] ("| SYSTEM" en termes d'internes HLP) qui est automatiquement traitée lorsque le fichier d'aide infecté est activé. Ces dix instructions de virus extraient et exécutent un petit chargeur de virus (environ 380 octets). Le script de virus crée ce chargeur sous la forme d'un fichier DOS (avec un nom aléatoire) sur le lecteur C :, écrit un code là-bas et l'exécute – et le chargeur de virus prend le contrôle.

Le code du chargeur de virus dans le script HLP est converti en format ASCII 7 bits – chaque octet est converti en deux lettres alphabétiques. Lorsque ce code prend le contrôle, il se convertit en code binaire, puis obtient le nom du fichier HLP hôte (que les scripts viraux transmettent en argument), lit l'en-tête du fichier HLP, récupère le code "overlay", le lit, écrase son propre fichier COM et le ré-exécute. Le compte-gouttes DOS de virus obtient le contrôle, et le virus s'installe dans la mémoire, etc.

Il y a une exception dans cette routine qui cause des problèmes. Le code du chargeur de virus est converti en ASCII 7 bits, mais la boucle qui restaure ce code a des opcodes qui sont hors limites de 80h. Lorsque ces chaînes sont enregistrées du fichier Windows HLP dans le fichier DOS, Windows les traite comme des chaînes de texte et convertit les caractères ASCII élevés en fonction de la page de codes installée. Inutile de dire que sous différentes pages de code, le résultat de la conversion est différent. La seule page de code apporte le code correct – c'est la page de codes russe (cela signifie que l'auteur du virus a été installé en russe sur son ordinateur). Si aucun support russe n'est installé dans le système, le code du chargeur de virus est corrompu, il ne peut pas fonctionner et s'arrête lorsqu'il est exécuté.

En outre, il est nécessaire de noter que lors de la suppression de son fichier COM, le script de virus vérifie la présence du fichier C: NTLDR spécifique à NT et renvoie si ce fichier est trouvé.

Win95.SK.8699

Ceci est une version améliorée du virus. Il est très fermé à l'original, mais utilise plus de méthodes dans son cryptage et un moteur polymorphe plus fort. Il utilise également une astuce pour désactiver les moniteurs anti-virus: il localise le composant anti-virus GK95.VXD (AVP et F-SECURE) chargé dans la mémoire Windows et les désactive par un correctif. La routine d'infection des fichiers HLP est corrigée dans cette version du virus – elle fonctionne avec n'importe quelle page de codes, pas seulement avec une version russe.


Lien vers l'original