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.

Trojan-Banker.Win9x.Libertine

Classe Trojan-Banker
Plateforme Win9x
Description

Détails techniques

Ce virus est un infecteur multi-plateforme et polymorphe affectant à la fois les fichiers DOS et Win32. Il a été nommé après les chaînes de texte dans son code:


[Win32.Libertine v1.07b]
Copyright 1998-xxxx par
Le virus peut être trouvé sous trois formes différentes:
  • fichiers Win32 PE infectés
  • fichiers DOS DOS infectés
  • Win32 PE dropper (31672 octets code de virus pur)
En raison de bogues, les fichiers COM et EXE infectés ne peuvent pas s'exécuter sous Windows NT, ils se terminent par un message d'erreur NT ou DrWatson standard. Malgré cela, je nomme le virus Win32, pas Win95 parce que le virus dropper peut propager le virus sur les ordinateurs NT sans problème.

Tout en infectant les fichiers Win32 et DOS, le virus écrit son code complet de 32 Ko à la fin des fichiers et modifie les en-têtes de fichiers pour transmettre le contrôle à la routine virale. Les adresses des routines d'entrée sont différentes dans les trois cas d'infection. Le virus dans les deux programmes infectés Win32 et DOS quand prend le contrôle recherche Win32 dropper (le fichier C: MYLENE.EXE), l'exécute et renvoie le contrôle au programme hôte. S'il n'y a pas de compte-gouttes dans le répertoire racine sur le lecteur C :, le virus crée d'abord puis l'exécute.

Ces routines d'activation de compte-gouttes sont assez courtes dans les fichiers infectés. Dans le cas des fichiers COM DOS, il s'agit simplement d'une routine de création-écriture-fermeture-exécution d'environ 200 octets. Dans le cas de fichiers Win32, il est plus sophistiqué, mais aussi assez stupide et court.

Ainsi, le virus dans les fichiers infectés crée et exécute le compte-gouttes – pas plus, et toutes les fonctions de l'infection et de la charge utile tombe sur le compte-gouttes de virus Win32.

Exécuter le compte-gouttes

Lorsque le compte-gouttes est exécuté, le virus effectue tout d'abord quelques astuces pour cacher sa présence dans le système. Pour empêcher les messages du système de violation d'accès le virus à l'aide de la fonction SetErrorMode KERNEL32 désactive le message d'erreur General Protection Fault. Windows va ensuite continuer à exécuter l'application sans aucun rapport sur la violation de la protection.

Le virus vérifie ensuite le système sur lequel il est exécuté (Windows 95/98 ou Windows NT) et, dans le cas de Windows9x, corrige la base de données de processus non documentée du système et définit deux indicateurs: NukeProcess et ServiceProcess. Ces indicateurs sont définis à au moins deux fins: a) le processus n'est pas visible dans la liste des tâches Ctrl-Alt-Suppr; b) le processus n'est pas terminé lorsque l'utilisateur se déconnecte. Pour activer ces indicateurs, le virus ré-exécute alors son compte-gouttes avec un argument ID "sexy".

En cours d'exécution dans un environnement système patché, le virus saute à ses autres routines: routine anti-virus, charge utile et infection.

Anti-anti-virus

Pour désactiver la protection antivirus, le virus n'a qu'un seul anti-virus en tant que cible, à savoir APVI – le vérificateur d'intégrité AVP Inspector (scanner CRC). Le virus recherche le fichier AVPI, l'ouvre et analyse le code spécifique. Si un tel code est trouvé, le virus le remplace par des instructions NOP. En fonction des différentes versions d'AVPI qui ont causé des effets différents: soit AVPI ne détecte pas les changements dans le système, soit arrête immédiatement la numérisation et affiche la boîte de dialogue statistique.

Le virus obtient le nom de fichier AVPI en utilisant le registre du système. Il ouvre la clé HKEY_USERSDefaultSoftwareKasperskyLabAVPI, obtient le chemin vers le répertoire AVPI, ouvre le fichier AVPICHCK.DLL, le scanne et le corrige. Pour éviter les correctifs en double, le virus stocke l'ID "kcah" ("hack" écrit en arrière) dans l'en-tête du fichier au décalage 0030h.

Le virus termine également AVPI, s'il est actif. Pour ce faire, le virus trouve la fenêtre AVPI32, obtient son ID de thread, ouvre et termine le processus.

Infection

Lorsque la routine d'infection obtient le contrôle, le virus analyse tous les fichiers de tous les arborescences de sous-répertoires sur tous les disques durs installés à partir de C :, s'il y a un disque non-fixe dans la séquence (CD-ROM, distant ou autre).

