Classe pour les parents: VirWare
Les virus et les vers sont des programmes malveillants qui s'auto-répliquent sur des ordinateurs ou via des réseaux informatiques sans que l'utilisateur en soit conscient; chaque copie ultérieure de tels programmes malveillants est également capable de s'autoreproduire. Les programmes malveillants qui se propagent via des réseaux ou infectent des machines distantes lorsque le "propriétaire" (par exemple Backdoors) ou les programmes qui créent plusieurs copies qui ne peuvent pas s'auto-répliquer ne font pas partie de la sous-classe Virus and Worms. La caractéristique principale utilisée pour déterminer si un programme est classé comme un comportement distinct dans la sous-classe Virus and Worms est la manière dont le programme se propage (c'est-à-dire comment le programme malveillant répand des copies de lui-même via des ressources locales ou réseau). en tant que fichiers envoyés en pièces jointes, via un lien vers une ressource Web ou FTP, via un lien envoyé dans un message ICQ ou IRC, via des réseaux de partage de fichiers P2P, etc. Certains vers se propagent sous la forme de paquets réseau; ceux-ci pénètrent directement dans la mémoire de l'ordinateur et le code du ver est alors activé. Worms utilise les techniques suivantes pour pénétrer des ordinateurs distants et lancer des copies d'eux-mêmes: ingénierie sociale (par exemple, un message électronique suggérant que l'utilisateur ouvre un fichier joint), exploitation des erreurs de configuration réseau (par exemple copie sur disque entièrement accessible) failles dans la sécurité du système d'exploitation et des applications. Les virus peuvent être divisés en fonction de la méthode utilisée pour infecter un ordinateur: virus de fichiers virus du secteur de démarrage virus de script virus de virus Tous les programmes de cette sous-classe peuvent avoir des fonctions de Troie supplémentaires. Il convient également de noter que de nombreux vers utilisent plus d'une méthode pour diffuser des copies via des réseaux. Les règles de classification des objets détectés avec des fonctions multiples doivent être utilisées pour classer ces types de vers.Classe: Virus
Les virus se répliquent sur les ressources de la machine locale. Contrairement aux vers, les virus n'utilisent pas les services réseau pour propager ou pénétrer d'autres ordinateurs. Une copie d'un virus n'atteindra les ordinateurs distants que si l'objet infecté est, pour une raison quelconque non liée à la fonction virale, activé sur un autre ordinateur. Par exemple: lors de l'infection de disques accessibles, un virus pénètre dans un fichier situé sur une ressource réseau un virus se copie sur un périphérique de stockage amovible ou infecte un fichier sur un périphérique amovible un utilisateur envoie un courrier électronique avec une pièce jointe infectée.Plus d'informations
Plateforme: DOS
No platform descriptionDescription
Détails techniques
C'est une famille de virus parasitaires très dangereux, polymorphes et furtifs. Ces virus sont plus de 7K de longueur, très complexes, et peut-être les virus DOS les plus complexes. Ces virus infectent les fichiers EXE, OBJ et LIB et ajoutent les drop-lists COM aux archives ZIP, ARJ et RAR. Les virus contiennent les chaînes de texte internes:
Résiliation anormale du programmeLe Virus / DOS 0.54 Copyright (c) 1995 Zhengxi LtdAttention! Ce programme pour usage interne seulement!
Installation
Le code du virus reçoit le contrôle de différents points en fonction de la manière d'infection, mais dans tous les cas, la destination est la routine de décryptage polymorphe. Dans les fichiers EXE (en annexe) la routine de déchiffrement reçoit le contrôle immédiatement quand un fichier EXE est chargé en mémoire pour exécution, dans les fichiers EXE (insertion) - du code du chargeur (voir infection EXE), dans les fichiers liés avec OBJ infecté / Fichiers LIB - à partir de l'instruction CALL (voir l'infection OBJ / LIB), les dropers COM ont l'instruction JMP à leurs débuts, que JMP apporte le contrôle à la routine de déchiffrement.En étant déchiffré, la routine d'installation du virus reçoit le contrôle. Le virus croise INT 1 (One Step Tracing) et trace INT 21h. Pendant le traçage, le virus recherche un code spécifique dans le gestionnaire INT 21h (ce code est présent dans DOS 5.x et DOS 6.x). Si un tel code est trouvé, le virus vérifie plusieurs conditions et termine l'installation dans certains cas.
Le virus met fin à l'installation si:
- MS Windows est installé
- le lecteur de démarrage est A: ou B:
- INT 8, 13h, 28h pointe sur le même segment (pour quitter l'installation si le moniteur anti-virus est installé?)
- le jour du fichier hôte (horodatage) est identique ou proche du jour actuel (les deux bits les plus élevés du numéro de jour actuel XORed avec le jour du fichier sont égaux à zéro)
INT 21h gestionnaire:... ...+ ------- 2E FF 1F ???? CALL FAR CS: Int25 � C7 06 ???? ; mot magique? � Int25: ???? ???? ???? ???? ; Loin de l'INT 25h � ... ... � +> INT 25h gestionnaire:+ -------- EA ???? ???? JMP FAR VirusHandler � ... ... � +> Gestionnaire de virus:2E 8F 06 ... POP CS: Caller_IP... ...En conséquence, le virus a le même gestionnaire pour intercepter les appels INT 21h et INT 25h. Pour séparer ces appels, le virus vérifie l'adresse de l'appelant (Caller_IP). Si l'appel passe du gestionnaire INT 21h, le virus transmet le contrôle à la routine du gestionnaire de virus INT 21h, dans un autre cas, le gestionnaire du virus INT 25h reçoit le contrôle.
La routine d'installation est terminée, mais le virus peut déplacer son code vers d'autres blocs de mémoire (voir l'analyse INT 21h handler). Ainsi, la copie TSR du virus n'occupe pas les mêmes blocs de la mémoire système, mais peut se déplacer vers d'autres adresses, y compris celles d'UMB.
Ensuite, le virus renvoie le contrôle au programme hôte. Il existe trois variantes différentes d'un tel retour, elles dépendent de la méthode d'infection. En cas de compte-gouttes COM, le virus affiche uniquement le message:
Résiliation anormale du programmeet retourne à DOS avec la fonction Terminate (INT 21h, AH = 4Ch). Dans le cas d'une méthode d'infection avec extension EXE, le virus restaure l'en-tête du fichier d'origine en utilisant un moteur polymorphe (génère une routine de décryptage polymorphe et l'exécute pour restaurer l'en-tête original, voir l'infection EXE ci-dessous). En cas d'insertion d'un fichier EXE, le virus revient simplement au programme hôte car le chargeur de virus inséré dans le fichier restaure le code original par lui-même. Dans le cas d'un fichier OBJ / LIB, le virus retourne également au programme hôte (voir l'infection OBJ / LIB ci-dessous).
INT 21h Handler
Le virus intercepte 18 des fonctions INT 21h:3Dh, 6Ch - Ouvrir / Créer un fichier3Eh - Fermer le fichier3Fh - Lire le fichier42h - Lseek4Bh - Exécuter le fichier41h - Supprimer le fichier11h, 12h - FindFist / Suivant FCB4Eh, 4Fh - FindFist / ASCII suivant00h, 4Ch - Terminer31h - Restez TSR67h - Régler le nombre de poignées48h, 49h, 4Ah - fonctions de gestion de la mémoire (Allouer, Libérer, Redimensionner)Les fonctions Set Handle Count, Execute File et memory management sont utilisées par le virus pour cacher son code dans la mémoire système - le virus manipule les blocs MCB pour ne pas être visible sur la carte mémoire lors de l'utilisation des utilitaires de navigation.
Lors de l'interception des fonctions Terminate, Stay TSR et FreeMemory, le virus déplace son code vers une nouvelle adresse dans la mémoire du système. Le virus alloue un nouveau bloc de la mémoire (qui peut être un bloc de mémoire conventionnel ou UMB), et s'y copie. Ainsi, pendant l'installation du virus n'affecte pas les blocs UMB pour placer sa copie TSR, mais il peut ensuite se déplacer dans UMB, et se cacher là-dedans.
Pendant l'ouverture du fichier, le virus effectue plusieurs appels différents. Tout d'abord, le virus vérifie le mode d'ouverture, et si le fichier est ouvert pour l'écriture, le virus désinfecte le fichier.
Avant la désinfection, le virus vérifie l'accès au fichier et le programme qui accède à ce fichier (appelant). Le virus compare le nom du programme d'accès (appelant) avec la liste des noms (voir ci-dessous), et ne désinfecte pas le fichier accédé si le nom du programme d'accès provient de cette liste. Les noms de fichiers sont:
UUENCODE.EXE, PKLITE.EXE, LZEXE.EXE, NDD.EXE, DIET.EXE, AFD.EXE, SD.EXE,SPEEDDSK.EXE, DEFRAG.EXE, TLINK.EXE, LINK.EXEEn cas de fonction AH = 3D00h (Open ReadOnly), le virus effectue des actions étranges. Il scanne le code de l'appelant, et le corrige. Cela ressemble à un patch de certains scanners anti-virus. Heureusement, le virus a le bug, et cette branche n'est jamais exécutée.
Lors de l'ouverture du fichier, le virus apporte également le contrôle à la routine furtive - le virus substitue la longueur du fichier à celle d'origine.
En lisant le fichier, le virus appelle la routine furtive. En cas de lecture de l'en-tête du fichier infecté, le virus lit, décrypte et copie l'en-tête d'origine dans le tampon de lecture.
En cas de fonction Lseek le virus apporte le contrôle à une autre routine furtive du virus - le virus ne permet pas de rechercher la longueur du fichier original.
Pendant la suppression du fichier infecté, le virus le désinfecte.
Lors de la recherche des fichiers avec FindFirst / Next, le virus substitue la longueur du fichier à celle d'origine si le fichier est infecté.
Les appels FindFist / Next ASCII sont également utilisés par le virus pour détecter les fichiers infectés. Le virus enregistre le nom de tout fichier accessible avec la fonction FindFirst, et environ chaque 5ème fichier (avec une probabilité 3/16) accessible avec la fonction FindNext. Le virus n'a qu'un seul tampon pour le nom de fichier, de sorte que chaque nom suivant écrase le précédent.
Lors de la fermeture de tout fichier, le virus vérifie et infecte le fichier avec le nom qui est stocké dans le tampon. Le virus infecte également le fichier qui est fermé, mais le fait avec une probabilité de 1/4 (par le résultat du générateur aléatoire du virus)
Infection
Avant d'infecter le fichier, le virus vérifie plusieurs conditions:- le fichier n'est pas "simplement créé" en comparant le numéro du jour actuel avec la date et l'horodatage du fichier (le même que lors de l'installation)
- le fichier est local, et pas sur A: ou B: lecteur
- le nom de fichier n'est pas *.? V? (* .OVL?)
- il y a assez d'espace disque libre (vérifie avec INT 21h, AH = 36h)
Infecter les fichiers EXE
Le virus infecte EXE par trois méthodes différentes: ajouter, insérer et infecter des archives dans des fichiers auto-extractibles.Premièrement, le virus vérifie la structure du fichier, et s'il s'agit d'un fichier EXE auto-extractible (créé par ZIP2EXE, par exemple), le virus infecte l'archive attachée (ZIP, ARJ, RAR) par la méthode décrite ci-dessous. et l'ajoute au contenu de l'archive.
Ensuite, le virus vérifie la longueur du fichier et n'infecte pas les fichiers dont la longueur est inférieure à 400h (1024) octets. Si la longueur du module chargeable (note: pas la longueur du fichier) est supérieure à 32 Ko, le virus insère son chargeur dans le fichier central. Dans un autre cas, le virus infecte le fichier en ajoutant une méthode.
Tout en infectant les fichiers en ajoutant une méthode, le virus lit l'en-tête du fichier, le chiffre et l'enregistre à la fin du fichier. Ensuite, le virus exécute son générateur polymorphique, et enregistre le corps du virus chiffré et les boucles polymorphes à la fin du fichier. Pour terminer l'infection, le virus augmente la longueur du fichier à la valeur qui est divisée par 9Dh donne le reste 25h (pour détecter les fichiers déjà infectés, il est un "ID") et modifie les champs d'en-tête EXE (registres et longueur du module).
Remarque: le virus chiffre l'en-tête d'origine du fichier hôte avec la boucle de chiffrement polymorphe et cette boucle est différente de la routine utilisée lors du chiffrement du corps du virus. C'est-à-dire que le virus appelle le moteur polymorphe deux fois - en cryptant l'en-tête EXE d'origine, et en cryptant le corps principal.
Lors de l'exécution du fichier EXE infecté, les boucles de décryptage restaurent le corps du virus principal, mais pas l'en-tête du fichier d'origine. Pour revenir au programme hôte, le virus doit déchiffrer les données de l'hôte, mais le moteur génère des boucles aléatoires avec des fonctions de cryptage choisies au hasard. Pour résoudre ce problème, le virus stocke les valeurs initiales du générateur aléatoire tout en cryptant les données de l'hôte, et exécute un générateur polymorphe avec les mêmes valeurs tout en décryptant ces données. En conséquence, le générateur apporte le même code que celui utilisé lors du cryptage des données de l'hôte, et étant exécuté, cette routine le décrypte.
Infecter les fichiers EXE (insertion)
Si la longueur du fichier est supérieure à 32 Ko, le virus cherche au début du module principal EXE (juste après l'en-tête EXE), lit 6 Ko du code et recherche les routines C / Pascal dans ce dernier. Habituellement, les routines C / Pascal commencent à partir du même "en-tête" qui enregistre le registre BP, et déplace le pointeur de pile SP vers BP.Le virus scanne le code pour ces "en-têtes" et si un tel code est trouvé, le virus scanne les 54h d'octets de code suivants pour l'instruction RET ou CALL FAR pour éviter le chevauchement du sous-programme suivant ou l'adresse relocalisée. Si un tel code (RET ou CALL FAR) est trouvé, le virus sort de la routine d'infection.
Ensuite, le virus lit 54h octets de cette routine, l'écrase avec le code du chargeur de virus, puis crypte le corps du virus principal avec le moteur polymorphique, et l'enregistre à la fin du fichier. Ensuite, le virus crypte avec une simple fonction SUB le code original du sous-programme et la deuxième partie du chargeur, et l'enregistre à la fin du fichier. Ensuite, le virus écrit à la fin du fichier les données aléatoires de la même manière que lorsque "annexe" méthode d'infection.
Non infecté infecté------------ --------+ -------------- + + -------------- + �Exe en-tête � �Exe en-tête � + -------------- � + -------------- � �Main code EXE � �Main code EXE � � -------------- � � -------------- � SuC / Pascal subr � - + � Chargeur de virus � Partie 1, 52h octets, non chiffré � -------------- � � � -------------- � � � � �Main code EXE � � � � � (suite) � + -------------- + � + -------------- � � �Virus � Crypté avec des boucles polymorphes � � -------------- � Load � Chargeur de virus � Partie 2, cryptée avec la commande SUB � � -------------- � 70h octets+ -> �Sauvegarde � Code original du sous-programme corrigé, � -------------- � 52h octets, cryptés avec SUB �Random données � longueur du fichier / 9Dh, le reste est de 25h+ -------------- +En cours d'exécution, le chargeur recherche le nom du fichier hôte en utilisant les champs PSP, ouvre les fichiers, recherche la fin du fichier, puis lit, décrypte et exécute la seconde partie du compte-gouttes. Cette partie restaure la sous-routine corrigée, alloue la mémoire système (conventionnelle ou UMB), lit le corps viral principal et transmet le contrôle à la boucle polymorphe de décryptage. Cette boucle décrypte le corps du virus et transmet le contrôle à la routine d'installation.
C'est un moyen très insidieux d'infection. Le code du virus est caché dans le fichier, et il n'y a pas d'entrée directe au code du virus à partir de l'en-tête du fichier. Le sous-programme remplacé par le chargeur de virus peut être "rarement exécuté". Par exemple, le sous-programme qui affiche le message d'erreur. Ainsi, le virus peut "dormir" dans de tels fichiers pendant une longue période, puis sauter et infecter le système dans des conditions limitées.
Infecter des archives
En cas d'archivage, le virus crée en mémoire l'image du dropper COM infecté et l'ajoute à l'archive. Les compteurs COM commencent toujours par une instruction JMP suivie de données aléatoires, de code de virus chiffré et de boucle polymorphe de décryptage. L'instruction JMP amène le contrôle à la boucle de déchiffrement.Le nom du dropper est sélectionné au hasard et fini avec l'extension .COM, par exemple:
HAIF.COM, UCM.COM, DOO.COM, VLG.COM, et ainsi de suite.Lors du traitement des champs d'archive, le virus n'utilise aucun utilitaire externe, mais remplit à lui seul tous les champs nécessaires. Le virus n'emballe pas le compte-gouttes, mais utilise la méthode "stockée" - le virus est stocké dans l'archive "tel quel". Pendant l'infection, le virus vérifie le contenu des archives et ne les infecte pas deux fois.
Infecter les fichiers OBJ et LIB
Lors de l'infection des modules OBJ / LIB, le virus vérifie les champs du fichier, crée et insère dans celui-ci de nouveaux enregistrements d'objets contenant le code du virus qui est chiffré avec des boucles polymorphes.Lors de l'analyse du fichier objet, le virus vérifie le code de ce sous-programme C / Pascal "en-tête" ainsi que lors de l'insertion dans les fichiers EXE, et n'infecte les fichiers que si ce code est trouvé. Mais dans le cas d'un module OBJ ou LIB, le virus ne supprime pas le code du chargeur, mais écrase l'en-tête C / Pascal avec l'instruction CALL (E8xxxx).
Étant lié dans le fichier exécutable que CALL apporte le contrôle à la boucle de décryptage polymorphique du virus. Cette boucle décrypte le code du virus et transmet le contrôle à la routine d'installation du virus.
Ainsi que dans les fichiers EXE (insertion) que CALL peut ne jamais recevoir le contrôle, et le virus peut dormir pendant une longue période. Mais dans certaines conditions, le virus peut sauter et infecter le système.
INT 25h Handler
Ce gestionnaire réalise une routine furtive au niveau INT 25h. Lors de l'accès aux entrées du répertoire, le virus substitue la longueur du fichier à celle du fichier original, tandis que le virus le restaure en lisant l'en-tête du fichier infecté et apporte le formulaire original.Le virus ne réalise pas 100% de furtivité sur le niveau INT 25h, bien sûr. Il y a des façons de contourner la routine furtive. Mais si un programme anti-virus lit le contenu du fichier par INT 21h fonctions DOS, puis lit la structure du répertoire, puis le contenu du fichier par des appels INT 25h absolus, le virus reste invisible.
Trigger Routine
SI lors du traitement des fichiers ZIP le virus trouve un enregistrement qui est emballé avec la méthode "stockée", il vérifie la date et l'horodatage du fichier ZIP. Si l'année de la dernière modification de ce fichier est 1996 ou plus, le virus recherche tous les fichiers de tous les répertoires de tous les disques de C: jusqu'à Z:, puis supprime les fichiers et l'arborescence entière des sous-répertoires.En savoir plus
Découvrez les statistiques de la propagation des vulnérabilités dans votre région statistics.securelist.com