Lorsqu'un fichier est trouvé, le virus le vérifie pour l'extension de nom de fichier COM ou EXE. Le virus infecte uniquement ces fichiers et recherche l'entrée de fichier ou de sous-répertoire suivante dans le cas contraire. Si le fichier a une extension exécutable, le virus avec une probabilité de 7/8 en fonction de la minuterie du système saute à la routine d'infection, sinon il continue la recherche ainsi que dans le cas d'une extension de nom non-exécutable.

Tout d'abord le virus sépare les fichiers COM et EXE en comparant leurs deux premiers octets avec un tampon magique MZ. Dans le cas d'un fichier EXE, le virus vérifie alors l'identité de Portable Executable et le code d'identification du virus – double mot "PE" en haut de l'en-tête et "IM!" dans le champ PE CheckSum. Tout en ajoutant son code à la fin des fichiers Portable Executable, le virus crée une nouvelle section nommée _Mylene_, modifie l'adresse du point d'entrée et d'autres champs nécessaires. Il exécute ensuite le moteur polymorphique, crypte sa copie et l'écrit à la fin du fichier PE dans la section nouvellement créée.

Dans le cas du fichier COM, le virus écrit également à la fin du fichier, mais convertit également le format de fichier en EXE en ajoutant l'en-tête EXE en haut du fichier. Le virus n'infecte pas deux fois les fichiers DOS: il vérifie le format de fichier interne et n'affecte que les fichiers COM. Étant infectés, ils ont le format EXE et sont contournés par la routine d'infection par le virus. Le virus n'infecte pas aussi bien les fichiers qui ont une chaîne de caractères "ENUN" à la fin des fichiers. Cet ID signifie que ces fichiers COM sont protégés par CRC, de sorte que le virus évite de les infecter. Le virus n'infecte pas non plus les petits et grands fichiers COM dont la longueur est inférieure à 2K ou supérieure à 60K.

Exécution du fichier COM infecté

Lors de l'infection des fichiers COM DOS, le virus les convertit au format EXE, c'est-à-dire que les fichiers COM infectés ont un en-tête EXE: MZ magic stamp en haut et tous les champs d'en-tête EXE nécessaires. L'examen minutieux de l'en-tête du fichier infecté montre immédiatement l'origine du programme par le pirate: plusieurs champs ont des valeurs qui ne peuvent pas être trouvées dans les programmes ordinaires. Tout d'abord, les champs HeaderSize (Paragraphs in Header) gardent zéro, c'est-à-dire qu'il n'y a pas d'octets dans l'en-tête EXE (mais il y en a au moins deux – 'M' et 'Z'). Le deuxième champ suspect est "CS à l'entrée" avec la valeur -100h (FFF0h) stockée. L'utilisation de ces deux champs dans le même en-tête EXE force DOS à charger un fichier EXE comme fichier COM standard: les octets de 0000 à 00FFh sont occupé par le préfixe de segment du programme, les octets de 0100h jusqu'à la fin de la mémoire allouée sont pour l'image du fichier, et le premier octet du fichier est placé au décalage 0100h. Dans le cas des fichiers COM DOS, l'image du fichier ne peut pas chevaucher un segment (64K), dans le cas de fichiers DOS EXE, l'image chargeable peut être de n'importe quelle taille remplissant un bloc de mémoire libre.

En utilisant l'astuce COM-> EXE, le virus est capable d'infecter les fichiers COM de n'importe quelle taille, après la conversion, ils ne perdent pas leur fonctionnalité si la taille du fichier dépasse 64K lors de l'infection. Rappelez-vous la taille du virus – sans convertir au format EXE, le virus ne serait pas en mesure d'infecter les fichiers COM de taille supérieure à 32 Ko. Un autre effet important de l'astuce est un moyen facile de retourner le contrôle au programme hôte – le virus ne fait rien mais restaure tout d'abord 4Fh octets de l'en-tête du fichier et saute là-bas.

Ainsi, le code du virus est chargé dans la mémoire à partir des tout premiers octets ("MZ" stamp) jusqu'à la toute dernière, et le contrôle est passé à l'adresse qui est pointée par l'en-tête EXE. Dans le cas de ce virus, le code d'entrée est placé très près du fichier top – à l'adresse 0020h. Cette routine utilisant des instructions i386 32 bits obtient le décalage du code viral principal (ce décalage est stocké à l'adresse 001Ch dans l'en-tête), le convertit en segment de 16 bits: format de décalage et saute à cet endroit. La routine d'entrée accroche aussi INT 24h pour empêcher le message d'erreur DOS standard tout en écrivant à des volumes protégés en écriture, je ne sais pas pourquoi l'auteur du virus l'a placé ici mais pas dans le code du virus principal.

Lorsque le code virus principal reçoit le contrôle, il vérifie la présence de Windows. S'il n'y a pas d'exécution de Windows, ou si la version de Windows est inférieure à 4.0 (Windows95), le virus restaure les octets du programme hôte d'origine en haut et renvoie le contrôle à cet endroit. Si Windows est exécuté, le virus crée le fichier C: MYLENE.EXE, y écrit le dropper Win32, ferme le fichier et l'exécute. Le compte-gouttes prend le contrôle et le virus revient sur son niveau d'infection.

Exécution de fichiers PE infectés

Lorsqu'un fichier PE infecté est exécuté, la routine polymorphique du virus prend le contrôle, déchiffre le code du virus et passe à la routine principale. Cette routine n'est pas la même que dans le cas d'un fichier COM. C'est un programme 32 bits qui fonctionne avec la mémoire et les ressources Windows, mais la cible de cette routine est la même que dans le cas d'un fichier COM: elle crée et exécute le droppeur de virus.

Pour accéder à la fonction Windows, le virus doit soit les importer en utilisant PE Import Table, soit obtenir leurs adresses en analysant le noyau Windows. Le virus sélectionne la deuxième manière: il fait attention à l'environnement (Windows95 / 98 ou Windows NT – le virus utilise les corrections correctes dans les deux cas), analyse les importations KERNEL32 et recherche les fonctions CreateFileA, WriteFile, CloseHandle et WinExec. La procédure de virus dans les fichiers PE infectés est assez simple et elle n'a pas besoin de plus mais seulement de ces quatre entrées. // Voici un bug dans le code du virus qui arrête sa propagation sous Windows NT.

Le virus de la même manière que dans le cas d'un fichier COM DOS infecté crée le fichier C: MYLENE.EXE, y écrit le code du dropper, ferme et exécute ce fichier. Le compte-gouttes prend le contrôle, et cette branche PE de l'algorithme viral revient à la racine.

Charge utile

Avant d'appeler les routines anti-virus et anti-virus, le virus appelle la routine de déclenchement. Cette routine est exécutée avec une probabilité 1/8 en fonction du compteur de temps système et modifie l'image de fond Windows (WallPaper). Le virus crée simplement le fichier C: MYLENE.BMP, écrit une image de Mylene Farmer (?), Le convertit au format BMP et déclare comme une image Windows WallPaper:

Tout en faisant cela, le virus accède à la visionneuse JPEG installée à partir du registre du système:


HKEY_LOCAL_MACHINESOFTWAREMicrosoftOutils partagésFiltres graphiquesImportJPEG
Le virus charge ensuite la bibliothèque correspondante dans la mémoire, obtient l'adresse et appelle la routine ImportGr. Le virus effectue cette conversion uniquement pour diminuer sa taille: l'image BMP résultante est un fichier de 160 Ko, de sorte que le virus conserve dans son code la variante JPEG 16 Ko de la même image. Comme une image WallPaper Windows95 accepte uniquement le format BMP, le virus doit convertir la source JPEG en BMP.

L'image du résultat est ensuite enregistrée dans le même fichier C: MYLENE.BMP qui est ensuite enregistré en tant que le fond d'écran Wallpaper image for Windows:


HKEY_CURRENT_USERControl Paneldesktop
Le seul point mineur dans cette conversion est que j'ai tout le nécessaire sur mon ordinateur de test, mais le virus n'a pas réussi à mettre à jour mon fond d'écran.

Action directe mais résident en mémoire?

Avant d'infecter chaque fichier, le virus appelle la fonction API Windows standard Sleep et retarde son activité pendant 3 secondes. C'est le bloc de code viral le plus important (peut-être le plus important). Un seul de ces appels permet d'étiqueter le virus comme "résidant en mémoire".

Le résultat de cette instruction endormie le code du virus peut rester dans la mémoire du système pendant une longue période. Soit il y a 1000 fichiers COM et EXE sur l'ordinateur. Le virus va dormir pendant 3 secondes avant d'infecter chacun d'entre eux, il restera donc dans la mémoire pendant 50 minutes (3000 secondes).

Le virus est résident en mémoire: il reste dans la mémoire du système pendant une longue période et d'autres applications peuvent être exécutées pendant que la routine d'infection virale est active. En dépit de cela, il est le virus de l'action directe (comme les virus résidents non-mémoire sont) – il recherche des fichiers dans l'arborescence du sous-répertoire et les infecte, et aucun événement accroché.

Les auteurs de virus essayent toujours de suivre la même méthode DOS conservatrice: ils créent Windows VxD en accrochant IFS API similaire à DOS TSR hooking INT 21h. C'est la décision la plus populaire de créer des virus Windows résidant dans la mémoire de nos jours. Peut-être que le virus Libertine est le premier virus avec une fonctionnalité de semi-résident, et à l'avenir nous serons plus de virus de ce genre – il est beaucoup plus facile de déboguer l'application Windows que le pilote Windows VxD ou NT.


Lien vers l'original